001
014
015 package com.liferay.portlet.dynamicdatalists.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.dao.orm.Property;
020 import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
021 import com.liferay.portal.kernel.exception.PortalException;
022 import com.liferay.portal.kernel.exception.SystemException;
023 import com.liferay.portal.kernel.lar.BasePortletDataHandler;
024 import com.liferay.portal.kernel.lar.PortletDataContext;
025 import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
026 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
027 import com.liferay.portal.kernel.lar.StagedModelType;
028 import com.liferay.portal.kernel.xml.Element;
029 import com.liferay.portal.util.PortalUtil;
030 import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
031 import com.liferay.portlet.dynamicdatalists.service.DDLRecordSetLocalServiceUtil;
032 import com.liferay.portlet.dynamicdatalists.service.permission.DDLPermission;
033 import com.liferay.portlet.dynamicdatalists.service.persistence.DDLRecordSetExportActionableDynamicQuery;
034 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
035 import com.liferay.portlet.dynamicdatamapping.model.DDMTemplate;
036 import com.liferay.portlet.dynamicdatamapping.service.persistence.DDMStructureExportActionableDynamicQuery;
037
038 import java.util.ArrayList;
039 import java.util.List;
040
041 import javax.portlet.PortletPreferences;
042
043
046 public class DDLPortletDataHandler extends BasePortletDataHandler {
047
048 public static final String NAMESPACE = "dynamic_data_lists";
049
050 public DDLPortletDataHandler() {
051 setDataLocalized(true);
052 setDeletionSystemEventStagedModelTypes(
053 new StagedModelType(DDLRecordSet.class));
054 setExportControls(
055 new PortletDataHandlerBoolean(
056 NAMESPACE, "record-sets", true, false, null,
057 DDLRecordSet.class.getName()),
058 new PortletDataHandlerBoolean(
059 NAMESPACE, "data-definitions", true, false, null,
060 DDMStructure.class.getName(), DDLRecordSet.class.getName()));
061 setImportControls(getExportControls());
062 }
063
064 @Override
065 protected PortletPreferences doDeleteData(
066 PortletDataContext portletDataContext, String portletId,
067 PortletPreferences portletPreferences)
068 throws Exception {
069
070 if (portletDataContext.addPrimaryKey(
071 DDLPortletDataHandler.class, "deleteData")) {
072
073 return portletPreferences;
074 }
075
076 DDLRecordSetLocalServiceUtil.deleteRecordSets(
077 portletDataContext.getScopeGroupId());
078
079 return portletPreferences;
080 }
081
082 @Override
083 protected String doExportData(
084 final PortletDataContext portletDataContext, String portletId,
085 PortletPreferences portletPreferences)
086 throws Exception {
087
088 portletDataContext.addPortletPermissions(DDLPermission.RESOURCE_NAME);
089
090 Element rootElement = addExportDataRootElement(portletDataContext);
091
092 if (portletDataContext.getBooleanParameter(
093 NAMESPACE, "data-definitions")) {
094
095 List<DDMTemplate> ddmTemplates = new ArrayList<DDMTemplate>();
096
097 ActionableDynamicQuery ddmStructureActionableDynamicQuery =
098 getDDMStructureActionableDynamicQuery(
099 portletDataContext, ddmTemplates);
100
101 ddmStructureActionableDynamicQuery.performActions();
102
103 for (DDMTemplate ddmTemplate : ddmTemplates) {
104 StagedModelDataHandlerUtil.exportStagedModel(
105 portletDataContext, ddmTemplate);
106 }
107 }
108
109 if (portletDataContext.getBooleanParameter(NAMESPACE, "record-sets")) {
110 ActionableDynamicQuery recordSetActionableDynamicQuery =
111 new DDLRecordSetExportActionableDynamicQuery(
112 portletDataContext);
113
114 recordSetActionableDynamicQuery.performActions();
115 }
116
117 return getExportDataRootElementString(rootElement);
118 }
119
120 @Override
121 protected PortletPreferences doImportData(
122 PortletDataContext portletDataContext, String portletId,
123 PortletPreferences portletPreferences, String data)
124 throws Exception {
125
126 portletDataContext.importPortletPermissions(
127 DDLPermission.RESOURCE_NAME);
128
129 if (portletDataContext.getBooleanParameter(
130 NAMESPACE, "data-definitions")) {
131
132 Element ddmStructuresElement =
133 portletDataContext.getImportDataGroupElement(
134 DDMStructure.class);
135
136 List<Element> ddmStructureElements =
137 ddmStructuresElement.elements();
138
139 for (Element ddmStructureElement : ddmStructureElements) {
140 StagedModelDataHandlerUtil.importStagedModel(
141 portletDataContext, ddmStructureElement);
142 }
143
144 Element ddmTemplatesElement =
145 portletDataContext.getImportDataGroupElement(DDMTemplate.class);
146
147 List<Element> ddmTemplateElements = ddmTemplatesElement.elements();
148
149 for (Element ddmTemplateElement : ddmTemplateElements) {
150 StagedModelDataHandlerUtil.importStagedModel(
151 portletDataContext, ddmTemplateElement);
152 }
153 }
154
155 if (portletDataContext.getBooleanParameter(NAMESPACE, "record-sets")) {
156 Element recordSetsElement =
157 portletDataContext.getImportDataGroupElement(
158 DDLRecordSet.class);
159
160 List<Element> recordSetElements = recordSetsElement.elements();
161
162 for (Element recordSetElement : recordSetElements) {
163 StagedModelDataHandlerUtil.importStagedModel(
164 portletDataContext, recordSetElement);
165 }
166 }
167
168 return portletPreferences;
169 }
170
171 @Override
172 protected void doPrepareManifestSummary(
173 PortletDataContext portletDataContext,
174 PortletPreferences portletPreferences)
175 throws Exception {
176
177 List<DDMTemplate> ddmTemplates = new ArrayList<DDMTemplate>();
178
179 ActionableDynamicQuery ddmStructureActionableDynamicQuery =
180 getDDMStructureActionableDynamicQuery(
181 portletDataContext, ddmTemplates);
182
183 ddmStructureActionableDynamicQuery.performCount();
184
185 ActionableDynamicQuery recordSetActionableDynamicQuery =
186 new DDLRecordSetExportActionableDynamicQuery(portletDataContext);
187
188 recordSetActionableDynamicQuery.performCount();
189 }
190
191 protected ActionableDynamicQuery getDDMStructureActionableDynamicQuery(
192 final PortletDataContext portletDataContext,
193 final List<DDMTemplate> ddmTemplates)
194 throws SystemException {
195
196 return new DDMStructureExportActionableDynamicQuery(
197 portletDataContext) {
198
199 @Override
200 protected void addCriteria(DynamicQuery dynamicQuery) {
201 super.addCriteria(dynamicQuery);
202
203 Property classNameIdProperty = PropertyFactoryUtil.forName(
204 "classNameId");
205
206 long classNameId = PortalUtil.getClassNameId(
207 DDLRecordSet.class);
208
209 dynamicQuery.add(classNameIdProperty.eq(classNameId));
210 }
211
212 @Override
213 protected StagedModelType getStagedModelType() {
214 return new StagedModelType(
215 DDMStructure.class.getName(), DDLRecordSet.class.getName());
216 }
217
218 @Override
219 protected void performAction(Object object) throws PortalException {
220 DDMStructure ddmStructure = (DDMStructure)object;
221
222 StagedModelDataHandlerUtil.exportStagedModel(
223 portletDataContext, ddmStructure);
224
225 try {
226 ddmTemplates.addAll(ddmStructure.getTemplates());
227 }
228 catch (SystemException se) {
229 }
230 }
231
232 };
233 }
234
235 }