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 List<Element> referenceElements =
487 referencesElement.elements();
488
489 String ddmTemplateUuid =
490 PortletDisplayTemplateUtil.getDDMTemplateUuid(
491 displayStyle);
492
493 boolean preloaded = false;
494 long referenceClassNameId = 0;
495 String templateKey = null;
496
497 for (Element referenceElement : referenceElements) {
498 String className = referenceElement.attributeValue(
499 "class-name");
500 String uuid = referenceElement.attributeValue("uuid");
501
502 if (!className.equals(DDMTemplate.class.getName()) ||
503 !uuid.equals(ddmTemplateUuid)) {
504
505 continue;
506 }
507
508 preloaded = GetterUtil.getBoolean(
509 referenceElement.attributeValue("preloaded"));
510 referenceClassNameId = PortalUtil.getClassNameId(
511 referenceElement.attributeValue(
512 "referenced-class-name"));
513 templateKey = referenceElement.attributeValue(
514 "template-key");
515
516 break;
517 }
518
519 if (!preloaded) {
520 ddmTemplate =
521 PortletDisplayTemplateUtil.fetchDDMTemplate(
522 portletDataContext.getCompanyGroupId(),
523 displayStyle);
524 }
525 else {
526 ddmTemplate = DDMTemplateLocalServiceUtil.fetchTemplate(
527 portletDataContext.getCompanyGroupId(),
528 referenceClassNameId, templateKey);
529 }
530 }
531 else if (displayStyleGroupId ==
532 portletDataContext.getSourceGroupId()) {
533
534 ddmTemplate = PortletDisplayTemplateUtil.fetchDDMTemplate(
535 portletDataContext.getScopeGroupId(), displayStyle);
536 }
537 else {
538 ddmTemplate = PortletDisplayTemplateUtil.fetchDDMTemplate(
539 displayStyleGroupId, displayStyle);
540 }
541
542 long importedDisplayStyleGroupId =
543 portletDataContext.getScopeGroupId();
544
545 if (ddmTemplate == null) {
546 String ddmTemplateUuid =
547 PortletDisplayTemplateUtil.getDDMTemplateUuid(
548 displayStyle);
549
550 Element ddmTemplateElement =
551 portletDataContext.getImportDataElement(
552 DDMTemplate.class.getSimpleName(), "uuid",
553 ddmTemplateUuid);
554
555 if (ddmTemplateElement != null) {
556 String ddmTemplatePath =
557 ddmTemplateElement.attributeValue("path");
558
559 ddmTemplate =
560 (DDMTemplate)portletDataContext.getZipEntryAsObject(
561 ddmTemplatePath);
562
563 if (ddmTemplate != null) {
564 String ddmTemplateClassName =
565 ddmTemplateElement.attributeValue("class-name");
566
567 if (Validator.isNotNull(ddmTemplateClassName)) {
568 long classNameId = PortalUtil.getClassNameId(
569 ddmTemplateClassName);
570
571 ddmTemplate.setClassNameId(classNameId);
572 }
573
574 StagedModelDataHandlerUtil.importStagedModel(
575 portletDataContext, ddmTemplate);
576 }
577 }
578 }
579 else {
580 importedDisplayStyleGroupId = ddmTemplate.getGroupId();
581 }
582
583 portletPreferences.setValue(
584 "displayStyleGroupId",
585 String.valueOf(importedDisplayStyleGroupId));
586 }
587 else {
588 portletPreferences.setValue(
589 "displayStyleGroupId", StringPool.BLANK);
590 }
591
592 return doProcessImportPortletPreferences(
593 portletDataContext, portletId, portletPreferences);
594 }
595 catch (PortletDataException pde) {
596 throw pde;
597 }
598 catch (Exception e) {
599 throw new PortletDataException(e);
600 }
601 }
602
603 @Override
604 public void setPortletId(String portletId) {
605 _portletId = portletId;
606 }
607
608 protected Element addExportDataRootElement(
609 PortletDataContext portletDataContext) {
610
611 Document document = SAXReaderUtil.createDocument();
612
613 Class<?> clazz = getClass();
614
615 Element rootElement = document.addElement(clazz.getSimpleName());
616
617 portletDataContext.setExportDataRootElement(rootElement);
618
619 return rootElement;
620 }
621
622 protected Element addImportDataRootElement(
623 PortletDataContext portletDataContext, String data)
624 throws DocumentException {
625
626 Document document = SAXReaderUtil.read(data);
627
628 Element rootElement = document.getRootElement();
629
630 portletDataContext.setImportDataRootElement(rootElement);
631
632 long groupId = GetterUtil.getLong(
633 rootElement.attributeValue("group-id"));
634
635 if (groupId != 0) {
636 portletDataContext.setSourceGroupId(groupId);
637 }
638
639 return rootElement;
640 }
641
642 protected void addUncheckedModelAdditionCount(
643 PortletDataContext portletDataContext,
644 PortletDataHandlerControl portletDataHandlerControl) {
645
646 if (!(portletDataHandlerControl instanceof PortletDataHandlerBoolean)) {
647 return;
648 }
649
650 PortletDataHandlerBoolean portletDataHandlerBoolean =
651 (PortletDataHandlerBoolean)portletDataHandlerControl;
652
653 PortletDataHandlerControl[] childPortletDataHandlerControls =
654 portletDataHandlerBoolean.getChildren();
655
656 if (childPortletDataHandlerControls != null) {
657 for (PortletDataHandlerControl childPortletDataHandlerControl :
658 childPortletDataHandlerControls) {
659
660 addUncheckedModelAdditionCount(
661 portletDataContext, childPortletDataHandlerControl);
662 }
663 }
664
665 if (Validator.isNull(portletDataHandlerControl.getClassName())) {
666 return;
667 }
668
669 boolean checkedControl = GetterUtil.getBoolean(
670 portletDataContext.getBooleanParameter(
671 portletDataHandlerControl.getNamespace(),
672 portletDataHandlerControl.getControlName(), false));
673
674 if (!checkedControl) {
675 ManifestSummary manifestSummary =
676 portletDataContext.getManifestSummary();
677
678 String manifestSummaryKey = ManifestSummary.getManifestSummaryKey(
679 portletDataHandlerControl.getClassName(),
680 portletDataHandlerBoolean.getReferrerClassName());
681
682 manifestSummary.addModelAdditionCount(manifestSummaryKey, 0);
683 }
684 }
685
686 protected PortletPreferences doDeleteData(
687 PortletDataContext portletDataContext, String portletId,
688 PortletPreferences portletPreferences)
689 throws Exception {
690
691 return portletPreferences;
692 }
693
694 protected String doExportData(
695 PortletDataContext portletDataContext, String portletId,
696 PortletPreferences portletPreferences)
697 throws Exception {
698
699 return null;
700 }
701
702 protected PortletPreferences doImportData(
703 PortletDataContext portletDataContext, String portletId,
704 PortletPreferences portletPreferences, String data)
705 throws Exception {
706
707 return null;
708 }
709
710 protected void doPrepareManifestSummary(
711 PortletDataContext portletDataContext,
712 PortletPreferences portletPreferences)
713 throws Exception {
714 }
715
716 protected PortletPreferences doProcessExportPortletPreferences(
717 PortletDataContext portletDataContext, String portletId,
718 PortletPreferences portletPreferences)
719 throws Exception {
720
721 return portletPreferences;
722 }
723
724 protected PortletPreferences doProcessImportPortletPreferences(
725 PortletDataContext portletDataContext, String portletId,
726 PortletPreferences portletPreferences)
727 throws Exception {
728
729 return portletPreferences;
730 }
731
732 protected String getDisplayTemplate(
733 PortletDataContext portletDataContext, String portletId,
734 PortletPreferences portletPreferences) {
735
736 try {
737 Portlet portlet = PortletLocalServiceUtil.getPortletById(
738 portletDataContext.getCompanyId(), portletId);
739
740 if (Validator.isNotNull(portlet.getTemplateHandlerClass())) {
741 return portletPreferences.getValue("displayStyle", null);
742 }
743 }
744 catch (Exception e) {
745 }
746
747 return null;
748 }
749
750 protected long getDisplayTemplateGroupId(
751 PortletDataContext portletDataContext, String portletId,
752 PortletPreferences portletPreferences) {
753
754 try {
755 Portlet portlet = PortletLocalServiceUtil.getPortletById(
756 portletDataContext.getCompanyId(), portletId);
757
758 if (Validator.isNotNull(portlet.getTemplateHandlerClass())) {
759 return GetterUtil.getLong(
760 portletPreferences.getValue("displayStyleGroupId", null));
761 }
762 }
763 catch (Exception e) {
764 }
765
766 return 0;
767 }
768
769 protected String getExportDataRootElementString(Element rootElement) {
770 if (rootElement == null) {
771 return StringPool.BLANK;
772 }
773
774 try {
775 Document document = rootElement.getDocument();
776
777 return document.formattedString();
778 }
779 catch (IOException ioe) {
780 return StringPool.BLANK;
781 }
782 }
783
784 protected long getExportModelCount(
785 ManifestSummary manifestSummary,
786 PortletDataHandlerControl[] portletDataHandlerControls) {
787
788 long totalModelCount = -1;
789
790 for (PortletDataHandlerControl portletDataHandlerControl :
791 portletDataHandlerControls) {
792
793 long modelCount = manifestSummary.getModelAdditionCount(
794 portletDataHandlerControl.getClassName(),
795 portletDataHandlerControl.getReferrerClassName());
796
797 if (portletDataHandlerControl
798 instanceof PortletDataHandlerBoolean) {
799
800 PortletDataHandlerBoolean portletDataHandlerBoolean =
801 (PortletDataHandlerBoolean)portletDataHandlerControl;
802
803 PortletDataHandlerControl[] childPortletDataHandlerControls =
804 portletDataHandlerBoolean.getChildren();
805
806 if (childPortletDataHandlerControls != null) {
807 long childModelCount = getExportModelCount(
808 manifestSummary, childPortletDataHandlerControls);
809
810 if (childModelCount != -1) {
811 if (modelCount == -1) {
812 modelCount = childModelCount;
813 }
814 else {
815 modelCount += childModelCount;
816 }
817 }
818 }
819 }
820
821 if (modelCount == -1) {
822 continue;
823 }
824
825 if (totalModelCount == -1) {
826 totalModelCount = modelCount;
827 }
828 else {
829 totalModelCount += modelCount;
830 }
831 }
832
833 return totalModelCount;
834 }
835
836
839 protected void setAlwaysExportable(boolean alwaysExportable) {
840 }
841
842
845 protected void setAlwaysStaged(boolean alwaysStaged) {
846 }
847
848 protected void setDataLevel(DataLevel dataLevel) {
849 _dataLevel = dataLevel;
850 }
851
852 protected void setDataLocalized(boolean dataLocalized) {
853 _dataLocalized = dataLocalized;
854 }
855
856 protected void setDataPortletPreferences(String... dataPortletPreferences) {
857 _dataPortletPreferences = dataPortletPreferences;
858 }
859
860 protected void setDeletionSystemEventStagedModelTypes(
861 StagedModelType... deletionSystemEventStagedModelTypes) {
862
863 _deletionSystemEventStagedModelTypes =
864 deletionSystemEventStagedModelTypes;
865 }
866
867 protected void setExportControls(
868 PortletDataHandlerControl... exportControls) {
869
870 _exportControls = exportControls;
871
872 setImportControls(exportControls);
873 }
874
875 protected void setExportMetadataControls(
876 PortletDataHandlerControl... exportMetadataControls) {
877
878 _exportMetadataControls = exportMetadataControls;
879
880 setImportMetadataControls(exportMetadataControls);
881 }
882
883 protected void setImportControls(
884 PortletDataHandlerControl... importControls) {
885
886 _importControls = importControls;
887 }
888
889 protected void setImportMetadataControls(
890 PortletDataHandlerControl... importMetadataControls) {
891
892 _importMetadataControls = importMetadataControls;
893 }
894
895 protected void setPublishToLiveByDefault(boolean publishToLiveByDefault) {
896 _publishToLiveByDefault = publishToLiveByDefault;
897 }
898
899 protected void setSupportsDataStrategyCopyAsNew(
900 boolean supportsDataStrategyCopyAsNew) {
901
902 _supportsDataStrategyCopyAsNew = supportsDataStrategyCopyAsNew;
903 }
904
905 private static Log _log = LogFactoryUtil.getLog(
906 BasePortletDataHandler.class);
907
908 private DataLevel _dataLevel = DataLevel.SITE;
909 private boolean _dataLocalized;
910 private String[] _dataPortletPreferences = StringPool.EMPTY_ARRAY;
911 private StagedModelType[] _deletionSystemEventStagedModelTypes =
912 new StagedModelType[0];
913 private PortletDataHandlerControl[] _exportControls =
914 new PortletDataHandlerControl[0];
915 private PortletDataHandlerControl[] _exportMetadataControls =
916 new PortletDataHandlerControl[0];
917 private PortletDataHandlerControl[] _importControls =
918 new PortletDataHandlerControl[0];
919 private PortletDataHandlerControl[] _importMetadataControls =
920 new PortletDataHandlerControl[0];
921 private String _portletId;
922 private boolean _publishToLiveByDefault;
923 private boolean _supportsDataStrategyCopyAsNew = true;
924
925 }