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.addPermissions(
109 MBPermission.RESOURCE_NAME, portletDataContext.getScopeGroupId());
110
111 Element rootElement = addExportDataRootElement(portletDataContext);
112
113 rootElement.addAttribute(
114 "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
115
116 if (portletDataContext.getBooleanParameter(NAMESPACE, "messages")) {
117 ActionableDynamicQuery categoryActionableDynamicQuery =
118 new MBCategoryExportActionableDynamicQuery(portletDataContext);
119
120 categoryActionableDynamicQuery.performActions();
121
122 ActionableDynamicQuery messageActionableDynamicQuery =
123 new MBMessageExportActionableDynamicQuery(portletDataContext);
124
125 messageActionableDynamicQuery.performActions();
126 }
127
128 if (portletDataContext.getBooleanParameter(NAMESPACE, "thread-flags")) {
129 ActionableDynamicQuery threadFlagActionableDynamicQuery =
130 new MBThreadFlagExportActionableDynamicQuery(
131 portletDataContext);
132
133 threadFlagActionableDynamicQuery.performActions();
134 }
135
136 if (portletDataContext.getBooleanParameter(NAMESPACE, "user-bans")) {
137 ActionableDynamicQuery banActionableDynamicQuery =
138 new MBBanExportActionableDynamicQuery(portletDataContext);
139
140 banActionableDynamicQuery.performActions();
141 }
142
143 return getExportDataRootElementString(rootElement);
144 }
145
146 @Override
147 protected PortletPreferences doImportData(
148 PortletDataContext portletDataContext, String portletId,
149 PortletPreferences portletPreferences, String data)
150 throws Exception {
151
152 portletDataContext.importPermissions(
153 MBPermission.RESOURCE_NAME, portletDataContext.getSourceGroupId(),
154 portletDataContext.getScopeGroupId());
155
156 if (portletDataContext.getBooleanParameter(NAMESPACE, "messages")) {
157 Element categoriesElement =
158 portletDataContext.getImportDataGroupElement(MBCategory.class);
159
160 List<Element> categoryElements = categoriesElement.elements();
161
162 for (Element categoryElement : categoryElements) {
163 StagedModelDataHandlerUtil.importStagedModel(
164 portletDataContext, categoryElement);
165 }
166
167 Element messagesElement =
168 portletDataContext.getImportDataGroupElement(MBMessage.class);
169
170 List<Element> messageElements = messagesElement.elements();
171
172 for (Element messageElement : messageElements) {
173 StagedModelDataHandlerUtil.importStagedModel(
174 portletDataContext, messageElement);
175 }
176 }
177
178 if (portletDataContext.getBooleanParameter(NAMESPACE, "thread-flags")) {
179 Element threadFlagsElement =
180 portletDataContext.getImportDataGroupElement(
181 MBThreadFlag.class);
182
183 List<Element> threadFlagElements = threadFlagsElement.elements();
184
185 for (Element threadFlagElement : threadFlagElements) {
186 StagedModelDataHandlerUtil.importStagedModel(
187 portletDataContext, threadFlagElement);
188 }
189 }
190
191 if (portletDataContext.getBooleanParameter(NAMESPACE, "user-bans")) {
192 Element userBansElement =
193 portletDataContext.getImportDataGroupElement(MBBan.class);
194
195 List<Element> userBanElements = userBansElement.elements();
196
197 for (Element userBanElement : userBanElements) {
198 StagedModelDataHandlerUtil.importStagedModel(
199 portletDataContext, userBanElement);
200 }
201 }
202
203 return null;
204 }
205
206 @Override
207 protected void doPrepareManifestSummary(
208 PortletDataContext portletDataContext,
209 PortletPreferences portletPreferences)
210 throws Exception {
211
212 ActionableDynamicQuery banActionableDynamicQuery =
213 new MBBanExportActionableDynamicQuery(portletDataContext);
214
215 banActionableDynamicQuery.performCount();
216
217 ActionableDynamicQuery categoryActionableDynamicQuery =
218 new MBCategoryExportActionableDynamicQuery(portletDataContext);
219
220 categoryActionableDynamicQuery.performCount();
221
222 ActionableDynamicQuery messageActionableDynamicQuery =
223 new MBMessageExportActionableDynamicQuery(portletDataContext);
224
225 messageActionableDynamicQuery.performCount();
226
227 ActionableDynamicQuery threadFlagActionableDynamicQuery =
228 new MBThreadFlagExportActionableDynamicQuery(portletDataContext);
229
230 threadFlagActionableDynamicQuery.performCount();
231 }
232
233 }