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.addPermissions(
088 PollsPermission.RESOURCE_NAME,
089 portletDataContext.getScopeGroupId());
090
091 Element rootElement = addExportDataRootElement(portletDataContext);
092
093 rootElement.addAttribute(
094 "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
095
096 if (portletDataContext.getBooleanParameter(
097 PollsPortletDataHandler.NAMESPACE, "questions")) {
098
099 ActionableDynamicQuery questionActionableDynamicQuery =
100 new PollsQuestionExportActionableDynamicQuery(
101 portletDataContext);
102
103 questionActionableDynamicQuery.performActions();
104
105 ActionableDynamicQuery choiceActionableDynamicQuery =
106 new PollsChoiceExportActionableDynamicQuery(portletDataContext);
107
108 choiceActionableDynamicQuery.performActions();
109
110 if (portletDataContext.getBooleanParameter(
111 PollsPortletDataHandler.NAMESPACE, "votes")) {
112
113 ActionableDynamicQuery voteActionableDynamicQuery =
114 new PollsVoteExportActionableDynamicQuery(
115 portletDataContext);
116
117 voteActionableDynamicQuery.performActions();
118 }
119 }
120
121 return getExportDataRootElementString(rootElement);
122 }
123
124 @Override
125 protected PortletPreferences doImportData(
126 PortletDataContext portletDataContext, String portletId,
127 PortletPreferences portletPreferences, String data)
128 throws Exception {
129
130 portletDataContext.importPermissions(
131 PollsPermission.RESOURCE_NAME,
132 portletDataContext.getSourceGroupId(),
133 portletDataContext.getScopeGroupId());
134
135 Element questionsElement = portletDataContext.getImportDataGroupElement(
136 PollsQuestion.class);
137
138 if (portletDataContext.getBooleanParameter(
139 PollsPortletDataHandler.NAMESPACE, "questions")) {
140
141 List<Element> questionElements = questionsElement.elements();
142
143 for (Element questionElement : questionElements) {
144 StagedModelDataHandlerUtil.importStagedModel(
145 portletDataContext, questionElement);
146 }
147
148 Element choicesElement =
149 portletDataContext.getImportDataGroupElement(PollsChoice.class);
150
151 List<Element> choiceElements = choicesElement.elements();
152
153 for (Element choiceElement : choiceElements) {
154 StagedModelDataHandlerUtil.importStagedModel(
155 portletDataContext, choiceElement);
156 }
157 }
158
159 if (portletDataContext.getBooleanParameter(NAMESPACE, "votes")) {
160 Element votesElement = portletDataContext.getImportDataGroupElement(
161 PollsVote.class);
162
163 List<Element> voteElements = votesElement.elements();
164
165 for (Element voteElement : voteElements) {
166 StagedModelDataHandlerUtil.importStagedModel(
167 portletDataContext, voteElement);
168 }
169 }
170
171 return null;
172 }
173
174 @Override
175 protected void doPrepareManifestSummary(
176 PortletDataContext portletDataContext,
177 PortletPreferences portletPreferences)
178 throws Exception {
179
180 ActionableDynamicQuery choiceActionableDynamicQuery =
181 new PollsChoiceExportActionableDynamicQuery(portletDataContext);
182
183 choiceActionableDynamicQuery.performCount();
184
185 ActionableDynamicQuery questionActionableDynamicQuery =
186 new PollsQuestionExportActionableDynamicQuery(portletDataContext);
187
188 questionActionableDynamicQuery.performCount();
189
190 ActionableDynamicQuery voteActionableDynamicQuery =
191 new PollsVoteExportActionableDynamicQuery(portletDataContext);
192
193 voteActionableDynamicQuery.performCount();
194 }
195
196 }