001
014
015 package com.liferay.portlet.exportimport.lar;
016
017 import aQute.bnd.annotation.ProviderType;
018
019 import com.liferay.portal.kernel.util.ArrayUtil;
020 import com.liferay.portal.kernel.util.LongWrapper;
021 import com.liferay.portal.kernel.util.MapUtil;
022 import com.liferay.portal.kernel.util.StringBundler;
023 import com.liferay.portal.kernel.util.StringPool;
024 import com.liferay.portal.kernel.util.Validator;
025 import com.liferay.portal.model.ClassedModel;
026 import com.liferay.portal.model.Portlet;
027
028 import java.io.Serializable;
029
030 import java.util.ArrayList;
031 import java.util.Collection;
032 import java.util.Date;
033 import java.util.HashMap;
034 import java.util.HashSet;
035 import java.util.List;
036 import java.util.Map;
037 import java.util.Set;
038
039
043 @ProviderType
044 public class ManifestSummary implements Serializable {
045
046 public static String getManifestSummaryKey(
047 String modelName, String referrerModelName) {
048
049 if (Validator.isNull(referrerModelName) ||
050 modelName.equals(referrerModelName)) {
051
052 return modelName;
053 }
054
055 return modelName.concat(StringPool.POUND).concat(referrerModelName);
056 }
057
058 public void addDataPortlet(
059 Portlet portlet, String[] configurationPortletOptions) {
060
061 String rootPortletId = portlet.getRootPortletId();
062
063 if (!_configurationPortletOptions.containsKey(rootPortletId)) {
064 _dataPortlets.add(portlet);
065
066 _configurationPortletOptions.put(
067 rootPortletId, configurationPortletOptions);
068 }
069 }
070
071 public void addLayoutPortlet(
072 Portlet portlet, String[] configurationPortletOptions) {
073
074 String rootPortletId = portlet.getRootPortletId();
075
076 if (!_configurationPortletOptions.containsKey(rootPortletId)) {
077 _layoutPortlets.add(portlet);
078
079 _configurationPortletOptions.put(
080 rootPortletId, configurationPortletOptions);
081 }
082 }
083
084 public void addModelAdditionCount(
085 StagedModelType stagedModelType, long count) {
086
087 addModelAdditionCount(stagedModelType.toString(), count);
088 }
089
090 public void addModelAdditionCount(String manifestSummaryKey, long count) {
091 LongWrapper modelAdditionCounter = _modelAdditionCounters.get(
092 manifestSummaryKey);
093
094 if (modelAdditionCounter == null) {
095 modelAdditionCounter = new LongWrapper();
096
097 _modelAdditionCounters.put(
098 manifestSummaryKey, modelAdditionCounter);
099 }
100
101 modelAdditionCounter.setValue(count);
102
103 _manifestSummaryKeys.add(manifestSummaryKey);
104 }
105
106 public void addModelDeletionCount(String manifestSummaryKey, long count) {
107 LongWrapper modelDeletionCounter = _modelDeletionCounters.get(
108 manifestSummaryKey);
109
110 if (modelDeletionCounter == null) {
111 modelDeletionCounter = new LongWrapper();
112
113 _modelDeletionCounters.put(
114 manifestSummaryKey, modelDeletionCounter);
115 }
116
117 modelDeletionCounter.setValue(count);
118
119 _manifestSummaryKeys.add(manifestSummaryKey);
120 }
121
122 @Override
123 public Object clone() {
124 ManifestSummary manifestSummary = new ManifestSummary();
125
126 manifestSummary._configurationPortletOptions =
127 new HashMap<String, String[]> (
128 manifestSummary._configurationPortletOptions);
129 manifestSummary._dataPortlets = new ArrayList<>(_dataPortlets);
130 manifestSummary._layoutPortlets = new ArrayList<>(_layoutPortlets);
131
132 if (_exportDate != null) {
133 manifestSummary.setExportDate(new Date(_exportDate.getTime()));
134 }
135
136 manifestSummary._manifestSummaryKeys = new HashSet<>(
137 _manifestSummaryKeys);
138 manifestSummary._modelAdditionCounters = new HashMap<>(
139 _modelAdditionCounters);
140 manifestSummary._modelDeletionCounters = new HashMap<>(
141 _modelDeletionCounters);
142
143 return manifestSummary;
144 }
145
146 public String[] getConfigurationPortletOptions(String rootPortletId) {
147 return _configurationPortletOptions.get(rootPortletId);
148 }
149
150 public List<Portlet> getDataPortlets() {
151 return _dataPortlets;
152 }
153
154 public Date getExportDate() {
155 return _exportDate;
156 }
157
158 public List<Portlet> getLayoutPortlets() {
159 return _layoutPortlets;
160 }
161
162 public Collection<String> getManifestSummaryKeys() {
163 return _manifestSummaryKeys;
164 }
165
166 public long getModelAdditionCount(Class<? extends ClassedModel> clazz) {
167 return getModelAdditionCount(clazz, clazz);
168 }
169
170 public long getModelAdditionCount(
171 Class<? extends ClassedModel> clazz,
172 Class<? extends ClassedModel> referrerClass) {
173
174 return getModelAdditionCount(clazz.getName(), referrerClass.getName());
175 }
176
177 public long getModelAdditionCount(String manifestSummaryKey) {
178 if (!_modelAdditionCounters.containsKey(manifestSummaryKey)) {
179 return -1;
180 }
181
182 LongWrapper modelAdditionCounter = _modelAdditionCounters.get(
183 manifestSummaryKey);
184
185 return modelAdditionCounter.getValue();
186 }
187
188 public long getModelAdditionCount(
189 String className, String referrerClassName) {
190
191 if (Validator.isNull(referrerClassName) ||
192 !referrerClassName.equals(
193 StagedModelType.REFERRER_CLASS_NAME_ALL)) {
194
195 String manifestSummaryKey = getManifestSummaryKey(
196 className, referrerClassName);
197
198 return getModelAdditionCount(manifestSummaryKey);
199 }
200
201 long modelAdditionCount = 0;
202
203 for (String key : _modelAdditionCounters.keySet()) {
204 if (!key.startsWith(className)) {
205 continue;
206 }
207
208 long count = getModelAdditionCount(key);
209
210 if (count > 0) {
211 modelAdditionCount += count;
212 }
213 }
214
215 return modelAdditionCount;
216 }
217
218 public Map<String, LongWrapper> getModelAdditionCounters() {
219 return _modelAdditionCounters;
220 }
221
222 public long getModelDeletionCount() {
223 long modelDeletionCount = -1;
224
225 for (String manifestSummaryKey : _manifestSummaryKeys) {
226 long manifestSummaryKeyModelDeletionCount = getModelDeletionCount(
227 manifestSummaryKey);
228
229 if (manifestSummaryKeyModelDeletionCount == -1) {
230 continue;
231 }
232
233 if (modelDeletionCount == -1) {
234 modelDeletionCount = manifestSummaryKeyModelDeletionCount;
235 }
236 else {
237 modelDeletionCount += manifestSummaryKeyModelDeletionCount;
238 }
239 }
240
241 return modelDeletionCount;
242 }
243
244 public long getModelDeletionCount(Class<? extends ClassedModel> clazz) {
245 return getModelDeletionCount(clazz.getName());
246 }
247
248 public long getModelDeletionCount(StagedModelType[] stagedModelTypes) {
249 if (ArrayUtil.isEmpty(stagedModelTypes)) {
250 return 0;
251 }
252
253 long modelDeletionCount = -1;
254
255 for (StagedModelType stagedModelType : stagedModelTypes) {
256 long stagedModelTypeModelDeletionCount = getModelDeletionCount(
257 stagedModelType.toString());
258
259 if (stagedModelTypeModelDeletionCount == -1) {
260 continue;
261 }
262
263 if (modelDeletionCount == -1) {
264 modelDeletionCount = stagedModelTypeModelDeletionCount;
265 }
266 else {
267 modelDeletionCount += stagedModelTypeModelDeletionCount;
268 }
269 }
270
271 return modelDeletionCount;
272 }
273
274 public long getModelDeletionCount(String modelName) {
275 if (!_modelDeletionCounters.containsKey(modelName)) {
276 return -1;
277 }
278
279 LongWrapper modelDeletionCounter = _modelDeletionCounters.get(
280 modelName);
281
282 return modelDeletionCounter.getValue();
283 }
284
285 public Map<String, LongWrapper> getModelDeletionCounters() {
286 return _modelDeletionCounters;
287 }
288
289 public void incrementModelAdditionCount(StagedModelType stagedModelType) {
290 String manifestSummaryKey = stagedModelType.toString();
291
292 if (!_modelAdditionCounters.containsKey(manifestSummaryKey)) {
293 _modelAdditionCounters.put(manifestSummaryKey, new LongWrapper(1));
294
295 _manifestSummaryKeys.add(manifestSummaryKey);
296
297 return;
298 }
299
300 LongWrapper modelAdditionCounter = _modelAdditionCounters.get(
301 manifestSummaryKey);
302
303 modelAdditionCounter.increment();
304 }
305
306 public void incrementModelDeletionCount(StagedModelType stagedModelType) {
307 String manifestSummaryKey = stagedModelType.toString();
308
309 if (!_modelDeletionCounters.containsKey(manifestSummaryKey)) {
310 _modelDeletionCounters.put(manifestSummaryKey, new LongWrapper(1));
311
312 _manifestSummaryKeys.add(manifestSummaryKey);
313
314 return;
315 }
316
317 LongWrapper modelDeletionCounter = _modelDeletionCounters.get(
318 manifestSummaryKey);
319
320 modelDeletionCounter.increment();
321 }
322
323 public void resetCounters() {
324 _modelAdditionCounters.clear();
325 _modelDeletionCounters.clear();
326
327 _manifestSummaryKeys.clear();
328 }
329
330 public void setExportDate(Date exportDate) {
331 _exportDate = exportDate;
332 }
333
334 @Override
335 public String toString() {
336 StringBundler sb = new StringBundler(5);
337
338 sb.append("{modelAdditionCounters=");
339 sb.append(MapUtil.toString(_modelAdditionCounters));
340 sb.append(", modelDeletionCounters=");
341 sb.append(MapUtil.toString(_modelDeletionCounters));
342 sb.append("}");
343
344 return sb.toString();
345 }
346
347 private Map<String, String[]> _configurationPortletOptions =
348 new HashMap<>();
349 private List<Portlet> _dataPortlets = new ArrayList<>();
350 private Date _exportDate;
351 private List<Portlet> _layoutPortlets = new ArrayList<>();
352 private Set<String> _manifestSummaryKeys = new HashSet<>();
353 private Map<String, LongWrapper> _modelAdditionCounters = new HashMap<>();
354 private Map<String, LongWrapper> _modelDeletionCounters = new HashMap<>();
355
356 }