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.dao.orm.DynamicQuery;
019 import com.liferay.portal.kernel.exception.PortalException;
020 import com.liferay.portal.kernel.lar.BasePortletDataHandler;
021 import com.liferay.portal.kernel.lar.PortletDataContext;
022 import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
023 import com.liferay.portal.kernel.lar.PortletDataHandlerControl;
024 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
025 import com.liferay.portal.kernel.xml.Element;
026 import com.liferay.portal.util.PropsValues;
027 import com.liferay.portlet.messageboards.model.MBBan;
028 import com.liferay.portlet.messageboards.model.MBCategory;
029 import com.liferay.portlet.messageboards.model.MBCategoryConstants;
030 import com.liferay.portlet.messageboards.model.MBMessage;
031 import com.liferay.portlet.messageboards.model.MBThreadFlag;
032 import com.liferay.portlet.messageboards.service.MBBanLocalServiceUtil;
033 import com.liferay.portlet.messageboards.service.MBCategoryLocalServiceUtil;
034 import com.liferay.portlet.messageboards.service.MBStatsUserLocalServiceUtil;
035 import com.liferay.portlet.messageboards.service.MBThreadLocalServiceUtil;
036 import com.liferay.portlet.messageboards.service.persistence.MBBanActionableDynamicQuery;
037 import com.liferay.portlet.messageboards.service.persistence.MBCategoryActionableDynamicQuery;
038 import com.liferay.portlet.messageboards.service.persistence.MBMessageActionableDynamicQuery;
039 import com.liferay.portlet.messageboards.service.persistence.MBThreadFlagActionableDynamicQuery;
040
041 import java.util.List;
042
043 import javax.portlet.PortletPreferences;
044
045
050 public class MBPortletDataHandler extends BasePortletDataHandler {
051
052 public static final String NAMESPACE = "message_boards";
053
054 public MBPortletDataHandler() {
055 setAlwaysExportable(true);
056 setExportControls(
057 new PortletDataHandlerBoolean(
058 NAMESPACE, "categories-and-messages", true, true),
059 new PortletDataHandlerBoolean(NAMESPACE, "thread-flags"),
060 new PortletDataHandlerBoolean(NAMESPACE, "user-bans"));
061 setExportMetadataControls(
062 new PortletDataHandlerBoolean(
063 NAMESPACE, "message-board-messages", true,
064 new PortletDataHandlerControl[] {
065 new PortletDataHandlerBoolean(NAMESPACE, "attachments"),
066 new PortletDataHandlerBoolean(NAMESPACE, "ratings"),
067 new PortletDataHandlerBoolean(NAMESPACE, "tags")
068 }));
069 setPublishToLiveByDefault(
070 PropsValues.MESSAGE_BOARDS_PUBLISH_TO_LIVE_BY_DEFAULT);
071 }
072
073 @Override
074 protected PortletPreferences doDeleteData(
075 PortletDataContext portletDataContext, String portletId,
076 PortletPreferences portletPreferences)
077 throws Exception {
078
079 if (portletDataContext.addPrimaryKey(
080 MBPortletDataHandler.class, "deleteData")) {
081
082 return portletPreferences;
083 }
084
085 MBBanLocalServiceUtil.deleteBansByGroupId(
086 portletDataContext.getScopeGroupId());
087
088 MBCategoryLocalServiceUtil.deleteCategories(
089 portletDataContext.getScopeGroupId());
090
091 MBStatsUserLocalServiceUtil.deleteStatsUsersByGroupId(
092 portletDataContext.getScopeGroupId());
093
094 MBThreadLocalServiceUtil.deleteThreads(
095 portletDataContext.getScopeGroupId(),
096 MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID);
097
098 return portletPreferences;
099 }
100
101 @Override
102 protected String doExportData(
103 final PortletDataContext portletDataContext, String portletId,
104 PortletPreferences portletPreferences)
105 throws Exception {
106
107 portletDataContext.addPermissions(
108 "com.liferay.portlet.messageboards",
109 portletDataContext.getScopeGroupId());
110
111 Element rootElement = addExportDataRootElement(portletDataContext);
112
113 rootElement.addAttribute(
114 "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
115
116 ActionableDynamicQuery categoriesActionableDynamicQuery =
117 new MBCategoryActionableDynamicQuery() {
118
119 @Override
120 protected void addCriteria(DynamicQuery dynamicQuery) {
121 portletDataContext.addDateRangeCriteria(
122 dynamicQuery, "modifiedDate");
123 }
124
125 @Override
126 protected void performAction(Object object) throws PortalException {
127 MBCategory category = (MBCategory)object;
128
129 StagedModelDataHandlerUtil.exportStagedModel(
130 portletDataContext, category);
131 }
132
133 };
134
135 categoriesActionableDynamicQuery.setGroupId(
136 portletDataContext.getScopeGroupId());
137
138 categoriesActionableDynamicQuery.performActions();
139
140 ActionableDynamicQuery messagesActionableDynamicQuery =
141 new MBMessageActionableDynamicQuery() {
142
143 @Override
144 protected void addCriteria(DynamicQuery dynamicQuery) {
145 portletDataContext.addDateRangeCriteria(
146 dynamicQuery, "modifiedDate");
147 }
148
149 @Override
150 protected void performAction(Object object) throws PortalException {
151 MBMessage message = (MBMessage)object;
152
153 StagedModelDataHandlerUtil.exportStagedModel(
154 portletDataContext, message);
155 }
156
157 };
158
159 messagesActionableDynamicQuery.setGroupId(
160 portletDataContext.getScopeGroupId());
161
162 messagesActionableDynamicQuery.performActions();
163
164 if (portletDataContext.getBooleanParameter(
165 MBPortletDataHandler.NAMESPACE, "thread-flags")) {
166
167 ActionableDynamicQuery threadFlagsActionableDynamicQuery =
168 new MBThreadFlagActionableDynamicQuery() {
169
170 @Override
171 protected void addCriteria(DynamicQuery dynamicQuery) {
172 portletDataContext.addDateRangeCriteria(
173 dynamicQuery, "modifiedDate");
174 }
175
176 @Override
177 protected void performAction(Object object)
178 throws PortalException {
179
180 MBThreadFlag message = (MBThreadFlag)object;
181
182 StagedModelDataHandlerUtil.exportStagedModel(
183 portletDataContext, message);
184 }
185
186 };
187
188 threadFlagsActionableDynamicQuery.setGroupId(
189 portletDataContext.getScopeGroupId());
190
191 threadFlagsActionableDynamicQuery.performActions();
192 }
193
194 if (!portletDataContext.getBooleanParameter(NAMESPACE, "user-bans")) {
195 return getExportDataRootElementString(rootElement);
196 }
197
198 ActionableDynamicQuery userBansActionableDynamicQuery =
199 new MBBanActionableDynamicQuery() {
200
201 @Override
202 protected void addCriteria(DynamicQuery dynamicQuery) {
203 portletDataContext.addDateRangeCriteria(
204 dynamicQuery, "modifiedDate");
205 }
206
207 @Override
208 protected void performAction(Object object) throws PortalException {
209 MBBan userBan = (MBBan)object;
210
211 StagedModelDataHandlerUtil.exportStagedModel(
212 portletDataContext, userBan);
213 }
214
215 };
216
217 userBansActionableDynamicQuery.setGroupId(
218 portletDataContext.getScopeGroupId());
219
220 userBansActionableDynamicQuery.performActions();
221
222 return getExportDataRootElementString(rootElement);
223 }
224
225 @Override
226 protected PortletPreferences doImportData(
227 PortletDataContext portletDataContext, String portletId,
228 PortletPreferences portletPreferences, String data)
229 throws Exception {
230
231 portletDataContext.importPermissions(
232 "com.liferay.portlet.messageboards",
233 portletDataContext.getSourceGroupId(),
234 portletDataContext.getScopeGroupId());
235
236 Element categoriesElement =
237 portletDataContext.getImportDataGroupElement(MBCategory.class);
238
239 List<Element> categoryElements = categoriesElement.elements();
240
241 for (Element categoryElement : categoryElements) {
242 StagedModelDataHandlerUtil.importStagedModel(
243 portletDataContext, categoryElement);
244 }
245
246 Element messagesElement = portletDataContext.getImportDataGroupElement(
247 MBMessage.class);
248
249 List<Element> messageElements = messagesElement.elements();
250
251 for (Element messageElement : messageElements) {
252 StagedModelDataHandlerUtil.importStagedModel(
253 portletDataContext, messageElement);
254 }
255
256 if (portletDataContext.getBooleanParameter(NAMESPACE, "thread-flags")) {
257 Element threadFlagsElement =
258 portletDataContext.getImportDataGroupElement(
259 MBThreadFlag.class);
260
261 List<Element> threadFlagElements = threadFlagsElement.elements();
262
263 for (Element threadFlagElement : threadFlagElements) {
264 StagedModelDataHandlerUtil.importStagedModel(
265 portletDataContext, threadFlagElement);
266 }
267 }
268
269 if (portletDataContext.getBooleanParameter(NAMESPACE, "user-bans")) {
270 Element userBansElement =
271 portletDataContext.getImportDataGroupElement(MBBan.class);
272
273 List<Element> userBanElements = userBansElement.elements();
274
275 for (Element userBanElement : userBanElements) {
276 StagedModelDataHandlerUtil.importStagedModel(
277 portletDataContext, userBanElement);
278 }
279 }
280
281 return null;
282 }
283
284 }