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