001
014
015 package com.liferay.portlet.messageboards.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.StagedModelDataHandlerUtil;
022 import com.liferay.portal.kernel.lar.StagedModelType;
023 import com.liferay.portal.kernel.xml.Element;
024 import com.liferay.portal.util.PropsValues;
025 import com.liferay.portlet.messageboards.model.MBBan;
026 import com.liferay.portlet.messageboards.model.MBCategory;
027 import com.liferay.portlet.messageboards.model.MBCategoryConstants;
028 import com.liferay.portlet.messageboards.model.MBMessage;
029 import com.liferay.portlet.messageboards.model.MBThreadFlag;
030 import com.liferay.portlet.messageboards.service.MBBanLocalServiceUtil;
031 import com.liferay.portlet.messageboards.service.MBCategoryLocalServiceUtil;
032 import com.liferay.portlet.messageboards.service.MBStatsUserLocalServiceUtil;
033 import com.liferay.portlet.messageboards.service.MBThreadLocalServiceUtil;
034 import com.liferay.portlet.messageboards.service.permission.MBPermission;
035 import com.liferay.portlet.messageboards.service.persistence.MBBanExportActionableDynamicQuery;
036 import com.liferay.portlet.messageboards.service.persistence.MBCategoryExportActionableDynamicQuery;
037 import com.liferay.portlet.messageboards.service.persistence.MBMessageExportActionableDynamicQuery;
038 import com.liferay.portlet.messageboards.service.persistence.MBThreadFlagExportActionableDynamicQuery;
039
040 import java.util.List;
041
042 import javax.portlet.PortletPreferences;
043
044
049 public class MBPortletDataHandler extends BasePortletDataHandler {
050
051 public static final String NAMESPACE = "message_boards";
052
053 public MBPortletDataHandler() {
054 setDeletionSystemEventStagedModelTypes(
055 new StagedModelType(MBBan.class),
056 new StagedModelType(MBCategory.class),
057 new StagedModelType(MBMessage.class),
058 new StagedModelType(MBThreadFlag.class));
059 setExportControls(
060 new PortletDataHandlerBoolean(
061 NAMESPACE, "messages", true, false, null,
062 MBMessage.class.getName()),
063 new PortletDataHandlerBoolean(
064 NAMESPACE, "thread-flags", true, false, null,
065 MBThreadFlag.class.getName()),
066 new PortletDataHandlerBoolean(
067 NAMESPACE, "user-bans", true, false, null,
068 MBBan.class.getName()));
069 setImportControls(getExportControls());
070 setPublishToLiveByDefault(
071 PropsValues.MESSAGE_BOARDS_PUBLISH_TO_LIVE_BY_DEFAULT);
072 }
073
074 @Override
075 protected PortletPreferences doDeleteData(
076 PortletDataContext portletDataContext, String portletId,
077 PortletPreferences portletPreferences)
078 throws Exception {
079
080 if (portletDataContext.addPrimaryKey(
081 MBPortletDataHandler.class, "deleteData")) {
082
083 return portletPreferences;
084 }
085
086 MBBanLocalServiceUtil.deleteBansByGroupId(
087 portletDataContext.getScopeGroupId());
088
089 MBCategoryLocalServiceUtil.deleteCategories(
090 portletDataContext.getScopeGroupId());
091
092 MBStatsUserLocalServiceUtil.deleteStatsUsersByGroupId(
093 portletDataContext.getScopeGroupId());
094
095 MBThreadLocalServiceUtil.deleteThreads(
096 portletDataContext.getScopeGroupId(),
097 MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID);
098
099 return portletPreferences;
100 }
101
102 @Override
103 protected String doExportData(
104 final PortletDataContext portletDataContext, String portletId,
105 PortletPreferences portletPreferences)
106 throws Exception {
107
108 portletDataContext.addPortletPermissions(MBPermission.RESOURCE_NAME);
109
110 Element rootElement = addExportDataRootElement(portletDataContext);
111
112 rootElement.addAttribute(
113 "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
114
115 if (portletDataContext.getBooleanParameter(NAMESPACE, "messages")) {
116 ActionableDynamicQuery categoryActionableDynamicQuery =
117 new MBCategoryExportActionableDynamicQuery(portletDataContext);
118
119 categoryActionableDynamicQuery.performActions();
120
121 ActionableDynamicQuery messageActionableDynamicQuery =
122 new MBMessageExportActionableDynamicQuery(portletDataContext);
123
124 messageActionableDynamicQuery.performActions();
125 }
126
127 if (portletDataContext.getBooleanParameter(NAMESPACE, "thread-flags")) {
128 ActionableDynamicQuery threadFlagActionableDynamicQuery =
129 new MBThreadFlagExportActionableDynamicQuery(
130 portletDataContext);
131
132 threadFlagActionableDynamicQuery.performActions();
133 }
134
135 if (portletDataContext.getBooleanParameter(NAMESPACE, "user-bans")) {
136 ActionableDynamicQuery banActionableDynamicQuery =
137 new MBBanExportActionableDynamicQuery(portletDataContext);
138
139 banActionableDynamicQuery.performActions();
140 }
141
142 return getExportDataRootElementString(rootElement);
143 }
144
145 @Override
146 protected PortletPreferences doImportData(
147 PortletDataContext portletDataContext, String portletId,
148 PortletPreferences portletPreferences, String data)
149 throws Exception {
150
151 portletDataContext.importPortletPermissions(MBPermission.RESOURCE_NAME);
152
153 if (portletDataContext.getBooleanParameter(NAMESPACE, "messages")) {
154 Element categoriesElement =
155 portletDataContext.getImportDataGroupElement(MBCategory.class);
156
157 List<Element> categoryElements = categoriesElement.elements();
158
159 for (Element categoryElement : categoryElements) {
160 StagedModelDataHandlerUtil.importStagedModel(
161 portletDataContext, categoryElement);
162 }
163
164 Element messagesElement =
165 portletDataContext.getImportDataGroupElement(MBMessage.class);
166
167 List<Element> messageElements = messagesElement.elements();
168
169 for (Element messageElement : messageElements) {
170 StagedModelDataHandlerUtil.importStagedModel(
171 portletDataContext, messageElement);
172 }
173 }
174
175 if (portletDataContext.getBooleanParameter(NAMESPACE, "thread-flags")) {
176 Element threadFlagsElement =
177 portletDataContext.getImportDataGroupElement(
178 MBThreadFlag.class);
179
180 List<Element> threadFlagElements = threadFlagsElement.elements();
181
182 for (Element threadFlagElement : threadFlagElements) {
183 StagedModelDataHandlerUtil.importStagedModel(
184 portletDataContext, threadFlagElement);
185 }
186 }
187
188 if (portletDataContext.getBooleanParameter(NAMESPACE, "user-bans")) {
189 Element userBansElement =
190 portletDataContext.getImportDataGroupElement(MBBan.class);
191
192 List<Element> userBanElements = userBansElement.elements();
193
194 for (Element userBanElement : userBanElements) {
195 StagedModelDataHandlerUtil.importStagedModel(
196 portletDataContext, userBanElement);
197 }
198 }
199
200 return null;
201 }
202
203 @Override
204 protected void doPrepareManifestSummary(
205 PortletDataContext portletDataContext,
206 PortletPreferences portletPreferences)
207 throws Exception {
208
209 ActionableDynamicQuery banActionableDynamicQuery =
210 new MBBanExportActionableDynamicQuery(portletDataContext);
211
212 banActionableDynamicQuery.performCount();
213
214 ActionableDynamicQuery categoryActionableDynamicQuery =
215 new MBCategoryExportActionableDynamicQuery(portletDataContext);
216
217 categoryActionableDynamicQuery.performCount();
218
219 ActionableDynamicQuery messageActionableDynamicQuery =
220 new MBMessageExportActionableDynamicQuery(portletDataContext);
221
222 messageActionableDynamicQuery.performCount();
223
224 ActionableDynamicQuery threadFlagActionableDynamicQuery =
225 new MBThreadFlagExportActionableDynamicQuery(portletDataContext);
226
227 threadFlagActionableDynamicQuery.performCount();
228 }
229
230 }