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.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.portlet.mobiledevicerules.model.MDRAction;
027 import com.liferay.portlet.mobiledevicerules.model.MDRRule;
028 import com.liferay.portlet.mobiledevicerules.service.MDRRuleGroupLocalServiceUtil;
029 import com.liferay.portlet.mobiledevicerules.service.persistence.MDRActionActionableDynamicQuery;
030 import com.liferay.portlet.mobiledevicerules.service.persistence.MDRRuleActionableDynamicQuery;
031
032 import java.util.List;
033
034 import javax.portlet.PortletPreferences;
035
036
041 public class MDRPortletDataHandler extends BasePortletDataHandler {
042
043 public static final String NAMESPACE = "mobile_device_rules";
044
045 public MDRPortletDataHandler() {
046 setAlwaysExportable(true);
047 setAlwaysStaged(true);
048 setExportControls(
049 new PortletDataHandlerBoolean(NAMESPACE, "rules", true, true),
050 new PortletDataHandlerBoolean(NAMESPACE, "actions", true, true));
051 setImportControls(new PortletDataHandlerControl[0]);
052 setPublishToLiveByDefault(true);
053 }
054
055 @Override
056 protected PortletPreferences doDeleteData(
057 PortletDataContext portletDataContext, String portletId,
058 PortletPreferences portletPreferences)
059 throws Exception {
060
061 if (portletDataContext.addPrimaryKey(
062 MDRPortletDataHandler.class, "deleteData")) {
063
064 return portletPreferences;
065 }
066
067 MDRRuleGroupLocalServiceUtil.deleteRuleGroups(
068 portletDataContext.getGroupId());
069
070 return portletPreferences;
071 }
072
073 @Override
074 protected String doExportData(
075 final PortletDataContext portletDataContext, String portletId,
076 PortletPreferences portletPreferences)
077 throws Exception {
078
079 portletDataContext.addPermissions(
080 "com.liferay.portlet.mobiledevicerules",
081 portletDataContext.getScopeGroupId());
082
083 Element rootElement = addExportDataRootElement(portletDataContext);
084
085 ActionableDynamicQuery rulesActionableDynamicQuery =
086 new MDRRuleActionableDynamicQuery() {
087
088 @Override
089 protected void addCriteria(DynamicQuery dynamicQuery) {
090 portletDataContext.addDateRangeCriteria(
091 dynamicQuery, "modifiedDate");
092 }
093
094 @Override
095 protected void performAction(Object object) throws PortalException {
096 MDRRule rule = (MDRRule)object;
097
098 StagedModelDataHandlerUtil.exportStagedModel(
099 portletDataContext, rule);
100 }
101
102 };
103
104 rulesActionableDynamicQuery.setGroupId(
105 portletDataContext.getScopeGroupId());
106
107 rulesActionableDynamicQuery.performActions();
108
109 ActionableDynamicQuery actionsActionableDynamicQuery =
110 new MDRActionActionableDynamicQuery() {
111
112 @Override
113 protected void addCriteria(DynamicQuery dynamicQuery) {
114 portletDataContext.addDateRangeCriteria(
115 dynamicQuery, "modifiedDate");
116 }
117
118 @Override
119 protected void performAction(Object object) throws PortalException {
120 MDRAction action = (MDRAction)object;
121
122 StagedModelDataHandlerUtil.exportStagedModel(
123 portletDataContext, action);
124 }
125
126 };
127
128 actionsActionableDynamicQuery.setGroupId(
129 portletDataContext.getScopeGroupId());
130
131 actionsActionableDynamicQuery.performActions();
132
133 return getExportDataRootElementString(rootElement);
134 }
135
136 @Override
137 protected PortletPreferences doImportData(
138 PortletDataContext portletDataContext, String portletId,
139 PortletPreferences portletPreferences, String data)
140 throws Exception {
141
142 portletDataContext.importPermissions(
143 "com.liferay.portlet.mobiledevicerules",
144 portletDataContext.getSourceGroupId(),
145 portletDataContext.getScopeGroupId());
146
147 Element rulesElement = portletDataContext.getImportDataGroupElement(
148 MDRRule.class);
149
150 List<Element> ruleElements = rulesElement.elements();
151
152 for (Element ruleElement : ruleElements) {
153 StagedModelDataHandlerUtil.importStagedModel(
154 portletDataContext, ruleElement);
155 }
156
157 Element actionsElement = portletDataContext.getImportDataGroupElement(
158 MDRAction.class);
159
160 List<Element> actionElements = actionsElement.elements();
161
162 for (Element actionElement : actionElements) {
163 StagedModelDataHandlerUtil.importStagedModel(
164 portletDataContext, actionElement);
165 }
166
167 return null;
168 }
169
170 }