001
014
015 package com.liferay.portlet.polls.lar;
016
017 import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
018 import com.liferay.portal.kernel.lar.BasePortletDataHandler;
019 import com.liferay.portal.kernel.lar.PortletDataContext;
020 import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
021 import com.liferay.portal.kernel.lar.PortletDataHandlerControl;
022 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
023 import com.liferay.portal.kernel.lar.StagedModelType;
024 import com.liferay.portal.kernel.xml.Element;
025 import com.liferay.portlet.polls.model.PollsChoice;
026 import com.liferay.portlet.polls.model.PollsQuestion;
027 import com.liferay.portlet.polls.model.PollsVote;
028 import com.liferay.portlet.polls.service.PollsQuestionLocalServiceUtil;
029 import com.liferay.portlet.polls.service.permission.PollsPermission;
030 import com.liferay.portlet.polls.service.persistence.PollsChoiceExportActionableDynamicQuery;
031 import com.liferay.portlet.polls.service.persistence.PollsQuestionExportActionableDynamicQuery;
032 import com.liferay.portlet.polls.service.persistence.PollsVoteExportActionableDynamicQuery;
033
034 import java.util.List;
035
036 import javax.portlet.PortletPreferences;
037
038
043 public class PollsPortletDataHandler extends BasePortletDataHandler {
044
045 public static final String NAMESPACE = "polls";
046
047 public PollsPortletDataHandler() {
048 setDataLocalized(true);
049 setDeletionSystemEventStagedModelTypes(
050 new StagedModelType(PollsQuestion.class));
051 setExportControls(
052 new PortletDataHandlerBoolean(
053 NAMESPACE, "questions", true, false,
054 new PortletDataHandlerControl[] {
055 new PortletDataHandlerBoolean(
056 NAMESPACE, "votes", true, false, null,
057 PollsVote.class.getName())
058 },
059 PollsQuestion.class.getName()));
060 setImportControls(getExportControls());
061 }
062
063 @Override
064 protected PortletPreferences doDeleteData(
065 PortletDataContext portletDataContext, String portletId,
066 PortletPreferences portletPreferences)
067 throws Exception {
068
069 if (portletDataContext.addPrimaryKey(
070 PollsPortletDataHandler.class, "deleteData")) {
071
072 return portletPreferences;
073 }
074
075 PollsQuestionLocalServiceUtil.deleteQuestions(
076 portletDataContext.getScopeGroupId());
077
078 return portletPreferences;
079 }
080
081 @Override
082 protected String doExportData(
083 final PortletDataContext portletDataContext, String portletId,
084 PortletPreferences portletPreferences)
085 throws Exception {
086
087 portletDataContext.addPortletPermissions(PollsPermission.RESOURCE_NAME);
088
089 Element rootElement = addExportDataRootElement(portletDataContext);
090
091 rootElement.addAttribute(
092 "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
093
094 if (portletDataContext.getBooleanParameter(
095 PollsPortletDataHandler.NAMESPACE, "questions")) {
096
097 ActionableDynamicQuery questionActionableDynamicQuery =
098 new PollsQuestionExportActionableDynamicQuery(
099 portletDataContext);
100
101 questionActionableDynamicQuery.performActions();
102
103 ActionableDynamicQuery choiceActionableDynamicQuery =
104 new PollsChoiceExportActionableDynamicQuery(portletDataContext);
105
106 choiceActionableDynamicQuery.performActions();
107
108 if (portletDataContext.getBooleanParameter(
109 PollsPortletDataHandler.NAMESPACE, "votes")) {
110
111 ActionableDynamicQuery voteActionableDynamicQuery =
112 new PollsVoteExportActionableDynamicQuery(
113 portletDataContext);
114
115 voteActionableDynamicQuery.performActions();
116 }
117 }
118
119 return getExportDataRootElementString(rootElement);
120 }
121
122 @Override
123 protected PortletPreferences doImportData(
124 PortletDataContext portletDataContext, String portletId,
125 PortletPreferences portletPreferences, String data)
126 throws Exception {
127
128 portletDataContext.importPortletPermissions(
129 PollsPermission.RESOURCE_NAME);
130
131 Element questionsElement = portletDataContext.getImportDataGroupElement(
132 PollsQuestion.class);
133
134 if (portletDataContext.getBooleanParameter(
135 PollsPortletDataHandler.NAMESPACE, "questions")) {
136
137 List<Element> questionElements = questionsElement.elements();
138
139 for (Element questionElement : questionElements) {
140 StagedModelDataHandlerUtil.importStagedModel(
141 portletDataContext, questionElement);
142 }
143
144 Element choicesElement =
145 portletDataContext.getImportDataGroupElement(PollsChoice.class);
146
147 List<Element> choiceElements = choicesElement.elements();
148
149 for (Element choiceElement : choiceElements) {
150 StagedModelDataHandlerUtil.importStagedModel(
151 portletDataContext, choiceElement);
152 }
153 }
154
155 if (portletDataContext.getBooleanParameter(NAMESPACE, "votes")) {
156 Element votesElement = portletDataContext.getImportDataGroupElement(
157 PollsVote.class);
158
159 List<Element> voteElements = votesElement.elements();
160
161 for (Element voteElement : voteElements) {
162 StagedModelDataHandlerUtil.importStagedModel(
163 portletDataContext, voteElement);
164 }
165 }
166
167 return null;
168 }
169
170 @Override
171 protected void doPrepareManifestSummary(
172 PortletDataContext portletDataContext,
173 PortletPreferences portletPreferences)
174 throws Exception {
175
176 ActionableDynamicQuery choiceActionableDynamicQuery =
177 new PollsChoiceExportActionableDynamicQuery(portletDataContext);
178
179 choiceActionableDynamicQuery.performCount();
180
181 ActionableDynamicQuery questionActionableDynamicQuery =
182 new PollsQuestionExportActionableDynamicQuery(portletDataContext);
183
184 questionActionableDynamicQuery.performCount();
185
186 ActionableDynamicQuery voteActionableDynamicQuery =
187 new PollsVoteExportActionableDynamicQuery(portletDataContext);
188
189 voteActionableDynamicQuery.performCount();
190 }
191
192 }