001
014
015 package com.liferay.portlet.mobiledevicerules.lar;
016
017 import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
018 import com.liferay.portal.kernel.dao.orm.ExportActionableDynamicQuery;
019 import com.liferay.portal.kernel.xml.Element;
020 import com.liferay.portal.model.Layout;
021 import com.liferay.portal.util.PortalUtil;
022 import com.liferay.portal.util.PropsValues;
023 import com.liferay.portlet.exportimport.lar.BasePortletDataHandler;
024 import com.liferay.portlet.exportimport.lar.PortletDataContext;
025 import com.liferay.portlet.exportimport.lar.PortletDataHandlerBoolean;
026 import com.liferay.portlet.exportimport.lar.StagedModelDataHandlerUtil;
027 import com.liferay.portlet.exportimport.lar.StagedModelType;
028 import com.liferay.portlet.exportimport.xstream.XStreamAliasRegistryUtil;
029 import com.liferay.portlet.mobiledevicerules.model.MDRAction;
030 import com.liferay.portlet.mobiledevicerules.model.MDRRule;
031 import com.liferay.portlet.mobiledevicerules.model.MDRRuleGroup;
032 import com.liferay.portlet.mobiledevicerules.model.MDRRuleGroupInstance;
033 import com.liferay.portlet.mobiledevicerules.model.impl.MDRActionImpl;
034 import com.liferay.portlet.mobiledevicerules.model.impl.MDRRuleGroupImpl;
035 import com.liferay.portlet.mobiledevicerules.model.impl.MDRRuleGroupInstanceImpl;
036 import com.liferay.portlet.mobiledevicerules.model.impl.MDRRuleImpl;
037 import com.liferay.portlet.mobiledevicerules.service.MDRActionLocalServiceUtil;
038 import com.liferay.portlet.mobiledevicerules.service.MDRRuleGroupInstanceLocalServiceUtil;
039 import com.liferay.portlet.mobiledevicerules.service.MDRRuleGroupLocalServiceUtil;
040 import com.liferay.portlet.mobiledevicerules.service.MDRRuleLocalServiceUtil;
041 import com.liferay.portlet.mobiledevicerules.service.permission.MDRPermission;
042
043 import java.util.List;
044
045 import javax.portlet.PortletPreferences;
046
047
052 public class MDRPortletDataHandler extends BasePortletDataHandler {
053
054 public static final String NAMESPACE = "mobile_device_rules";
055
056 public MDRPortletDataHandler() {
057 setDeletionSystemEventStagedModelTypes(
058 new StagedModelType(MDRAction.class, Layout.class),
059 new StagedModelType(MDRRule.class),
060 new StagedModelType(MDRRuleGroup.class),
061 new StagedModelType(MDRRuleGroupInstance.class, Layout.class));
062 setExportControls(
063 new PortletDataHandlerBoolean(
064 NAMESPACE, "rules", true, false, null, MDRRule.class.getName()),
065 new PortletDataHandlerBoolean(
066 NAMESPACE, "actions", true, false, null,
067 MDRAction.class.getName(), Layout.class.getName()));
068 setImportControls(getExportControls());
069 setPublishToLiveByDefault(
070 PropsValues.MOBILE_DEVICE_RULES_PUBLISH_TO_LIVE_BY_DEFAULT);
071
072 XStreamAliasRegistryUtil.register(MDRActionImpl.class, "MDRAction");
073 XStreamAliasRegistryUtil.register(MDRRuleImpl.class, "MDRRule");
074 XStreamAliasRegistryUtil.register(
075 MDRRuleGroupImpl.class, "MDRRuleGroup");
076 XStreamAliasRegistryUtil.register(
077 MDRRuleGroupInstanceImpl.class, "MDRRuleGroupInstance");
078 }
079
080 @Override
081 protected PortletPreferences doDeleteData(
082 PortletDataContext portletDataContext, String portletId,
083 PortletPreferences portletPreferences)
084 throws Exception {
085
086 if (portletDataContext.addPrimaryKey(
087 MDRPortletDataHandler.class, "deleteData")) {
088
089 return portletPreferences;
090 }
091
092 MDRRuleGroupLocalServiceUtil.deleteRuleGroups(
093 portletDataContext.getGroupId());
094
095 return portletPreferences;
096 }
097
098 @Override
099 protected String doExportData(
100 final PortletDataContext portletDataContext, String portletId,
101 PortletPreferences portletPreferences)
102 throws Exception {
103
104 portletDataContext.addPortletPermissions(MDRPermission.RESOURCE_NAME);
105
106 Element rootElement = addExportDataRootElement(portletDataContext);
107
108 if (portletDataContext.getBooleanParameter(NAMESPACE, "rules")) {
109 ActionableDynamicQuery rulesActionableDynamicQuery =
110 MDRRuleLocalServiceUtil.getExportActionableDynamicQuery(
111 portletDataContext);
112
113 rulesActionableDynamicQuery.performActions();
114 }
115
116 if (portletDataContext.getBooleanParameter(NAMESPACE, "actions")) {
117 ExportActionableDynamicQuery actionsExportActionableDynamicQuery =
118 MDRActionLocalServiceUtil.getExportActionableDynamicQuery(
119 portletDataContext);
120
121 actionsExportActionableDynamicQuery.setStagedModelType(
122 new StagedModelType(
123 PortalUtil.getClassNameId(MDRAction.class),
124 StagedModelType.REFERRER_CLASS_NAME_ID_ALL));
125
126 actionsExportActionableDynamicQuery.performActions();
127 }
128
129 return getExportDataRootElementString(rootElement);
130 }
131
132 @Override
133 protected PortletPreferences doImportData(
134 PortletDataContext portletDataContext, String portletId,
135 PortletPreferences portletPreferences, String data)
136 throws Exception {
137
138 portletDataContext.importPortletPermissions(
139 MDRPermission.RESOURCE_NAME);
140
141 if (portletDataContext.getBooleanParameter(NAMESPACE, "rules")) {
142 Element rulesElement = portletDataContext.getImportDataGroupElement(
143 MDRRule.class);
144
145 List<Element> ruleElements = rulesElement.elements();
146
147 for (Element ruleElement : ruleElements) {
148 StagedModelDataHandlerUtil.importStagedModel(
149 portletDataContext, ruleElement);
150 }
151 }
152
153 if (portletDataContext.getBooleanParameter(NAMESPACE, "actions")) {
154 Element actionsElement =
155 portletDataContext.getImportDataGroupElement(MDRAction.class);
156
157 List<Element> actionElements = actionsElement.elements();
158
159 for (Element actionElement : actionElements) {
160 StagedModelDataHandlerUtil.importStagedModel(
161 portletDataContext, actionElement);
162 }
163 }
164
165 return null;
166 }
167
168 @Override
169 protected void doPrepareManifestSummary(
170 PortletDataContext portletDataContext,
171 PortletPreferences portletPreferences)
172 throws Exception {
173
174 ExportActionableDynamicQuery actionsExportActionableDynamicQuery =
175 MDRActionLocalServiceUtil.getExportActionableDynamicQuery(
176 portletDataContext);
177
178 actionsExportActionableDynamicQuery.setStagedModelType(
179 new StagedModelType(
180 MDRAction.class.getName(), Layout.class.getName()));
181
182 actionsExportActionableDynamicQuery.performCount();
183
184 ActionableDynamicQuery rulesActionableDynamicQuery =
185 MDRRuleLocalServiceUtil.getExportActionableDynamicQuery(
186 portletDataContext);
187
188 rulesActionableDynamicQuery.performCount();
189
190 ActionableDynamicQuery ruleGroupsActionableDynamicQuery =
191 MDRRuleGroupLocalServiceUtil.getExportActionableDynamicQuery(
192 portletDataContext);
193
194 ruleGroupsActionableDynamicQuery.performCount();
195
196 ExportActionableDynamicQuery
197 ruleGroupInstancesExportActionableDynamicQuery =
198 MDRRuleGroupInstanceLocalServiceUtil.
199 getExportActionableDynamicQuery(portletDataContext);
200
201 ruleGroupInstancesExportActionableDynamicQuery.setStagedModelType(
202 new StagedModelType(
203 MDRRuleGroupInstance.class.getName(), Layout.class.getName()));
204
205 ruleGroupInstancesExportActionableDynamicQuery.performCount();
206 }
207
208 }