001
014
015 package com.liferay.portlet.dynamicdatalists.lar;
016
017 import com.liferay.portal.kernel.lar.BaseStagedModelDataHandler;
018 import com.liferay.portal.kernel.lar.PortletDataContext;
019 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
020 import com.liferay.portal.kernel.lar.StagedModelPathUtil;
021 import com.liferay.portal.kernel.util.MapUtil;
022 import com.liferay.portal.kernel.xml.Element;
023 import com.liferay.portal.service.ServiceContext;
024 import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
025 import com.liferay.portlet.dynamicdatalists.service.DDLRecordSetLocalServiceUtil;
026 import com.liferay.portlet.dynamicdatalists.service.persistence.DDLRecordSetUtil;
027 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
028 import com.liferay.portlet.dynamicdatamapping.model.DDMTemplate;
029
030 import java.util.List;
031 import java.util.Map;
032
033
036 public class DDLRecordSetStagedModelDataHandler
037 extends BaseStagedModelDataHandler<DDLRecordSet> {
038
039 @Override
040 public String getClassName() {
041 return DDLRecordSet.class.getName();
042 }
043
044 @Override
045 protected void doExportStagedModel(
046 PortletDataContext portletDataContext, Element[] elements,
047 DDLRecordSet recordSet)
048 throws Exception {
049
050 Element recordSetsElement = elements[0];
051
052 Element recordSetElement = recordSetsElement.addElement("record-set");
053
054 portletDataContext.addClassedModel(
055 recordSetElement, StagedModelPathUtil.getPath(recordSet), recordSet,
056 DDLPortletDataHandler.NAMESPACE);
057
058 Element ddmStructuresElement = recordSetElement.addElement(
059 "ddm-structures");
060
061 DDMStructure ddmStructure = recordSet.getDDMStructure();
062
063 StagedModelDataHandlerUtil.exportStagedModel(
064 portletDataContext, ddmStructuresElement, ddmStructure);
065
066 Element ddmTemplatesElement = recordSetElement.addElement(
067 "ddm-templates");
068
069 List<DDMTemplate> ddmTemplates = ddmStructure.getTemplates();
070
071 for (DDMTemplate ddmTemplate : ddmTemplates) {
072 StagedModelDataHandlerUtil.exportStagedModel(
073 portletDataContext, ddmTemplatesElement, ddmTemplate);
074 }
075 }
076
077 @Override
078 protected void doImportStagedModel(
079 PortletDataContext portletDataContext, Element element, String path,
080 DDLRecordSet recordSet)
081 throws Exception {
082
083 Element ddmStructuresElement = element.element("ddm-structures");
084
085 if (ddmStructuresElement != null) {
086 importDDMStructures(portletDataContext, ddmStructuresElement);
087 }
088
089 Element ddmTemplatesElement = element.element("ddm-templates");
090
091 if (ddmTemplatesElement != null) {
092 importDDMTemplates(portletDataContext, ddmTemplatesElement);
093 }
094
095 long userId = portletDataContext.getUserId(recordSet.getUserUuid());
096
097 Map<Long, Long> ddmStructureIds =
098 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
099 DDMStructure.class);
100
101 long ddmStructureId = MapUtil.getLong(
102 ddmStructureIds, recordSet.getDDMStructureId(),
103 recordSet.getDDMStructureId());
104
105 ServiceContext serviceContext = portletDataContext.createServiceContext(
106 path, recordSet, DDLPortletDataHandler.NAMESPACE);
107
108 DDLRecordSet importedRecordSet = null;
109
110 if (portletDataContext.isDataStrategyMirror()) {
111 DDLRecordSet existingRecordSet = DDLRecordSetUtil.fetchByUUID_G(
112 recordSet.getUuid(), portletDataContext.getScopeGroupId());
113
114 if (existingRecordSet == null) {
115 serviceContext.setUuid(recordSet.getUuid());
116
117 importedRecordSet = DDLRecordSetLocalServiceUtil.addRecordSet(
118 userId, portletDataContext.getScopeGroupId(),
119 ddmStructureId, recordSet.getRecordSetKey(),
120 recordSet.getNameMap(), recordSet.getDescriptionMap(),
121 recordSet.getMinDisplayRows(), recordSet.getScope(),
122 serviceContext);
123 }
124 else {
125 importedRecordSet =
126 DDLRecordSetLocalServiceUtil.updateRecordSet(
127 existingRecordSet.getRecordSetId(), ddmStructureId,
128 recordSet.getNameMap(), recordSet.getDescriptionMap(),
129 recordSet.getMinDisplayRows(), serviceContext);
130 }
131 }
132 else {
133 importedRecordSet = DDLRecordSetLocalServiceUtil.addRecordSet(
134 userId, portletDataContext.getScopeGroupId(), ddmStructureId,
135 recordSet.getRecordSetKey(), recordSet.getNameMap(),
136 recordSet.getDescriptionMap(), recordSet.getMinDisplayRows(),
137 recordSet.getScope(), serviceContext);
138 }
139
140 portletDataContext.importClassedModel(
141 recordSet, importedRecordSet, DDLPortletDataHandler.NAMESPACE);
142 }
143
144 protected void importDDMStructures(
145 PortletDataContext portletDataContext,
146 Element ddmStructureReferencesElement)
147 throws Exception {
148
149 List<Element> ddmStructureElements =
150 ddmStructureReferencesElement.elements("structure");
151
152 for (Element ddmStructureElement : ddmStructureElements) {
153 StagedModelDataHandlerUtil.importStagedModel(
154 portletDataContext, ddmStructureElement);
155 }
156 }
157
158 protected void importDDMTemplates(
159 PortletDataContext portletDataContext,
160 Element ddmTemplateReferencesElement)
161 throws Exception {
162
163 List<Element> ddmTemplateElements =
164 ddmTemplateReferencesElement.elements("template");
165
166 for (Element ddmTemplateElement : ddmTemplateElements) {
167 StagedModelDataHandlerUtil.importStagedModel(
168 portletDataContext, ddmTemplateElement);
169 }
170 }
171
172 }