001
014
015 package com.liferay.portal.kernel.lar;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.ArrayUtil;
020 import com.liferay.portal.kernel.util.GetterUtil;
021 import com.liferay.portal.kernel.util.StringPool;
022 import com.liferay.portal.kernel.util.Time;
023 import com.liferay.portal.kernel.util.Validator;
024 import com.liferay.portal.kernel.xml.Document;
025 import com.liferay.portal.kernel.xml.DocumentException;
026 import com.liferay.portal.kernel.xml.Element;
027 import com.liferay.portal.kernel.xml.SAXReaderUtil;
028 import com.liferay.portal.model.Portlet;
029 import com.liferay.portal.service.PortletLocalServiceUtil;
030 import com.liferay.portal.service.PortletPreferencesLocalServiceUtil;
031 import com.liferay.portal.util.PortalUtil;
032 import com.liferay.portal.util.PortletKeys;
033 import com.liferay.portlet.dynamicdatamapping.model.DDMTemplate;
034 import com.liferay.portlet.dynamicdatamapping.service.DDMTemplateLocalServiceUtil;
035 import com.liferay.portlet.portletdisplaytemplate.util.PortletDisplayTemplate;
036 import com.liferay.portlet.portletdisplaytemplate.util.PortletDisplayTemplateUtil;
037
038 import java.io.IOException;
039
040 import java.util.ArrayList;
041 import java.util.List;
042
043 import javax.portlet.PortletPreferences;
044
045
048 public abstract class BasePortletDataHandler implements PortletDataHandler {
049
050 @Override
051 public PortletPreferences addDefaultData(
052 PortletDataContext portletDataContext, String portletId,
053 PortletPreferences portletPreferences)
054 throws PortletDataException {
055
056 long startTime = 0;
057
058 if (_log.isInfoEnabled()) {
059 _log.info("Adding default data to portlet " + portletId);
060
061 startTime = System.currentTimeMillis();
062 }
063
064 try {
065 return doAddDefaultData(
066 portletDataContext, portletId, portletPreferences);
067 }
068 catch (PortletDataException pde) {
069 throw pde;
070 }
071 catch (Exception e) {
072 throw new PortletDataException(e);
073 }
074 finally {
075 if (_log.isInfoEnabled()) {
076 long duration = System.currentTimeMillis() - startTime;
077
078 _log.info(
079 "Added default data to portlet in " +
080 Time.getDuration(duration));
081 }
082 }
083 }
084
085 @Override
086 public PortletPreferences deleteData(
087 PortletDataContext portletDataContext, String portletId,
088 PortletPreferences portletPreferences)
089 throws PortletDataException {
090
091 long startTime = 0;
092
093 if (_log.isInfoEnabled()) {
094 _log.info("Deleting portlet " + portletId);
095
096 startTime = System.currentTimeMillis();
097 }
098
099 try {
100 return doDeleteData(
101 portletDataContext, portletId, portletPreferences);
102 }
103 catch (PortletDataException pde) {
104 throw pde;
105 }
106 catch (Exception e) {
107 throw new PortletDataException(e);
108 }
109 finally {
110 if (_log.isInfoEnabled()) {
111 long duration = System.currentTimeMillis() - startTime;
112
113 _log.info("Deleted portlet in " + Time.getDuration(duration));
114 }
115 }
116 }
117
118 @Override
119 public String exportData(
120 PortletDataContext portletDataContext, String portletId,
121 PortletPreferences portletPreferences)
122 throws PortletDataException {
123
124 long startTime = 0;
125
126 if (_log.isInfoEnabled()) {
127 _log.info("Exporting portlet " + portletId);
128
129 startTime = System.currentTimeMillis();
130 }
131
132 try {
133 portletDataContext.addDeletionSystemEventStagedModelTypes(
134 getDeletionSystemEventStagedModelTypes());
135
136 for (PortletDataHandlerControl portletDataHandlerControl :
137 getExportControls()) {
138
139 addUncheckedModelAdditionCount(
140 portletDataContext, portletDataHandlerControl);
141 }
142
143 return doExportData(
144 portletDataContext, portletId, portletPreferences);
145 }
146 catch (PortletDataException pde) {
147 throw pde;
148 }
149 catch (Exception e) {
150 throw new PortletDataException(e);
151 }
152 finally {
153 if (_log.isInfoEnabled()) {
154 long duration = System.currentTimeMillis() - startTime;
155
156 _log.info("Exported portlet in " + Time.getDuration(duration));
157 }
158 }
159 }
160
161 @Override
162 public DataLevel getDataLevel() {
163 return _dataLevel;
164 }
165
166 @Override
167 public String[] getDataPortletPreferences() {
168 return _dataPortletPreferences;
169 }
170
171 @Override
172 public StagedModelType[] getDeletionSystemEventStagedModelTypes() {
173 return _deletionSystemEventStagedModelTypes;
174 }
175
176 @Override
177 public PortletDataHandlerControl[] getExportConfigurationControls(
178 long companyId, long groupId, Portlet portlet,
179 boolean privateLayout)
180 throws Exception {
181
182 return getExportConfigurationControls(
183 companyId, groupId, portlet, -1, privateLayout);
184 }
185
186 @Override
187 public PortletDataHandlerControl[] getExportConfigurationControls(
188 long companyId, long groupId, Portlet portlet, long plid,
189 boolean privateLayout)
190 throws Exception {
191
192 List<PortletDataHandlerBoolean> configurationControls =
193 new ArrayList<PortletDataHandlerBoolean>();
194
195
196
197 if ((PortletPreferencesLocalServiceUtil.getPortletPreferencesCount(
198 PortletKeys.PREFS_OWNER_ID_DEFAULT,
199 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, plid, portlet, false)
200 > 0) ||
201 (PortletPreferencesLocalServiceUtil.getPortletPreferencesCount(
202 groupId, PortletKeys.PREFS_OWNER_TYPE_GROUP,
203 portlet.getRootPortletId(), false) > 0) ||
204 (PortletPreferencesLocalServiceUtil.getPortletPreferencesCount(
205 companyId, PortletKeys.PREFS_OWNER_TYPE_COMPANY,
206 portlet.getRootPortletId(), false) > 0)) {
207
208 PortletDataHandlerControl[] portletDataHandlerControls = null;
209
210 if (isDisplayPortlet()) {
211 portletDataHandlerControls = getExportControls();
212 }
213
214 configurationControls.add(
215 new PortletDataHandlerBoolean(
216 null, PortletDataHandlerKeys.PORTLET_SETUP, "setup",
217 true, false, portletDataHandlerControls, null, null));
218 }
219
220
221
222 if (PortletPreferencesLocalServiceUtil.getPortletPreferencesCount(
223 -1, PortletKeys.PREFS_OWNER_TYPE_ARCHIVED,
224 portlet.getRootPortletId(), false) > 0) {
225
226 configurationControls.add(
227 new PortletDataHandlerBoolean(
228 null, PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS,
229 "archived-setups", true, false, null, null, null)
230 );
231 }
232
233
234
235 if ((PortletPreferencesLocalServiceUtil.getPortletPreferencesCount(
236 -1, PortletKeys.PREFS_OWNER_TYPE_USER, plid, portlet, false)
237 > 0) ||
238 (PortletPreferencesLocalServiceUtil.getPortletPreferencesCount(
239 groupId, PortletKeys.PREFS_OWNER_TYPE_USER,
240 PortletKeys.PREFS_PLID_SHARED, portlet, false) > 0)) {
241
242 configurationControls.add(
243 new PortletDataHandlerBoolean(
244 null, PortletDataHandlerKeys.PORTLET_USER_PREFERENCES,
245 "user-preferences", true, false, null, null, null));
246 }
247
248 return configurationControls.toArray(
249 new PortletDataHandlerBoolean[configurationControls.size()]);
250 }
251
252 @Override
253 public PortletDataHandlerControl[] getExportControls() {
254 return _exportControls;
255 }
256
257 @Override
258 public PortletDataHandlerControl[] getExportMetadataControls() {
259 return _exportMetadataControls;
260 }
261
262 @Override
263 public long getExportModelCount(ManifestSummary manifestSummary) {
264 return getExportModelCount(manifestSummary, getExportControls());
265 }
266
267 @Override
268 public PortletDataHandlerControl[] getImportConfigurationControls(
269 Portlet portlet, ManifestSummary manifestSummary) {
270
271 String[] configurationPortletOptions =
272 manifestSummary.getConfigurationPortletOptions(
273 portlet.getRootPortletId());
274
275 return getImportConfigurationControls(configurationPortletOptions);
276 }
277
278 @Override
279 public PortletDataHandlerControl[] getImportConfigurationControls(
280 String[] configurationPortletOptions) {
281
282 List<PortletDataHandlerBoolean> configurationControls =
283 new ArrayList<PortletDataHandlerBoolean>();
284
285
286
287 if (ArrayUtil.contains(configurationPortletOptions, "setup")) {
288 PortletDataHandlerControl[] portletDataHandlerControls = null;
289
290 if (isDisplayPortlet()) {
291 portletDataHandlerControls = getExportControls();
292 }
293
294 configurationControls.add(
295 new PortletDataHandlerBoolean(
296 null, PortletDataHandlerKeys.PORTLET_SETUP, "setup", true,
297 false, portletDataHandlerControls, null, null));
298 }
299
300
301
302 if (ArrayUtil.contains(
303 configurationPortletOptions, "archived-setups")) {
304
305 configurationControls.add(
306 new PortletDataHandlerBoolean(
307 null, PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS,
308 "archived-setups", true, false, null, null, null));
309 }
310
311
312
313 if (ArrayUtil.contains(
314 configurationPortletOptions, "user-preferences")) {
315
316 configurationControls.add(
317 new PortletDataHandlerBoolean(
318 null, PortletDataHandlerKeys.PORTLET_USER_PREFERENCES,
319 "user-preferences", true, false, null, null, null));
320 }
321
322 return configurationControls.toArray(
323 new PortletDataHandlerBoolean[configurationControls.size()]);
324 }
325
326 @Override
327 public PortletDataHandlerControl[] getImportControls() {
328 return _importControls;
329 }
330
331 @Override
332 public PortletDataHandlerControl[] getImportMetadataControls() {
333 return _importMetadataControls;
334 }
335
336 @Override
337 public String getPortletId() {
338 return _portletId;
339 }
340
341 @Override
342 public String getServiceName() {
343 return null;
344 }
345
346 @Override
347 public PortletPreferences importData(
348 PortletDataContext portletDataContext, String portletId,
349 PortletPreferences portletPreferences, String data)
350 throws PortletDataException {
351
352 long startTime = 0;
353
354 if (_log.isInfoEnabled()) {
355 _log.info("Importing portlet " + portletId);
356
357 startTime = System.currentTimeMillis();
358 }
359
360 long sourceGroupId = portletDataContext.getSourceGroupId();
361
362 try {
363 if (Validator.isXml(data)) {
364 addImportDataRootElement(portletDataContext, data);
365 }
366
367 portletDataContext.addDeletionSystemEventStagedModelTypes(
368 getDeletionSystemEventStagedModelTypes());
369
370 return doImportData(
371 portletDataContext, portletId, portletPreferences, data);
372 }
373 catch (PortletDataException pde) {
374 throw pde;
375 }
376 catch (Exception e) {
377 throw new PortletDataException(e);
378 }
379 finally {
380 portletDataContext.setSourceGroupId(sourceGroupId);
381
382 if (_log.isInfoEnabled()) {
383 long duration = System.currentTimeMillis() - startTime;
384
385 _log.info("Imported portlet in " + Time.getDuration(duration));
386 }
387 }
388 }
389
390 @Override
391 public boolean isDataAlwaysStaged() {
392 return _dataAlwaysStaged;
393 }
394
395 @Override
396 public boolean isDataLocalized() {
397 return _dataLocalized;
398 }
399
400 @Override
401 public boolean isDataPortalLevel() {
402 return _dataLevel.equals(DataLevel.PORTAL);
403 }
404
405 @Override
406 public boolean isDataPortletInstanceLevel() {
407 return _dataLevel.equals(DataLevel.PORTLET_INSTANCE);
408 }
409
410 @Override
411 public boolean isDataSiteLevel() {
412 return _dataLevel.equals(DataLevel.SITE);
413 }
414
415 @Override
416 public boolean isDisplayPortlet() {
417 if (isDataPortletInstanceLevel() &&
418 !ArrayUtil.isEmpty(getDataPortletPreferences())) {
419
420 return true;
421 }
422
423 return false;
424 }
425
426 @Override
427 public boolean isPublishToLiveByDefault() {
428 return _publishToLiveByDefault;
429 }
430
431 @Override
432 public boolean isRollbackOnException() {
433
434
435
436
437
438
439
440 return true;
441 }
442
443 @Override
444 public boolean isSupportsDataStrategyCopyAsNew() {
445 return _supportsDataStrategyCopyAsNew;
446 }
447
448 @Override
449 public void prepareManifestSummary(PortletDataContext portletDataContext)
450 throws PortletDataException {
451
452 prepareManifestSummary(portletDataContext, null);
453 }
454
455 @Override
456 public void prepareManifestSummary(
457 PortletDataContext portletDataContext,
458 PortletPreferences portletPreferences)
459 throws PortletDataException {
460
461 try {
462 doPrepareManifestSummary(portletDataContext, portletPreferences);
463 }
464 catch (PortletDataException pde) {
465 throw pde;
466 }
467 catch (Exception e) {
468 throw new PortletDataException(e);
469 }
470 }
471
472 @Override
473 public PortletPreferences processExportPortletPreferences(
474 PortletDataContext portletDataContext, String portletId,
475 PortletPreferences portletPreferences)
476 throws PortletDataException {
477
478 String displayStyle = getDisplayTemplate(
479 portletDataContext, portletId, portletPreferences);
480
481 if (Validator.isNotNull(displayStyle) &&
482 displayStyle.startsWith(
483 PortletDisplayTemplate.DISPLAY_STYLE_PREFIX)) {
484
485 long displayStyleGroupId = getDisplayTemplateGroupId(
486 portletDataContext, portletId, portletPreferences);
487
488 long previousScopeGroupId = portletDataContext.getScopeGroupId();
489
490 if (displayStyleGroupId != portletDataContext.getScopeGroupId()) {
491 portletDataContext.setScopeGroupId(displayStyleGroupId);
492 }
493
494 DDMTemplate ddmTemplate =
495 PortletDisplayTemplateUtil.fetchDDMTemplate(
496 portletDataContext.getGroupId(), displayStyle);
497
498 if (ddmTemplate != null) {
499 StagedModelDataHandlerUtil.exportReferenceStagedModel(
500 portletDataContext, portletId, ddmTemplate);
501 }
502
503 portletDataContext.setScopeGroupId(previousScopeGroupId);
504 }
505
506 try {
507 return doProcessExportPortletPreferences(
508 portletDataContext, portletId, portletPreferences);
509 }
510 catch (PortletDataException pde) {
511 throw pde;
512 }
513 catch (Exception e) {
514 throw new PortletDataException(e);
515 }
516 }
517
518 @Override
519 public PortletPreferences processImportPortletPreferences(
520 PortletDataContext portletDataContext, String portletId,
521 PortletPreferences portletPreferences)
522 throws PortletDataException {
523
524 try {
525 String displayStyle = getDisplayTemplate(
526 portletDataContext, portletId, portletPreferences);
527
528 if (Validator.isNotNull(displayStyle) &&
529 displayStyle.startsWith(
530 PortletDisplayTemplate.DISPLAY_STYLE_PREFIX)) {
531
532 DDMTemplate ddmTemplate = null;
533
534 long displayStyleGroupId = getDisplayTemplateGroupId(
535 portletDataContext, portletId, portletPreferences);
536
537 if (displayStyleGroupId ==
538 portletDataContext.getSourceCompanyGroupId()) {
539
540 Element importDataRootElement =
541 portletDataContext.getImportDataRootElement();
542
543 Element referencesElement = importDataRootElement.element(
544 "references");
545
546 List<Element> referenceElements =
547 referencesElement.elements();
548
549 String ddmTemplateUuid =
550 PortletDisplayTemplateUtil.getDDMTemplateUuid(
551 displayStyle);
552
553 boolean preloaded = false;
554 long referenceClassNameId = 0;
555 String templateKey = null;
556
557 for (Element referenceElement : referenceElements) {
558 String className = referenceElement.attributeValue(
559 "class-name");
560 String uuid = referenceElement.attributeValue("uuid");
561
562 if (!className.equals(DDMTemplate.class.getName()) ||
563 !uuid.equals(ddmTemplateUuid)) {
564
565 continue;
566 }
567
568 preloaded = GetterUtil.getBoolean(
569 referenceElement.attributeValue("preloaded"));
570 referenceClassNameId = PortalUtil.getClassNameId(
571 referenceElement.attributeValue(
572 "referenced-class-name"));
573 templateKey = referenceElement.attributeValue(
574 "template-key");
575
576 break;
577 }
578
579 if (!preloaded) {
580 ddmTemplate =
581 PortletDisplayTemplateUtil.fetchDDMTemplate(
582 portletDataContext.getCompanyGroupId(),
583 displayStyle);
584 }
585 else {
586 ddmTemplate = DDMTemplateLocalServiceUtil.fetchTemplate(
587 portletDataContext.getCompanyGroupId(),
588 referenceClassNameId, templateKey);
589 }
590 }
591 else if (displayStyleGroupId ==
592 portletDataContext.getSourceGroupId()) {
593
594 ddmTemplate = PortletDisplayTemplateUtil.fetchDDMTemplate(
595 portletDataContext.getScopeGroupId(), displayStyle);
596 }
597 else {
598 ddmTemplate = PortletDisplayTemplateUtil.fetchDDMTemplate(
599 displayStyleGroupId, displayStyle);
600 }
601
602 long importedDisplayStyleGroupId =
603 portletDataContext.getScopeGroupId();
604
605 if (ddmTemplate == null) {
606 String ddmTemplateUuid =
607 PortletDisplayTemplateUtil.getDDMTemplateUuid(
608 displayStyle);
609
610 Element ddmTemplateElement =
611 portletDataContext.getImportDataElement(
612 DDMTemplate.class.getSimpleName(), "uuid",
613 ddmTemplateUuid);
614
615 String ddmTemplatePath = ddmTemplateElement.attributeValue(
616 "path");
617
618 ddmTemplate =
619 (DDMTemplate)portletDataContext.getZipEntryAsObject(
620 ddmTemplatePath);
621
622 if (ddmTemplate != null) {
623 StagedModelDataHandlerUtil.importStagedModel(
624 portletDataContext, ddmTemplate);
625 }
626 }
627 else {
628 importedDisplayStyleGroupId = ddmTemplate.getGroupId();
629 }
630
631 portletPreferences.setValue(
632 "displayStyleGroupId",
633 String.valueOf(importedDisplayStyleGroupId));
634 }
635 else {
636 portletPreferences.setValue(
637 "displayStyleGroupId", StringPool.BLANK);
638 }
639
640 return doProcessImportPortletPreferences(
641 portletDataContext, portletId, portletPreferences);
642 }
643 catch (PortletDataException pde) {
644 throw pde;
645 }
646 catch (Exception e) {
647 throw new PortletDataException(e);
648 }
649 }
650
651 @Override
652 public void setPortletId(String portletId) {
653 _portletId = portletId;
654 }
655
656 protected Element addExportDataRootElement(
657 PortletDataContext portletDataContext) {
658
659 Document document = SAXReaderUtil.createDocument();
660
661 Class<?> clazz = getClass();
662
663 Element rootElement = document.addElement(clazz.getSimpleName());
664
665 portletDataContext.setExportDataRootElement(rootElement);
666
667 return rootElement;
668 }
669
670 protected Element addImportDataRootElement(
671 PortletDataContext portletDataContext, String data)
672 throws DocumentException {
673
674 Document document = SAXReaderUtil.read(data);
675
676 Element rootElement = document.getRootElement();
677
678 portletDataContext.setImportDataRootElement(rootElement);
679
680 long groupId = GetterUtil.getLong(
681 rootElement.attributeValue("group-id"));
682
683 if (groupId != 0) {
684 portletDataContext.setSourceGroupId(groupId);
685 }
686
687 return rootElement;
688 }
689
690 protected void addUncheckedModelAdditionCount(
691 PortletDataContext portletDataContext,
692 PortletDataHandlerControl portletDataHandlerControl) {
693
694 if (!(portletDataHandlerControl instanceof PortletDataHandlerBoolean)) {
695 return;
696 }
697
698 PortletDataHandlerBoolean portletDataHandlerBoolean =
699 (PortletDataHandlerBoolean)portletDataHandlerControl;
700
701 PortletDataHandlerControl[] childPortletDataHandlerControls =
702 portletDataHandlerBoolean.getChildren();
703
704 if (childPortletDataHandlerControls != null) {
705 for (PortletDataHandlerControl childPortletDataHandlerControl :
706 childPortletDataHandlerControls) {
707
708 addUncheckedModelAdditionCount(
709 portletDataContext, childPortletDataHandlerControl);
710 }
711 }
712
713 if (Validator.isNull(portletDataHandlerControl.getClassName())) {
714 return;
715 }
716
717 boolean checkedControl = GetterUtil.getBoolean(
718 portletDataContext.getBooleanParameter(
719 portletDataHandlerControl.getNamespace(),
720 portletDataHandlerControl.getControlName(), false));
721
722 if (!checkedControl) {
723 ManifestSummary manifestSummary =
724 portletDataContext.getManifestSummary();
725
726 String manifestSummaryKey = ManifestSummary.getManifestSummaryKey(
727 portletDataHandlerControl.getClassName(),
728 portletDataHandlerBoolean.getReferrerClassName());
729
730 manifestSummary.addModelAdditionCount(manifestSummaryKey, 0);
731 }
732 }
733
734 protected PortletPreferences doAddDefaultData(
735 PortletDataContext portletDataContext, String portletId,
736 PortletPreferences portletPreferences)
737 throws Exception {
738
739 return portletPreferences;
740 }
741
742 protected PortletPreferences doDeleteData(
743 PortletDataContext portletDataContext, String portletId,
744 PortletPreferences portletPreferences)
745 throws Exception {
746
747 return portletPreferences;
748 }
749
750 protected String doExportData(
751 PortletDataContext portletDataContext, String portletId,
752 PortletPreferences portletPreferences)
753 throws Exception {
754
755 return null;
756 }
757
758 protected PortletPreferences doImportData(
759 PortletDataContext portletDataContext, String portletId,
760 PortletPreferences portletPreferences, String data)
761 throws Exception {
762
763 return null;
764 }
765
766 protected void doPrepareManifestSummary(
767 PortletDataContext portletDataContext,
768 PortletPreferences portletPreferences)
769 throws Exception {
770 }
771
772 protected PortletPreferences doProcessExportPortletPreferences(
773 PortletDataContext portletDataContext, String portletId,
774 PortletPreferences portletPreferences)
775 throws Exception {
776
777 return portletPreferences;
778 }
779
780 protected PortletPreferences doProcessImportPortletPreferences(
781 PortletDataContext portletDataContext, String portletId,
782 PortletPreferences portletPreferences)
783 throws Exception {
784
785 return portletPreferences;
786 }
787
788 protected String getDisplayTemplate(
789 PortletDataContext portletDataContext, String portletId,
790 PortletPreferences portletPreferences) {
791
792 try {
793 Portlet portlet = PortletLocalServiceUtil.getPortletById(
794 portletDataContext.getCompanyId(), portletId);
795
796 if (Validator.isNotNull(portlet.getTemplateHandlerClass())) {
797 return portletPreferences.getValue("displayStyle", null);
798 }
799 }
800 catch (Exception e) {
801 }
802
803 return null;
804 }
805
806 protected long getDisplayTemplateGroupId(
807 PortletDataContext portletDataContext, String portletId,
808 PortletPreferences portletPreferences) {
809
810 try {
811 Portlet portlet = PortletLocalServiceUtil.getPortletById(
812 portletDataContext.getCompanyId(), portletId);
813
814 if (Validator.isNotNull(portlet.getTemplateHandlerClass())) {
815 return GetterUtil.getLong(
816 portletPreferences.getValue("displayStyleGroupId", null));
817 }
818 }
819 catch (Exception e) {
820 }
821
822 return 0;
823 }
824
825 protected String getExportDataRootElementString(Element rootElement) {
826 if (rootElement == null) {
827 return StringPool.BLANK;
828 }
829
830 try {
831 Document document = rootElement.getDocument();
832
833 return document.formattedString();
834 }
835 catch (IOException ioe) {
836 return StringPool.BLANK;
837 }
838 }
839
840 protected long getExportModelCount(
841 ManifestSummary manifestSummary,
842 PortletDataHandlerControl[] portletDataHandlerControls) {
843
844 long totalModelCount = -1;
845
846 for (PortletDataHandlerControl portletDataHandlerControl :
847 portletDataHandlerControls) {
848
849 long modelCount = manifestSummary.getModelAdditionCount(
850 portletDataHandlerControl.getClassName(),
851 portletDataHandlerControl.getReferrerClassName());
852
853 if (portletDataHandlerControl
854 instanceof PortletDataHandlerBoolean) {
855
856 PortletDataHandlerBoolean portletDataHandlerBoolean =
857 (PortletDataHandlerBoolean)portletDataHandlerControl;
858
859 PortletDataHandlerControl[] childPortletDataHandlerControls =
860 portletDataHandlerBoolean.getChildren();
861
862 if (childPortletDataHandlerControls != null) {
863 long childModelCount = getExportModelCount(
864 manifestSummary, childPortletDataHandlerControls);
865
866 if (childModelCount != -1) {
867 if (modelCount == -1) {
868 modelCount = childModelCount;
869 }
870 else {
871 modelCount += childModelCount;
872 }
873 }
874 }
875 }
876
877 if (modelCount == -1) {
878 continue;
879 }
880
881 if (totalModelCount == -1) {
882 totalModelCount = modelCount;
883 }
884 else {
885 totalModelCount += modelCount;
886 }
887 }
888
889 return totalModelCount;
890 }
891
892
895 @Deprecated
896 protected void setAlwaysExportable(boolean alwaysExportable) {
897 }
898
899
902 @Deprecated
903 protected void setAlwaysStaged(boolean alwaysStaged) {
904 }
905
906 protected void setDataAlwaysStaged(boolean dataAlwaysStaged) {
907 _dataAlwaysStaged = dataAlwaysStaged;
908 }
909
910 protected void setDataLevel(DataLevel dataLevel) {
911 _dataLevel = dataLevel;
912 }
913
914 protected void setDataLocalized(boolean dataLocalized) {
915 _dataLocalized = dataLocalized;
916 }
917
918 protected void setDataPortletPreferences(String... dataPortletPreferences) {
919 _dataPortletPreferences = dataPortletPreferences;
920 }
921
922 protected void setDeletionSystemEventStagedModelTypes(
923 StagedModelType... deletionSystemEventStagedModelTypes) {
924
925 _deletionSystemEventStagedModelTypes =
926 deletionSystemEventStagedModelTypes;
927 }
928
929 protected void setExportControls(
930 PortletDataHandlerControl... exportControls) {
931
932 _exportControls = exportControls;
933
934 setImportControls(exportControls);
935 }
936
937 protected void setExportMetadataControls(
938 PortletDataHandlerControl... exportMetadataControls) {
939
940 _exportMetadataControls = exportMetadataControls;
941
942 setImportMetadataControls(exportMetadataControls);
943 }
944
945 protected void setImportControls(
946 PortletDataHandlerControl... importControls) {
947
948 _importControls = importControls;
949 }
950
951 protected void setImportMetadataControls(
952 PortletDataHandlerControl... importMetadataControls) {
953
954 _importMetadataControls = importMetadataControls;
955 }
956
957 protected void setPublishToLiveByDefault(boolean publishToLiveByDefault) {
958 _publishToLiveByDefault = publishToLiveByDefault;
959 }
960
961 protected void setSupportsDataStrategyCopyAsNew(
962 boolean supportsDataStrategyCopyAsNew) {
963
964 _supportsDataStrategyCopyAsNew = supportsDataStrategyCopyAsNew;
965 }
966
967 private static Log _log = LogFactoryUtil.getLog(
968 BasePortletDataHandler.class);
969
970 private boolean _dataAlwaysStaged;
971 private DataLevel _dataLevel = DataLevel.SITE;
972 private boolean _dataLocalized;
973 private String[] _dataPortletPreferences = StringPool.EMPTY_ARRAY;
974 private StagedModelType[] _deletionSystemEventStagedModelTypes =
975 new StagedModelType[0];
976 private PortletDataHandlerControl[] _exportControls =
977 new PortletDataHandlerControl[0];
978 private PortletDataHandlerControl[] _exportMetadataControls =
979 new PortletDataHandlerControl[0];
980 private PortletDataHandlerControl[] _importControls =
981 new PortletDataHandlerControl[0];
982 private PortletDataHandlerControl[] _importMetadataControls =
983 new PortletDataHandlerControl[0];
984 private String _portletId;
985 private boolean _publishToLiveByDefault;
986 private boolean _supportsDataStrategyCopyAsNew = true;
987
988 }