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.addPermissions(
093 MDRPermission.RESOURCE_NAME, portletDataContext.getScopeGroupId());
094
095 Element rootElement = addExportDataRootElement(portletDataContext);
096
097 if (portletDataContext.getBooleanParameter(NAMESPACE, "rules")) {
098 ActionableDynamicQuery rulesActionableDynamicQuery =
099 new MDRRuleExportActionableDynamicQuery(portletDataContext);
100
101 rulesActionableDynamicQuery.performActions();
102 }
103
104 if (portletDataContext.getBooleanParameter(NAMESPACE, "actions")) {
105 ActionableDynamicQuery actionsActionableDynamicQuery =
106 new MDRActionExportActionableDynamicQuery(portletDataContext) {
107
108 @Override
109 protected StagedModelType getStagedModelType() {
110 return new StagedModelType(
111 PortalUtil.getClassNameId(MDRAction.class),
112 StagedModelType.REFERRER_CLASS_NAME_ID_ALL);
113 }
114
115 };
116
117 actionsActionableDynamicQuery.performActions();
118 }
119
120 return getExportDataRootElementString(rootElement);
121 }
122
123 @Override
124 protected PortletPreferences doImportData(
125 PortletDataContext portletDataContext, String portletId,
126 PortletPreferences portletPreferences, String data)
127 throws Exception {
128
129 portletDataContext.importPermissions(
130 MDRPermission.RESOURCE_NAME, portletDataContext.getSourceGroupId(),
131 portletDataContext.getScopeGroupId());
132
133 if (portletDataContext.getBooleanParameter(NAMESPACE, "rules")) {
134 Element rulesElement = portletDataContext.getImportDataGroupElement(
135 MDRRule.class);
136
137 List<Element> ruleElements = rulesElement.elements();
138
139 for (Element ruleElement : ruleElements) {
140 StagedModelDataHandlerUtil.importStagedModel(
141 portletDataContext, ruleElement);
142 }
143 }
144
145 if (portletDataContext.getBooleanParameter(NAMESPACE, "actions")) {
146 Element actionsElement =
147 portletDataContext.getImportDataGroupElement(MDRAction.class);
148
149 List<Element> actionElements = actionsElement.elements();
150
151 for (Element actionElement : actionElements) {
152 StagedModelDataHandlerUtil.importStagedModel(
153 portletDataContext, actionElement);
154 }
155 }
156
157 return null;
158 }
159
160 @Override
161 protected void doPrepareManifestSummary(
162 PortletDataContext portletDataContext,
163 PortletPreferences portletPreferences)
164 throws Exception {
165
166 ActionableDynamicQuery actionsActionableDynamicQuery =
167 new MDRActionExportActionableDynamicQuery(portletDataContext) {
168
169 @Override
170 protected StagedModelType getStagedModelType() {
171 return new StagedModelType(
172 MDRAction.class.getName(), Layout.class.getName());
173 }
174
175 };
176
177 actionsActionableDynamicQuery.performCount();
178
179 ActionableDynamicQuery rulesActionableDynamicQuery =
180 new MDRRuleExportActionableDynamicQuery(portletDataContext);
181
182 rulesActionableDynamicQuery.performCount();
183
184 ActionableDynamicQuery ruleGroupsActionableDynamicQuery =
185 new MDRRuleGroupExportActionableDynamicQuery(portletDataContext);
186
187 ruleGroupsActionableDynamicQuery.performCount();
188
189 ActionableDynamicQuery ruleGroupInstancesActionableDynamicQuery =
190 new MDRRuleGroupInstanceExportActionableDynamicQuery(
191 portletDataContext) {
192
193 @Override
194 protected StagedModelType getStagedModelType() {
195 return new StagedModelType(
196 MDRRuleGroupInstance.class.getName(),
197 Layout.class.getName());
198 }
199 };
200
201 ruleGroupInstancesActionableDynamicQuery.performCount();
202 }
203
204 }