001
014
015 package com.liferay.portal.kernel.lar;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.util.StringPool;
020 import com.liferay.portal.kernel.util.Validator;
021 import com.liferay.portal.kernel.xml.Attribute;
022 import com.liferay.portal.kernel.xml.Element;
023 import com.liferay.portal.model.ClassedModel;
024 import com.liferay.portal.model.StagedGroupedModel;
025 import com.liferay.portal.model.StagedModel;
026 import com.liferay.portal.model.TypedModel;
027 import com.liferay.portal.util.PortalUtil;
028
029
033 public class StagedModelDataHandlerUtil {
034
035 public static void deleteStagedModel(
036 PortletDataContext portletDataContext, Element deletionElement)
037 throws PortalException, SystemException {
038
039 String className = deletionElement.attributeValue("class-name");
040 String extraData = deletionElement.attributeValue("extra-data");
041 String uuid = deletionElement.attributeValue("uuid");
042
043 StagedModelDataHandler<?> stagedModelDataHandler =
044 StagedModelDataHandlerRegistryUtil.getStagedModelDataHandler(
045 className);
046
047 if (stagedModelDataHandler != null) {
048 stagedModelDataHandler.deleteStagedModel(
049 uuid, portletDataContext.getScopeGroupId(), className,
050 extraData);
051 }
052 }
053
054 public static <T extends StagedModel> void exportReferenceStagedModel(
055 PortletDataContext portletDataContext, String referrerPortletId,
056 T stagedModel)
057 throws PortletDataException {
058
059 if (stagedModel instanceof StagedGroupedModel) {
060 StagedGroupedModel stagedGroupedModel =
061 (StagedGroupedModel)stagedModel;
062
063 if (portletDataContext.isCompanyStagedGroupedModel(
064 stagedGroupedModel)) {
065
066 portletDataContext.addMissingReferenceElement(
067 referrerPortletId, stagedModel);
068
069 return;
070 }
071 }
072
073 exportStagedModel(portletDataContext, stagedModel);
074 }
075
076 public static <T extends StagedModel, U extends StagedModel> Element
077 exportReferenceStagedModel(
078 PortletDataContext portletDataContext, T referrerStagedModel,
079 Class<?> referrerStagedModelClass, U stagedModel,
080 Class<?> stagedModelClass, String referenceType)
081 throws PortletDataException {
082
083 Element referrerStagedModelElement =
084 portletDataContext.getExportDataElement(
085 referrerStagedModel, referrerStagedModelClass);
086
087 return exportReferenceStagedModel(
088 portletDataContext, referrerStagedModel, referrerStagedModelElement,
089 stagedModel, stagedModelClass, referenceType);
090 }
091
092 public static <T extends StagedModel, U extends StagedModel> Element
093 exportReferenceStagedModel(
094 PortletDataContext portletDataContext, T referrerStagedModel,
095 Element referrerStagedModelElement, U stagedModel,
096 Class<?> stagedModelClass, String referenceType)
097 throws PortletDataException {
098
099 Element referenceElement = null;
100
101 if (stagedModel instanceof StagedGroupedModel) {
102 StagedGroupedModel stagedGroupedModel =
103 (StagedGroupedModel)stagedModel;
104
105 if (portletDataContext.isCompanyStagedGroupedModel(
106 stagedGroupedModel)) {
107
108 referenceElement = portletDataContext.addReferenceElement(
109 referrerStagedModel, referrerStagedModelElement,
110 stagedModel, stagedModelClass,
111 PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true);
112
113 return referenceElement;
114 }
115 }
116
117 exportStagedModel(portletDataContext, stagedModel);
118
119 referenceElement = portletDataContext.addReferenceElement(
120 referrerStagedModel, referrerStagedModelElement, stagedModel,
121 stagedModelClass, referenceType, false);
122
123 return referenceElement;
124 }
125
126 public static <T extends StagedModel, U extends StagedModel> Element
127 exportReferenceStagedModel(
128 PortletDataContext portletDataContext, T referrerStagedModel,
129 U stagedModel, String referenceType)
130 throws PortletDataException {
131
132 return exportReferenceStagedModel(
133 portletDataContext, referrerStagedModel,
134 referrerStagedModel.getModelClass(), stagedModel,
135 stagedModel.getModelClass(), referenceType);
136 }
137
138 public static <T extends StagedModel> void exportStagedModel(
139 PortletDataContext portletDataContext, T stagedModel)
140 throws PortletDataException {
141
142 StagedModelDataHandler<T> stagedModelDataHandler =
143 _getStagedModelDataHandler(stagedModel);
144
145 stagedModelDataHandler.exportStagedModel(
146 portletDataContext, stagedModel);
147 }
148
149 public static <T extends StagedModel> String getDisplayName(T stagedModel) {
150 StagedModelDataHandler<T> stagedModelDataHandler =
151 _getStagedModelDataHandler(stagedModel);
152
153 if (stagedModelDataHandler == null) {
154 return StringPool.BLANK;
155 }
156
157 return stagedModelDataHandler.getDisplayName(stagedModel);
158 }
159
160 public static void importReferenceStagedModel(
161 PortletDataContext portletDataContext, Element element)
162 throws PortletDataException {
163
164 StagedModel stagedModel = _getStagedModel(portletDataContext, element);
165
166 importReferenceStagedModel(portletDataContext, stagedModel);
167 }
168
169 public static <T extends StagedModel> void importReferenceStagedModel(
170 PortletDataContext portletDataContext, T stagedModel)
171 throws PortletDataException {
172
173 StagedModelDataHandler<T> stagedModelDataHandler =
174 _getStagedModelDataHandler(stagedModel);
175
176 if (stagedModel instanceof StagedGroupedModel) {
177 StagedGroupedModel stagedGroupedModel =
178 (StagedGroupedModel)stagedModel;
179
180 if (portletDataContext.isCompanyStagedGroupedModel(
181 stagedGroupedModel)) {
182
183 stagedModelDataHandler.importCompanyStagedModel(
184 portletDataContext, stagedModel);
185
186 return;
187 }
188 }
189
190 importStagedModel(portletDataContext, stagedModel);
191 }
192
193 public static void importStagedModel(
194 PortletDataContext portletDataContext, Element element)
195 throws PortletDataException {
196
197 StagedModel stagedModel = _getStagedModel(portletDataContext, element);
198
199 importStagedModel(portletDataContext, stagedModel);
200 }
201
202 public static <T extends StagedModel> void importStagedModel(
203 PortletDataContext portletDataContext, T stagedModel)
204 throws PortletDataException {
205
206 StagedModelDataHandler<T> stagedModelDataHandler =
207 _getStagedModelDataHandler(stagedModel);
208
209 stagedModelDataHandler.importStagedModel(
210 portletDataContext, stagedModel);
211 }
212
213 private static StagedModel _getStagedModel(
214 PortletDataContext portletDataContext, Element element) {
215
216 String path = element.attributeValue("path");
217
218 StagedModel stagedModel =
219 (StagedModel)portletDataContext.getZipEntryAsObject(element, path);
220
221 Attribute classNameAttribute = element.attribute("class-name");
222
223 if ((classNameAttribute != null) &&
224 (stagedModel instanceof TypedModel)) {
225
226 String className = classNameAttribute.getValue();
227
228 if (Validator.isNotNull(className)) {
229 long classNameId = PortalUtil.getClassNameId(className);
230
231 TypedModel typedModel = (TypedModel)stagedModel;
232
233 typedModel.setClassNameId(classNameId);
234 }
235 }
236
237 return stagedModel;
238 }
239
240 private static <T extends StagedModel> StagedModelDataHandler<T>
241 _getStagedModelDataHandler(T stagedModel) {
242
243 ClassedModel classedModel = stagedModel;
244
245 StagedModelDataHandler<T> stagedModelDataHandler =
246 (StagedModelDataHandler<T>)
247 StagedModelDataHandlerRegistryUtil.getStagedModelDataHandler(
248 classedModel.getModelClassName());
249
250 return stagedModelDataHandler;
251 }
252
253 }