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 portletDataContext.addDeletionSystemEventStagedModelTypes(
328 getDeletionSystemEventStagedModelTypes());
329
330 return doImportData(
331 portletDataContext, portletId, portletPreferences, data);
332 }
333 catch (PortletDataException pde) {
334 throw pde;
335 }
336 catch (Exception e) {
337 throw new PortletDataException(e);
338 }
339 finally {
340 portletDataContext.setSourceGroupId(sourceGroupId);
341
342 if (_log.isInfoEnabled()) {
343 long duration = System.currentTimeMillis() - startTime;
344
345 _log.info("Imported portlet in " + Time.getDuration(duration));
346 }
347 }
348 }
349
350 @Override
351 public boolean isDataLocalized() {
352 return _dataLocalized;
353 }
354
355 @Override
356 public boolean isDataPortalLevel() {
357 return _dataLevel.equals(DataLevel.PORTAL);
358 }
359
360 @Override
361 public boolean isDataPortletInstanceLevel() {
362 return _dataLevel.equals(DataLevel.PORTLET_INSTANCE);
363 }
364
365 @Override
366 public boolean isDataSiteLevel() {
367 return _dataLevel.equals(DataLevel.SITE);
368 }
369
370 @Override
371 public boolean isDisplayPortlet() {
372 if (isDataPortletInstanceLevel() &&
373 !ArrayUtil.isEmpty(getDataPortletPreferences())) {
374
375 return true;
376 }
377
378 return false;
379 }
380
381 @Override
382 public boolean isPublishToLiveByDefault() {
383 return _publishToLiveByDefault;
384 }
385
386 @Override
387 public boolean isSupportsDataStrategyCopyAsNew() {
388 return _supportsDataStrategyCopyAsNew;
389 }
390
391 @Override
392 public void prepareManifestSummary(PortletDataContext portletDataContext)
393 throws PortletDataException {
394
395 prepareManifestSummary(portletDataContext, null);
396 }
397
398 @Override
399 public void prepareManifestSummary(
400 PortletDataContext portletDataContext,
401 PortletPreferences portletPreferences)
402 throws PortletDataException {
403
404 try {
405 doPrepareManifestSummary(portletDataContext, portletPreferences);
406 }
407 catch (PortletDataException pde) {
408 throw pde;
409 }
410 catch (Exception e) {
411 throw new PortletDataException(e);
412 }
413 }
414
415 @Override
416 public PortletPreferences processExportPortletPreferences(
417 PortletDataContext portletDataContext, String portletId,
418 PortletPreferences portletPreferences)
419 throws PortletDataException {
420
421 String displayStyle = getDisplayTemplate(
422 portletDataContext, portletId, portletPreferences);
423
424 if (Validator.isNotNull(displayStyle) &&
425 displayStyle.startsWith(
426 PortletDisplayTemplate.DISPLAY_STYLE_PREFIX)) {
427
428 long displayStyleGroupId = getDisplayTemplateGroupId(
429 portletDataContext, portletId, portletPreferences);
430
431 long previousScopeGroupId = portletDataContext.getScopeGroupId();
432
433 if (displayStyleGroupId != portletDataContext.getScopeGroupId()) {
434 portletDataContext.setScopeGroupId(displayStyleGroupId);
435 }
436
437 DDMTemplate ddmTemplate =
438 PortletDisplayTemplateUtil.fetchDDMTemplate(
439 portletDataContext.getGroupId(), displayStyle);
440
441 if (ddmTemplate != null) {
442 StagedModelDataHandlerUtil.exportReferenceStagedModel(
443 portletDataContext, portletId, ddmTemplate);
444 }
445
446 portletDataContext.setScopeGroupId(previousScopeGroupId);
447 }
448
449 try {
450 return doProcessExportPortletPreferences(
451 portletDataContext, portletId, portletPreferences);
452 }
453 catch (PortletDataException pde) {
454 throw pde;
455 }
456 catch (Exception e) {
457 throw new PortletDataException(e);
458 }
459 }
460
461 @Override
462 public PortletPreferences processImportPortletPreferences(
463 PortletDataContext portletDataContext, String portletId,
464 PortletPreferences portletPreferences)
465 throws PortletDataException {
466
467 try {
468 String displayStyle = getDisplayTemplate(
469 portletDataContext, portletId, portletPreferences);
470
471 if (Validator.isNotNull(displayStyle) &&
472 displayStyle.startsWith(
473 PortletDisplayTemplate.DISPLAY_STYLE_PREFIX)) {
474
475 DDMTemplate ddmTemplate = null;
476
477 long displayStyleGroupId = getDisplayTemplateGroupId(
478 portletDataContext, portletId, portletPreferences);
479
480 if (displayStyleGroupId ==
481 portletDataContext.getSourceCompanyGroupId()) {
482
483 Element importDataRootElement =
484 portletDataContext.getImportDataRootElement();
485
486 Element referencesElement = importDataRootElement.element(
487 "references");
488
489 List<Element> referenceElements =
490 referencesElement.elements();
491
492 String ddmTemplateUuid =
493 PortletDisplayTemplateUtil.getDDMTemplateUuid(
494 displayStyle);
495
496 boolean preloaded = false;
497 long referenceClassNameId = 0;
498 String templateKey = null;
499
500 for (Element referenceElement : referenceElements) {
501 String className = referenceElement.attributeValue(
502 "class-name");
503 String uuid = referenceElement.attributeValue("uuid");
504
505 if (!className.equals(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 if (!preloaded) {
523 ddmTemplate =
524 PortletDisplayTemplateUtil.fetchDDMTemplate(
525 portletDataContext.getCompanyGroupId(),
526 displayStyle);
527 }
528 else {
529 ddmTemplate = DDMTemplateLocalServiceUtil.fetchTemplate(
530 portletDataContext.getCompanyGroupId(),
531 referenceClassNameId, templateKey);
532 }
533 }
534 else if (displayStyleGroupId ==
535 portletDataContext.getSourceGroupId()) {
536
537 ddmTemplate = PortletDisplayTemplateUtil.fetchDDMTemplate(
538 portletDataContext.getScopeGroupId(), displayStyle);
539 }
540 else {
541 ddmTemplate = PortletDisplayTemplateUtil.fetchDDMTemplate(
542 displayStyleGroupId, displayStyle);
543 }
544
545 long importedDisplayStyleGroupId =
546 portletDataContext.getScopeGroupId();
547
548 if (ddmTemplate == null) {
549 String ddmTemplateUuid =
550 PortletDisplayTemplateUtil.getDDMTemplateUuid(
551 displayStyle);
552
553 Element ddmTemplateElement =
554 portletDataContext.getImportDataElement(
555 DDMTemplate.class.getSimpleName(), "uuid",
556 ddmTemplateUuid);
557
558 String ddmTemplatePath = ddmTemplateElement.attributeValue(
559 "path");
560
561 ddmTemplate =
562 (DDMTemplate)portletDataContext.getZipEntryAsObject(
563 ddmTemplatePath);
564
565 if (ddmTemplate != null) {
566 StagedModelDataHandlerUtil.importStagedModel(
567 portletDataContext, ddmTemplate);
568 }
569 }
570 else {
571 importedDisplayStyleGroupId = ddmTemplate.getGroupId();
572 }
573
574 portletPreferences.setValue(
575 "displayStyleGroupId",
576 String.valueOf(importedDisplayStyleGroupId));
577 }
578 else {
579 portletPreferences.setValue(
580 "displayStyleGroupId", StringPool.BLANK);
581 }
582
583 return doProcessImportPortletPreferences(
584 portletDataContext, portletId, portletPreferences);
585 }
586 catch (PortletDataException pde) {
587 throw pde;
588 }
589 catch (Exception e) {
590 throw new PortletDataException(e);
591 }
592 }
593
594 @Override
595 public void setPortletId(String portletId) {
596 _portletId = portletId;
597 }
598
599 protected Element addExportDataRootElement(
600 PortletDataContext portletDataContext) {
601
602 Document document = SAXReaderUtil.createDocument();
603
604 Class<?> clazz = getClass();
605
606 Element rootElement = document.addElement(clazz.getSimpleName());
607
608 portletDataContext.setExportDataRootElement(rootElement);
609
610 return rootElement;
611 }
612
613 protected Element addImportDataRootElement(
614 PortletDataContext portletDataContext, String data)
615 throws DocumentException {
616
617 Document document = SAXReaderUtil.read(data);
618
619 Element rootElement = document.getRootElement();
620
621 portletDataContext.setImportDataRootElement(rootElement);
622
623 long groupId = GetterUtil.getLong(
624 rootElement.attributeValue("group-id"));
625
626 if (groupId != 0) {
627 portletDataContext.setSourceGroupId(groupId);
628 }
629
630 return rootElement;
631 }
632
633 protected void addUncheckedModelAdditionCount(
634 PortletDataContext portletDataContext,
635 PortletDataHandlerControl portletDataHandlerControl) {
636
637 if (!(portletDataHandlerControl instanceof PortletDataHandlerBoolean)) {
638 return;
639 }
640
641 PortletDataHandlerBoolean portletDataHandlerBoolean =
642 (PortletDataHandlerBoolean)portletDataHandlerControl;
643
644 PortletDataHandlerControl[] childPortletDataHandlerControls =
645 portletDataHandlerBoolean.getChildren();
646
647 if (childPortletDataHandlerControls != null) {
648 for (PortletDataHandlerControl childPortletDataHandlerControl :
649 childPortletDataHandlerControls) {
650
651 addUncheckedModelAdditionCount(
652 portletDataContext, childPortletDataHandlerControl);
653 }
654 }
655
656 if (Validator.isNull(portletDataHandlerControl.getClassName())) {
657 return;
658 }
659
660 boolean checkedControl = GetterUtil.getBoolean(
661 portletDataContext.getBooleanParameter(
662 portletDataHandlerControl.getNamespace(),
663 portletDataHandlerControl.getControlName(), false));
664
665 if (!checkedControl) {
666 ManifestSummary manifestSummary =
667 portletDataContext.getManifestSummary();
668
669 String manifestSummaryKey = ManifestSummary.getManifestSummaryKey(
670 portletDataHandlerControl.getClassName(),
671 portletDataHandlerBoolean.getReferrerClassName());
672
673 manifestSummary.addModelAdditionCount(manifestSummaryKey, 0);
674 }
675 }
676
677 protected PortletPreferences doDeleteData(
678 PortletDataContext portletDataContext, String portletId,
679 PortletPreferences portletPreferences)
680 throws Exception {
681
682 return portletPreferences;
683 }
684
685 protected String doExportData(
686 PortletDataContext portletDataContext, String portletId,
687 PortletPreferences portletPreferences)
688 throws Exception {
689
690 return null;
691 }
692
693 protected PortletPreferences doImportData(
694 PortletDataContext portletDataContext, String portletId,
695 PortletPreferences portletPreferences, String data)
696 throws Exception {
697
698 return null;
699 }
700
701 protected void doPrepareManifestSummary(
702 PortletDataContext portletDataContext,
703 PortletPreferences portletPreferences)
704 throws Exception {
705 }
706
707 protected PortletPreferences doProcessExportPortletPreferences(
708 PortletDataContext portletDataContext, String portletId,
709 PortletPreferences portletPreferences)
710 throws Exception {
711
712 return portletPreferences;
713 }
714
715 protected PortletPreferences doProcessImportPortletPreferences(
716 PortletDataContext portletDataContext, String portletId,
717 PortletPreferences portletPreferences)
718 throws Exception {
719
720 return portletPreferences;
721 }
722
723 protected String getDisplayTemplate(
724 PortletDataContext portletDataContext, String portletId,
725 PortletPreferences portletPreferences) {
726
727 try {
728 Portlet portlet = PortletLocalServiceUtil.getPortletById(
729 portletDataContext.getCompanyId(), portletId);
730
731 if (Validator.isNotNull(portlet.getTemplateHandlerClass())) {
732 return portletPreferences.getValue("displayStyle", null);
733 }
734 }
735 catch (Exception e) {
736 }
737
738 return null;
739 }
740
741 protected long getDisplayTemplateGroupId(
742 PortletDataContext portletDataContext, String portletId,
743 PortletPreferences portletPreferences) {
744
745 try {
746 Portlet portlet = PortletLocalServiceUtil.getPortletById(
747 portletDataContext.getCompanyId(), portletId);
748
749 if (Validator.isNotNull(portlet.getTemplateHandlerClass())) {
750 return GetterUtil.getLong(
751 portletPreferences.getValue("displayStyleGroupId", null));
752 }
753 }
754 catch (Exception e) {
755 }
756
757 return 0;
758 }
759
760 protected String getExportDataRootElementString(Element rootElement) {
761 if (rootElement == null) {
762 return StringPool.BLANK;
763 }
764
765 try {
766 Document document = rootElement.getDocument();
767
768 return document.formattedString();
769 }
770 catch (IOException ioe) {
771 return StringPool.BLANK;
772 }
773 }
774
775 protected long getExportModelCount(
776 ManifestSummary manifestSummary,
777 PortletDataHandlerControl[] portletDataHandlerControls) {
778
779 long totalModelCount = -1;
780
781 for (PortletDataHandlerControl portletDataHandlerControl :
782 portletDataHandlerControls) {
783
784 long modelCount = manifestSummary.getModelAdditionCount(
785 portletDataHandlerControl.getClassName(),
786 portletDataHandlerControl.getReferrerClassName());
787
788 if (portletDataHandlerControl
789 instanceof PortletDataHandlerBoolean) {
790
791 PortletDataHandlerBoolean portletDataHandlerBoolean =
792 (PortletDataHandlerBoolean)portletDataHandlerControl;
793
794 PortletDataHandlerControl[] childPortletDataHandlerControls =
795 portletDataHandlerBoolean.getChildren();
796
797 if (childPortletDataHandlerControls != null) {
798 long childModelCount = getExportModelCount(
799 manifestSummary, childPortletDataHandlerControls);
800
801 if (childModelCount != -1) {
802 if (modelCount == -1) {
803 modelCount = childModelCount;
804 }
805 else {
806 modelCount += childModelCount;
807 }
808 }
809 }
810 }
811
812 if (modelCount == -1) {
813 continue;
814 }
815
816 if (totalModelCount == -1) {
817 totalModelCount = modelCount;
818 }
819 else {
820 totalModelCount += modelCount;
821 }
822 }
823
824 return totalModelCount;
825 }
826
827
830 protected void setAlwaysExportable(boolean alwaysExportable) {
831 }
832
833
836 protected void setAlwaysStaged(boolean alwaysStaged) {
837 }
838
839 protected void setDataLevel(DataLevel dataLevel) {
840 _dataLevel = dataLevel;
841 }
842
843 protected void setDataLocalized(boolean dataLocalized) {
844 _dataLocalized = dataLocalized;
845 }
846
847 protected void setDataPortletPreferences(String... dataPortletPreferences) {
848 _dataPortletPreferences = dataPortletPreferences;
849 }
850
851 protected void setDeletionSystemEventStagedModelTypes(
852 StagedModelType... deletionSystemEventStagedModelTypes) {
853
854 _deletionSystemEventStagedModelTypes =
855 deletionSystemEventStagedModelTypes;
856 }
857
858 protected void setExportControls(
859 PortletDataHandlerControl... exportControls) {
860
861 _exportControls = exportControls;
862
863 setImportControls(exportControls);
864 }
865
866 protected void setExportMetadataControls(
867 PortletDataHandlerControl... exportMetadataControls) {
868
869 _exportMetadataControls = exportMetadataControls;
870
871 setImportMetadataControls(exportMetadataControls);
872 }
873
874 protected void setImportControls(
875 PortletDataHandlerControl... importControls) {
876
877 _importControls = importControls;
878 }
879
880 protected void setImportMetadataControls(
881 PortletDataHandlerControl... importMetadataControls) {
882
883 _importMetadataControls = importMetadataControls;
884 }
885
886 protected void setPublishToLiveByDefault(boolean publishToLiveByDefault) {
887 _publishToLiveByDefault = publishToLiveByDefault;
888 }
889
890 protected void setSupportsDataStrategyCopyAsNew(
891 boolean supportsDataStrategyCopyAsNew) {
892
893 _supportsDataStrategyCopyAsNew = supportsDataStrategyCopyAsNew;
894 }
895
896 private static Log _log = LogFactoryUtil.getLog(
897 BasePortletDataHandler.class);
898
899 private DataLevel _dataLevel = DataLevel.SITE;
900 private boolean _dataLocalized;
901 private String[] _dataPortletPreferences = StringPool.EMPTY_ARRAY;
902 private StagedModelType[] _deletionSystemEventStagedModelTypes =
903 new StagedModelType[0];
904 private PortletDataHandlerControl[] _exportControls =
905 new PortletDataHandlerControl[0];
906 private PortletDataHandlerControl[] _exportMetadataControls =
907 new PortletDataHandlerControl[0];
908 private PortletDataHandlerControl[] _importControls =
909 new PortletDataHandlerControl[0];
910 private PortletDataHandlerControl[] _importMetadataControls =
911 new PortletDataHandlerControl[0];
912 private String _portletId;
913 private boolean _publishToLiveByDefault;
914 private boolean _supportsDataStrategyCopyAsNew = true;
915
916 }