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(Class<? extends ClassedModel> clazz) {
162 return getModelAdditionCount(clazz, clazz);
163 }
164
165 public long getModelAdditionCount(
166 Class<? extends ClassedModel> clazz,
167 Class<? extends ClassedModel> referrerClass) {
168
169 return getModelAdditionCount(clazz.getName(), referrerClass.getName());
170 }
171
172 public long getModelAdditionCount(String manifestSummaryKey) {
173 if (!_modelAdditionCounters.containsKey(manifestSummaryKey)) {
174 return -1;
175 }
176
177 LongWrapper modelAdditionCounter = _modelAdditionCounters.get(
178 manifestSummaryKey);
179
180 return modelAdditionCounter.getValue();
181 }
182
183 public long getModelAdditionCount(
184 String className, String referrerClassName) {
185
186 String manifestSummaryKey = getManifestSummaryKey(
187 className, referrerClassName);
188
189 return getModelAdditionCount(manifestSummaryKey);
190 }
191
192 public Map<String, LongWrapper> getModelAdditionCounters() {
193 return _modelAdditionCounters;
194 }
195
196 public long getModelDeletionCount() {
197 long modelDeletionCount = -1;
198
199 for (String manifestSummaryKey : _manifestSummaryKeys) {
200 long manifestSummaryKeyModelDeletionCount = getModelDeletionCount(
201 manifestSummaryKey);
202
203 if (manifestSummaryKeyModelDeletionCount == -1) {
204 continue;
205 }
206
207 if (modelDeletionCount == -1) {
208 modelDeletionCount = manifestSummaryKeyModelDeletionCount;
209 }
210 else {
211 modelDeletionCount += manifestSummaryKeyModelDeletionCount;
212 }
213 }
214
215 return modelDeletionCount;
216 }
217
218 public long getModelDeletionCount(Class<? extends ClassedModel> clazz) {
219 return getModelDeletionCount(clazz.getName());
220 }
221
222 public long getModelDeletionCount(StagedModelType[] stagedModelTypes) {
223 if (ArrayUtil.isEmpty(stagedModelTypes)) {
224 return 0;
225 }
226
227 long modelDeletionCount = -1;
228
229 for (StagedModelType stagedModelType : stagedModelTypes) {
230 long stagedModelTypeModelDeletionCount = getModelDeletionCount(
231 stagedModelType.toString());
232
233 if (stagedModelTypeModelDeletionCount == -1) {
234 continue;
235 }
236
237 if (modelDeletionCount == -1) {
238 modelDeletionCount = stagedModelTypeModelDeletionCount;
239 }
240 else {
241 modelDeletionCount += stagedModelTypeModelDeletionCount;
242 }
243 }
244
245 return modelDeletionCount;
246 }
247
248 public long getModelDeletionCount(String modelName) {
249 if (!_modelDeletionCounters.containsKey(modelName)) {
250 return -1;
251 }
252
253 LongWrapper modelDeletionCounter = _modelDeletionCounters.get(
254 modelName);
255
256 return modelDeletionCounter.getValue();
257 }
258
259 public Map<String, LongWrapper> getModelDeletionCounters() {
260 return _modelDeletionCounters;
261 }
262
263 public void incrementModelAdditionCount(StagedModelType stagedModelType) {
264 String manifestSummaryKey = stagedModelType.toString();
265
266 if (!_modelAdditionCounters.containsKey(manifestSummaryKey)) {
267 _modelAdditionCounters.put(manifestSummaryKey, new LongWrapper(1));
268
269 _manifestSummaryKeys.add(manifestSummaryKey);
270
271 return;
272 }
273
274 LongWrapper modelAdditionCounter = _modelAdditionCounters.get(
275 manifestSummaryKey);
276
277 modelAdditionCounter.increment();
278 }
279
280 public void incrementModelDeletionCount(StagedModelType stagedModelType) {
281 String manifestSummaryKey = stagedModelType.toString();
282
283 if (!_modelDeletionCounters.containsKey(manifestSummaryKey)) {
284 _modelDeletionCounters.put(manifestSummaryKey, new LongWrapper(1));
285
286 _manifestSummaryKeys.add(manifestSummaryKey);
287
288 return;
289 }
290
291 LongWrapper modelDeletionCounter = _modelDeletionCounters.get(
292 manifestSummaryKey);
293
294 modelDeletionCounter.increment();
295 }
296
297 public void setExportDate(Date exportDate) {
298 _exportDate = exportDate;
299 }
300
301 @Override
302 public String toString() {
303 StringBundler sb = new StringBundler(5);
304
305 sb.append("{modelAdditionCounters=");
306 sb.append(MapUtil.toString(_modelAdditionCounters));
307 sb.append(", modelDeletionCounters=");
308 sb.append(MapUtil.toString(_modelDeletionCounters));
309 sb.append("}");
310
311 return sb.toString();
312 }
313
314 private Map<String, String[]> _configurationPortletOptions =
315 new HashMap<String, String[]>();
316 private List<Portlet> _configurationPortlets = new ArrayList<Portlet>();
317 private List<Portlet> _dataPortlets = new ArrayList<Portlet>();
318 private Set<String> _dataRootPortletIds = new HashSet<String>();
319 private Date _exportDate;
320 private Set<String> _manifestSummaryKeys = new HashSet<String>();
321 private Map<String, LongWrapper> _modelAdditionCounters =
322 new HashMap<String, LongWrapper>();
323 private Map<String, LongWrapper> _modelDeletionCounters =
324 new HashMap<String, LongWrapper>();
325
326 }