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