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