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