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