001
014
015 package com.liferay.portal.kernel.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<Portlet>(_dataPortlets);
130 manifestSummary._layoutPortlets = new ArrayList<Portlet>(
131 _layoutPortlets);
132
133 if (_exportDate != null) {
134 manifestSummary.setExportDate(new Date(_exportDate.getTime()));
135 }
136
137 manifestSummary._manifestSummaryKeys = new HashSet<String>(
138 _manifestSummaryKeys);
139 manifestSummary._modelAdditionCounters =
140 new HashMap<String, LongWrapper>(_modelAdditionCounters);
141 manifestSummary._modelDeletionCounters =
142 new HashMap<String, LongWrapper>(_modelDeletionCounters);
143
144 return manifestSummary;
145 }
146
147 public String[] getConfigurationPortletOptions(String rootPortletId) {
148 return _configurationPortletOptions.get(rootPortletId);
149 }
150
151 public List<Portlet> getDataPortlets() {
152 return _dataPortlets;
153 }
154
155 public Date getExportDate() {
156 return _exportDate;
157 }
158
159 public List<Portlet> getLayoutPortlets() {
160 return _layoutPortlets;
161 }
162
163 public Collection<String> getManifestSummaryKeys() {
164 return _manifestSummaryKeys;
165 }
166
167 public long getModelAdditionCount(Class<? extends ClassedModel> clazz) {
168 return getModelAdditionCount(clazz, clazz);
169 }
170
171 public long getModelAdditionCount(
172 Class<? extends ClassedModel> clazz,
173 Class<? extends ClassedModel> referrerClass) {
174
175 return getModelAdditionCount(clazz.getName(), referrerClass.getName());
176 }
177
178 public long getModelAdditionCount(String manifestSummaryKey) {
179 if (!_modelAdditionCounters.containsKey(manifestSummaryKey)) {
180 return -1;
181 }
182
183 LongWrapper modelAdditionCounter = _modelAdditionCounters.get(
184 manifestSummaryKey);
185
186 return modelAdditionCounter.getValue();
187 }
188
189 public long getModelAdditionCount(
190 String className, String referrerClassName) {
191
192 if (Validator.isNull(referrerClassName) ||
193 !referrerClassName.equals(
194 StagedModelType.REFERRER_CLASS_NAME_ALL)) {
195
196 String manifestSummaryKey = getManifestSummaryKey(
197 className, referrerClassName);
198
199 return getModelAdditionCount(manifestSummaryKey);
200 }
201
202 long modelAdditionCount = 0;
203
204 for (String key : _modelAdditionCounters.keySet()) {
205 if (!key.startsWith(className)) {
206 continue;
207 }
208
209 long count = getModelAdditionCount(key);
210
211 if (count > 0) {
212 modelAdditionCount += count;
213 }
214 }
215
216 return modelAdditionCount;
217 }
218
219 public Map<String, LongWrapper> getModelAdditionCounters() {
220 return _modelAdditionCounters;
221 }
222
223 public long getModelDeletionCount() {
224 long modelDeletionCount = -1;
225
226 for (String manifestSummaryKey : _manifestSummaryKeys) {
227 long manifestSummaryKeyModelDeletionCount = getModelDeletionCount(
228 manifestSummaryKey);
229
230 if (manifestSummaryKeyModelDeletionCount == -1) {
231 continue;
232 }
233
234 if (modelDeletionCount == -1) {
235 modelDeletionCount = manifestSummaryKeyModelDeletionCount;
236 }
237 else {
238 modelDeletionCount += manifestSummaryKeyModelDeletionCount;
239 }
240 }
241
242 return modelDeletionCount;
243 }
244
245 public long getModelDeletionCount(Class<? extends ClassedModel> clazz) {
246 return getModelDeletionCount(clazz.getName());
247 }
248
249 public long getModelDeletionCount(StagedModelType[] stagedModelTypes) {
250 if (ArrayUtil.isEmpty(stagedModelTypes)) {
251 return 0;
252 }
253
254 long modelDeletionCount = -1;
255
256 for (StagedModelType stagedModelType : stagedModelTypes) {
257 long stagedModelTypeModelDeletionCount = getModelDeletionCount(
258 stagedModelType.toString());
259
260 if (stagedModelTypeModelDeletionCount == -1) {
261 continue;
262 }
263
264 if (modelDeletionCount == -1) {
265 modelDeletionCount = stagedModelTypeModelDeletionCount;
266 }
267 else {
268 modelDeletionCount += stagedModelTypeModelDeletionCount;
269 }
270 }
271
272 return modelDeletionCount;
273 }
274
275 public long getModelDeletionCount(String modelName) {
276 if (!_modelDeletionCounters.containsKey(modelName)) {
277 return -1;
278 }
279
280 LongWrapper modelDeletionCounter = _modelDeletionCounters.get(
281 modelName);
282
283 return modelDeletionCounter.getValue();
284 }
285
286 public Map<String, LongWrapper> getModelDeletionCounters() {
287 return _modelDeletionCounters;
288 }
289
290 public void incrementModelAdditionCount(StagedModelType stagedModelType) {
291 String manifestSummaryKey = stagedModelType.toString();
292
293 if (!_modelAdditionCounters.containsKey(manifestSummaryKey)) {
294 _modelAdditionCounters.put(manifestSummaryKey, new LongWrapper(1));
295
296 _manifestSummaryKeys.add(manifestSummaryKey);
297
298 return;
299 }
300
301 LongWrapper modelAdditionCounter = _modelAdditionCounters.get(
302 manifestSummaryKey);
303
304 modelAdditionCounter.increment();
305 }
306
307 public void incrementModelDeletionCount(StagedModelType stagedModelType) {
308 String manifestSummaryKey = stagedModelType.toString();
309
310 if (!_modelDeletionCounters.containsKey(manifestSummaryKey)) {
311 _modelDeletionCounters.put(manifestSummaryKey, new LongWrapper(1));
312
313 _manifestSummaryKeys.add(manifestSummaryKey);
314
315 return;
316 }
317
318 LongWrapper modelDeletionCounter = _modelDeletionCounters.get(
319 manifestSummaryKey);
320
321 modelDeletionCounter.increment();
322 }
323
324 public void resetCounters() {
325 _modelAdditionCounters.clear();
326 _modelDeletionCounters.clear();
327
328 _manifestSummaryKeys.clear();
329 }
330
331 public void setExportDate(Date exportDate) {
332 _exportDate = exportDate;
333 }
334
335 @Override
336 public String toString() {
337 StringBundler sb = new StringBundler(5);
338
339 sb.append("{modelAdditionCounters=");
340 sb.append(MapUtil.toString(_modelAdditionCounters));
341 sb.append(", modelDeletionCounters=");
342 sb.append(MapUtil.toString(_modelDeletionCounters));
343 sb.append("}");
344
345 return sb.toString();
346 }
347
348 private Map<String, String[]> _configurationPortletOptions =
349 new HashMap<String, String[]>();
350 private List<Portlet> _dataPortlets = new ArrayList<Portlet>();
351 private Date _exportDate;
352 private List<Portlet> _layoutPortlets = new ArrayList<Portlet>();
353 private Set<String> _manifestSummaryKeys = new HashSet<String>();
354 private Map<String, LongWrapper> _modelAdditionCounters =
355 new HashMap<String, LongWrapper>();
356 private Map<String, LongWrapper> _modelDeletionCounters =
357 new HashMap<String, LongWrapper>();
358
359 }