001
014
015 package com.liferay.portlet.documentlibrary.lar;
016
017 import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
018 import com.liferay.portal.kernel.dao.orm.Disjunction;
019 import com.liferay.portal.kernel.dao.orm.DynamicQuery;
020 import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
021 import com.liferay.portal.kernel.dao.orm.ExportActionableDynamicQuery;
022 import com.liferay.portal.kernel.dao.orm.ProjectionFactoryUtil;
023 import com.liferay.portal.kernel.dao.orm.Property;
024 import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
025 import com.liferay.portal.kernel.dao.orm.QueryDefinition;
026 import com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil;
027 import com.liferay.portal.kernel.exception.PortalException;
028 import com.liferay.portal.kernel.lar.BasePortletDataHandler;
029 import com.liferay.portal.kernel.lar.ExportImportHelperUtil;
030 import com.liferay.portal.kernel.lar.ManifestSummary;
031 import com.liferay.portal.kernel.lar.PortletDataContext;
032 import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
033 import com.liferay.portal.kernel.lar.PortletDataHandlerControl;
034 import com.liferay.portal.kernel.lar.StagedModelDataHandler;
035 import com.liferay.portal.kernel.lar.StagedModelDataHandlerRegistryUtil;
036 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
037 import com.liferay.portal.kernel.lar.StagedModelType;
038 import com.liferay.portal.kernel.lar.xstream.XStreamAliasRegistryUtil;
039 import com.liferay.portal.kernel.lar.xstream.XStreamConverterRegistryUtil;
040 import com.liferay.portal.kernel.log.Log;
041 import com.liferay.portal.kernel.log.LogFactoryUtil;
042 import com.liferay.portal.kernel.repository.model.FileEntry;
043 import com.liferay.portal.kernel.repository.model.Folder;
044 import com.liferay.portal.kernel.util.GetterUtil;
045 import com.liferay.portal.kernel.util.MapUtil;
046 import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
047 import com.liferay.portal.kernel.util.StringPool;
048 import com.liferay.portal.kernel.workflow.WorkflowConstants;
049 import com.liferay.portal.kernel.xml.Element;
050 import com.liferay.portal.model.Repository;
051 import com.liferay.portal.model.impl.RepositoryEntryImpl;
052 import com.liferay.portal.model.impl.RepositoryImpl;
053 import com.liferay.portal.repository.liferayrepository.LiferayRepository;
054 import com.liferay.portal.service.RepositoryLocalServiceUtil;
055 import com.liferay.portal.util.PortalUtil;
056 import com.liferay.portal.util.PropsValues;
057 import com.liferay.portlet.documentlibrary.lar.xstream.FileEntryConverter;
058 import com.liferay.portlet.documentlibrary.lar.xstream.FileVersionConverter;
059 import com.liferay.portlet.documentlibrary.lar.xstream.FolderConverter;
060 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
061 import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
062 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
063 import com.liferay.portlet.documentlibrary.model.DLFileRank;
064 import com.liferay.portlet.documentlibrary.model.DLFileShortcut;
065 import com.liferay.portlet.documentlibrary.model.DLFileVersion;
066 import com.liferay.portlet.documentlibrary.model.DLFolder;
067 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
068 import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryImpl;
069 import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryTypeImpl;
070 import com.liferay.portlet.documentlibrary.model.impl.DLFileShortcutImpl;
071 import com.liferay.portlet.documentlibrary.model.impl.DLFolderImpl;
072 import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
073 import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
074 import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalServiceUtil;
075 import com.liferay.portlet.documentlibrary.service.DLFileShortcutLocalServiceUtil;
076 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
077 import com.liferay.portlet.documentlibrary.service.permission.DLPermission;
078 import com.liferay.portlet.documentlibrary.util.DLConstants;
079
080 import java.util.List;
081 import java.util.Map;
082
083 import javax.portlet.PortletPreferences;
084
085
092 public class DLPortletDataHandler extends BasePortletDataHandler {
093
094 public static final String NAMESPACE = "document_library";
095
096 public DLPortletDataHandler() {
097 setDataLocalized(true);
098 setDataPortletPreferences("rootFolderId");
099 setDeletionSystemEventStagedModelTypes(
100 new StagedModelType(DLFileEntryType.class),
101 new StagedModelType(DLFileRank.class),
102 new StagedModelType(DLFileShortcut.class),
103 new StagedModelType(DLFileEntryConstants.getClassName()),
104 new StagedModelType(DLFolderConstants.getClassName()),
105 new StagedModelType(Repository.class));
106 setExportControls(
107 new PortletDataHandlerBoolean(
108 NAMESPACE, "repositories", true, false, null,
109 Repository.class.getName()),
110 new PortletDataHandlerBoolean(
111 NAMESPACE, "folders", true, false, null,
112 DLFolderConstants.getClassName()),
113 new PortletDataHandlerBoolean(
114 NAMESPACE, "documents", true, false,
115 new PortletDataHandlerControl[] {
116 new PortletDataHandlerBoolean(
117 NAMESPACE, "previews-and-thumbnails")
118 },
119 DLFileEntryConstants.getClassName()),
120 new PortletDataHandlerBoolean(
121 NAMESPACE, "document-types", true, false, null,
122 DLFileEntryType.class.getName()),
123 new PortletDataHandlerBoolean(
124 NAMESPACE, "shortcuts", true, false, null,
125 DLFileShortcut.class.getName()));
126 setPublishToLiveByDefault(PropsValues.DL_PUBLISH_TO_LIVE_BY_DEFAULT);
127
128 XStreamAliasRegistryUtil.register(DLFileEntryImpl.class, "DLFileEntry");
129 XStreamAliasRegistryUtil.register(
130 DLFileEntryTypeImpl.class, "DLFileEntryType");
131 XStreamAliasRegistryUtil.register(
132 DLFileShortcutImpl.class, "DLFileShortcut");
133 XStreamAliasRegistryUtil.register(DLFolderImpl.class, "DLFolder");
134 XStreamAliasRegistryUtil.register(RepositoryImpl.class, "Repository");
135 XStreamAliasRegistryUtil.register(
136 RepositoryEntryImpl.class, "RepositoryEntry");
137
138 XStreamConverterRegistryUtil.register(new FileEntryConverter());
139 XStreamConverterRegistryUtil.register(new FileVersionConverter());
140 XStreamConverterRegistryUtil.register(new FolderConverter());
141 }
142
143 @Override
144 public String getServiceName() {
145 return DLConstants.SERVICE_NAME;
146 }
147
148 @Override
149 protected PortletPreferences doDeleteData(
150 PortletDataContext portletDataContext, String portletId,
151 PortletPreferences portletPreferences)
152 throws Exception {
153
154 if (portletDataContext.addPrimaryKey(
155 DLPortletDataHandler.class, "deleteData")) {
156
157 return portletPreferences;
158 }
159
160 DLAppLocalServiceUtil.deleteAll(portletDataContext.getScopeGroupId());
161
162 return portletPreferences;
163 }
164
165 @Override
166 protected String doExportData(
167 final PortletDataContext portletDataContext, String portletId,
168 PortletPreferences portletPreferences)
169 throws Exception {
170
171 portletDataContext.addPortletPermissions(DLPermission.RESOURCE_NAME);
172
173 Element rootElement = addExportDataRootElement(portletDataContext);
174
175 rootElement.addAttribute(
176 "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
177
178 if (portletDataContext.getBooleanParameter(NAMESPACE, "folders")) {
179 ActionableDynamicQuery folderActionableDynamicQuery =
180 getFolderActionableDynamicQuery(portletDataContext);
181
182 folderActionableDynamicQuery.performActions();
183 }
184
185 if (portletDataContext.getBooleanParameter(NAMESPACE, "documents")) {
186 ActionableDynamicQuery fileEntryActionableDynamicQuery =
187 getFileEntryActionableDynamicQuery(portletDataContext);
188
189 fileEntryActionableDynamicQuery.performActions();
190 }
191
192 if (portletDataContext.getBooleanParameter(
193 NAMESPACE, "document-types")) {
194
195 ActionableDynamicQuery fileEntryTypeActionableDynamicQuery =
196 getDLFileEntryTypeActionableDynamicQuery(portletDataContext);
197
198 fileEntryTypeActionableDynamicQuery.performActions();
199 }
200
201 if (portletDataContext.getBooleanParameter(NAMESPACE, "repositories")) {
202 ActionableDynamicQuery repositoryActionableDynamicQuery =
203 getRepositoryActionableDynamicQuery(portletDataContext);
204
205 repositoryActionableDynamicQuery.performActions();
206 }
207
208 if (portletDataContext.getBooleanParameter(NAMESPACE, "shortcuts")) {
209 ActionableDynamicQuery fileShortcutActionableDynamicQuery =
210 getDLFileShortcutActionableDynamicQuery(portletDataContext);
211
212 fileShortcutActionableDynamicQuery.performActions();
213 }
214
215 return getExportDataRootElementString(rootElement);
216 }
217
218 @Override
219 protected PortletPreferences doImportData(
220 PortletDataContext portletDataContext, String portletId,
221 PortletPreferences portletPreferences, String data)
222 throws Exception {
223
224 portletDataContext.importPortletPermissions(DLPermission.RESOURCE_NAME);
225
226 if (portletDataContext.getBooleanParameter(NAMESPACE, "folders")) {
227 Element foldersElement =
228 portletDataContext.getImportDataGroupElement(DLFolder.class);
229
230 List<Element> folderElements = foldersElement.elements();
231
232 for (Element folderElement : folderElements) {
233 StagedModelDataHandlerUtil.importStagedModel(
234 portletDataContext, folderElement);
235 }
236 }
237
238 if (portletDataContext.getBooleanParameter(NAMESPACE, "documents")) {
239 Element fileEntriesElement =
240 portletDataContext.getImportDataGroupElement(DLFileEntry.class);
241
242 List<Element> fileEntryElements = fileEntriesElement.elements();
243
244 for (Element fileEntryElement : fileEntryElements) {
245 StagedModelDataHandlerUtil.importStagedModel(
246 portletDataContext, fileEntryElement);
247 }
248 }
249
250 if (portletDataContext.getBooleanParameter(
251 NAMESPACE, "document-types")) {
252
253 Element fileEntryTypesElement =
254 portletDataContext.getImportDataGroupElement(
255 DLFileEntryType.class);
256
257 List<Element> fileEntryTypeElements =
258 fileEntryTypesElement.elements();
259
260 for (Element fileEntryTypeElement : fileEntryTypeElements) {
261 StagedModelDataHandlerUtil.importStagedModel(
262 portletDataContext, fileEntryTypeElement);
263 }
264 }
265
266 if (portletDataContext.getBooleanParameter(NAMESPACE, "repositories")) {
267 Element repositoriesElement =
268 portletDataContext.getImportDataGroupElement(Repository.class);
269
270 List<Element> repositoryElements = repositoriesElement.elements();
271
272 for (Element repositoryElement : repositoryElements) {
273 StagedModelDataHandlerUtil.importStagedModel(
274 portletDataContext, repositoryElement);
275 }
276 }
277
278 if (portletDataContext.getBooleanParameter(NAMESPACE, "shortcuts")) {
279 Element fileShortcutsElement =
280 portletDataContext.getImportDataGroupElement(
281 DLFileShortcut.class);
282
283 List<Element> fileShortcutElements =
284 fileShortcutsElement.elements();
285
286 for (Element fileShortcutElement : fileShortcutElements) {
287 StagedModelDataHandlerUtil.importStagedModel(
288 portletDataContext, fileShortcutElement);
289 }
290 }
291
292 return portletPreferences;
293 }
294
295 @Override
296 protected void doPrepareManifestSummary(
297 final PortletDataContext portletDataContext,
298 PortletPreferences portletPreferences)
299 throws Exception {
300
301 ActionableDynamicQuery dlFileShortcutActionableDynamicQuery =
302 getDLFileShortcutActionableDynamicQuery(portletDataContext);
303
304 dlFileShortcutActionableDynamicQuery.performCount();
305
306 ActionableDynamicQuery fileEntryActionableDynamicQuery =
307 getFileEntryActionableDynamicQuery(portletDataContext);
308
309 fileEntryActionableDynamicQuery.performCount();
310
311 ActionableDynamicQuery fileEntryTypeActionableDynamicQuery =
312 getDLFileEntryTypeActionableDynamicQuery(portletDataContext);
313
314 fileEntryTypeActionableDynamicQuery.performCount();
315
316 ActionableDynamicQuery folderActionableDynamicQuery =
317 getFolderActionableDynamicQuery(portletDataContext);
318
319 folderActionableDynamicQuery.performCount();
320
321 ActionableDynamicQuery repositoryActionableDynamicQuery =
322 getRepositoryActionableDynamicQuery(portletDataContext);
323
324 repositoryActionableDynamicQuery.performCount();
325 }
326
327 @Override
328 protected PortletPreferences doProcessExportPortletPreferences(
329 PortletDataContext portletDataContext, String portletId,
330 PortletPreferences portletPreferences)
331 throws Exception {
332
333 long rootFolderId = GetterUtil.getLong(
334 portletPreferences.getValue("rootFolderId", null));
335
336 if (rootFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
337 Folder folder = null;
338
339 try {
340 folder = DLAppLocalServiceUtil.getFolder(rootFolderId);
341 }
342 catch (PortalException e) {
343 if (_log.isErrorEnabled()) {
344 _log.error(
345 "Portlet " + portletId +
346 " refers to an invalid root folder ID " +
347 rootFolderId);
348 }
349
350 throw e;
351 }
352
353 StagedModelDataHandlerUtil.exportReferenceStagedModel(
354 portletDataContext, portletId, folder);
355 }
356
357 return portletPreferences;
358 }
359
360 @Override
361 protected PortletPreferences doProcessImportPortletPreferences(
362 PortletDataContext portletDataContext, String portletId,
363 PortletPreferences portletPreferences)
364 throws Exception {
365
366 long rootFolderId = GetterUtil.getLong(
367 portletPreferences.getValue("rootFolderId", null));
368
369 if (rootFolderId > 0) {
370 Element foldersElement =
371 portletDataContext.getImportDataGroupElement(DLFolder.class);
372
373 List<Element> folderElements = foldersElement.elements();
374
375 if (!folderElements.isEmpty()) {
376 StagedModelDataHandlerUtil.importStagedModel(
377 portletDataContext, folderElements.get(0));
378
379 Map<Long, Long> folderIds =
380 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
381 Folder.class + ".folderIdsAndRepositoryEntryIds");
382
383 rootFolderId = MapUtil.getLong(
384 folderIds, rootFolderId, rootFolderId);
385
386 portletPreferences.setValue(
387 "rootFolderId", String.valueOf(rootFolderId));
388 }
389 }
390
391 return portletPreferences;
392 }
393
394 protected ActionableDynamicQuery getDLFileEntryTypeActionableDynamicQuery(
395 final PortletDataContext portletDataContext)
396 throws Exception {
397
398 ActionableDynamicQuery actionableDynamicQuery =
399 DLFileEntryTypeLocalServiceUtil.getExportActionableDynamicQuery(
400 portletDataContext);
401
402 final ActionableDynamicQuery.AddCriteriaMethod addCriteriaMethod =
403 actionableDynamicQuery.getAddCriteriaMethod();
404
405 actionableDynamicQuery.setAddCriteriaMethod(
406 new ActionableDynamicQuery.AddCriteriaMethod() {
407
408 @Override
409 public void addCriteria(DynamicQuery dynamicQuery) {
410 addCriteriaMethod.addCriteria(dynamicQuery);
411
412 Property property = PropertyFactoryUtil.forName("groupId");
413
414 dynamicQuery.add(
415 property.in(
416 new Long[] {
417 portletDataContext.getScopeGroupId()
418 }));
419 }
420
421 });
422 actionableDynamicQuery.setPerformActionMethod(
423 new ActionableDynamicQuery.PerformActionMethod() {
424
425 @Override
426 public void performAction(Object object)
427 throws PortalException {
428
429 DLFileEntryType dlFileEntryType = (DLFileEntryType)object;
430
431 if (dlFileEntryType.isExportable()) {
432 StagedModelDataHandlerUtil.exportStagedModel(
433 portletDataContext, dlFileEntryType);
434 }
435 }
436
437 });
438
439 return actionableDynamicQuery;
440 }
441
442 protected ActionableDynamicQuery getDLFileShortcutActionableDynamicQuery(
443 final PortletDataContext portletDataContext)
444 throws Exception {
445
446 ActionableDynamicQuery actionableDynamicQuery =
447 DLFileShortcutLocalServiceUtil.getExportActionableDynamicQuery(
448 portletDataContext);
449
450 final ActionableDynamicQuery.AddCriteriaMethod addCriteriaMethod =
451 actionableDynamicQuery.getAddCriteriaMethod();
452
453 actionableDynamicQuery.setAddCriteriaMethod(
454 new ActionableDynamicQuery.AddCriteriaMethod() {
455
456 @Override
457 public void addCriteria(DynamicQuery dynamicQuery) {
458 addCriteriaMethod.addCriteria(dynamicQuery);
459
460 Property property = PropertyFactoryUtil.forName("active");
461
462 dynamicQuery.add(property.eq(Boolean.TRUE));
463 }
464
465 });
466
467 return actionableDynamicQuery;
468 }
469
470 protected ActionableDynamicQuery getFileEntryActionableDynamicQuery(
471 final PortletDataContext portletDataContext)
472 throws Exception {
473
474 final ExportActionableDynamicQuery exportActionableDynamicQuery =
475 DLFileEntryLocalServiceUtil.getExportActionableDynamicQuery(
476 portletDataContext);
477
478 final ActionableDynamicQuery.AddCriteriaMethod addCriteriaMethod =
479 exportActionableDynamicQuery.getAddCriteriaMethod();
480
481 exportActionableDynamicQuery.setAddCriteriaMethod(
482 new ActionableDynamicQuery.AddCriteriaMethod() {
483
484 @Override
485 public void addCriteria(DynamicQuery dynamicQuery) {
486 addCriteriaMethod.addCriteria(dynamicQuery);
487
488 DynamicQuery fileVersionDynamicQuery =
489 DynamicQueryFactoryUtil.forClass(
490 DLFileVersion.class, "dlFileVersion",
491 PortalClassLoaderUtil.getClassLoader());
492
493 fileVersionDynamicQuery.setProjection(
494 ProjectionFactoryUtil.property("fileEntryId"));
495
496 fileVersionDynamicQuery.add(
497 RestrictionsFactoryUtil.eqProperty(
498 "dlFileVersion.fileEntryId", "fileEntryId"));
499 fileVersionDynamicQuery.add(
500 RestrictionsFactoryUtil.eqProperty(
501 "dlFileVersion.version", "version"));
502
503 Property statusProperty = PropertyFactoryUtil.forName(
504 "status");
505
506 StagedModelDataHandler<?> stagedModelDataHandler =
507 StagedModelDataHandlerRegistryUtil.
508 getStagedModelDataHandler(
509 DLFileEntry.class.getName());
510
511 fileVersionDynamicQuery.add(
512 statusProperty.in(
513 stagedModelDataHandler.getExportableStatuses()));
514
515 Property fileEntryIdProperty = PropertyFactoryUtil.forName(
516 "fileEntryId");
517
518 dynamicQuery.add(
519 fileEntryIdProperty.in(fileVersionDynamicQuery));
520
521 Property repositoryIdProperty = PropertyFactoryUtil.forName(
522 "repositoryId");
523
524 dynamicQuery.add(
525 repositoryIdProperty.eq(
526 portletDataContext.getScopeGroupId()));
527 }
528
529 });
530 exportActionableDynamicQuery.setPerformActionMethod(
531 new ActionableDynamicQuery.PerformActionMethod() {
532
533 @Override
534 public void performAction(Object object)
535 throws PortalException {
536
537 DLFileEntry dlFileEntry = (DLFileEntry)object;
538
539 if (dlFileEntry.isInTrash()) {
540 return;
541 }
542
543 FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(
544 dlFileEntry.getFileEntryId());
545
546 StagedModelDataHandlerUtil.exportStagedModel(
547 portletDataContext, fileEntry);
548 }
549 });
550 exportActionableDynamicQuery.setPerformCountMethod(
551 new ActionableDynamicQuery.PerformCountMethod() {
552
553 @Override
554 public long performCount() throws PortalException {
555 ManifestSummary manifestSummary =
556 portletDataContext.getManifestSummary();
557
558 long modelAdditionCount =
559 DLFileEntryLocalServiceUtil.getFileEntriesCount(
560 portletDataContext.getScopeGroupId(),
561 portletDataContext.getDateRange(),
562 portletDataContext.getScopeGroupId(),
563 new QueryDefinition<DLFileEntry>(
564 WorkflowConstants.STATUS_APPROVED));
565
566 StagedModelType stagedModelType =
567 exportActionableDynamicQuery.getStagedModelType();
568
569 manifestSummary.addModelAdditionCount(
570 stagedModelType.toString(), modelAdditionCount);
571
572 long modelDeletionCount =
573 ExportImportHelperUtil.getModelDeletionCount(
574 portletDataContext, stagedModelType);
575
576 manifestSummary.addModelDeletionCount(
577 stagedModelType.toString(), modelDeletionCount);
578
579 return modelAdditionCount;
580 }
581
582 });
583 exportActionableDynamicQuery.setStagedModelType(
584 new StagedModelType(DLFileEntryConstants.getClassName()));
585
586 return exportActionableDynamicQuery;
587 }
588
589 protected ActionableDynamicQuery getFolderActionableDynamicQuery(
590 final PortletDataContext portletDataContext)
591 throws Exception {
592
593 ExportActionableDynamicQuery exportActionableDynamicQuery =
594 DLFolderLocalServiceUtil.getExportActionableDynamicQuery(
595 portletDataContext);
596
597 final ActionableDynamicQuery.AddCriteriaMethod addCriteriaMethod =
598 exportActionableDynamicQuery.getAddCriteriaMethod();
599
600 exportActionableDynamicQuery.setAddCriteriaMethod(
601 new ActionableDynamicQuery.AddCriteriaMethod() {
602
603 @Override
604 public void addCriteria(DynamicQuery dynamicQuery) {
605 addCriteriaMethod.addCriteria(dynamicQuery);
606
607 Property property = PropertyFactoryUtil.forName(
608 "repositoryId");
609
610 dynamicQuery.add(
611 property.eq(portletDataContext.getScopeGroupId()));
612 }
613
614 });
615 exportActionableDynamicQuery.setPerformActionMethod(
616 new ActionableDynamicQuery.PerformActionMethod() {
617
618 @Override
619 public void performAction(Object object)
620 throws PortalException {
621
622 DLFolder dlFolder = (DLFolder)object;
623
624 if (dlFolder.isInTrash()) {
625 return;
626 }
627
628 Folder folder = DLAppLocalServiceUtil.getFolder(
629 dlFolder.getFolderId());
630
631 StagedModelDataHandlerUtil.exportStagedModel(
632 portletDataContext, folder);
633 }
634
635 });
636 exportActionableDynamicQuery.setStagedModelType(
637 new StagedModelType(DLFolderConstants.getClassName()));
638
639 return exportActionableDynamicQuery;
640 }
641
642 protected ActionableDynamicQuery getRepositoryActionableDynamicQuery(
643 final PortletDataContext portletDataContext)
644 throws Exception {
645
646 ExportActionableDynamicQuery exportActionableDynamicQuery =
647 RepositoryLocalServiceUtil.getExportActionableDynamicQuery(
648 portletDataContext);
649
650 final ActionableDynamicQuery.AddCriteriaMethod addCriteriaMethod =
651 exportActionableDynamicQuery.getAddCriteriaMethod();
652
653 exportActionableDynamicQuery.setAddCriteriaMethod(
654 new ActionableDynamicQuery.AddCriteriaMethod() {
655
656 @Override
657 public void addCriteria(DynamicQuery dynamicQuery) {
658 addCriteriaMethod.addCriteria(dynamicQuery);
659
660 Property classNameIdProperty = PropertyFactoryUtil.forName(
661 "classNameId");
662
663 long liferayRepositoryClassNameId =
664 PortalUtil.getClassNameId(LiferayRepository.class);
665
666 dynamicQuery.add(
667 classNameIdProperty.ne(liferayRepositoryClassNameId));
668
669 Disjunction disjunction =
670 RestrictionsFactoryUtil.disjunction();
671
672 Property portletIdProperty = PropertyFactoryUtil.forName(
673 "portletId");
674
675 disjunction.add(portletIdProperty.isNull());
676 disjunction.add(portletIdProperty.eq(StringPool.BLANK));
677
678 dynamicQuery.add(disjunction);
679 }
680
681 });
682 exportActionableDynamicQuery.setStagedModelType(
683 new StagedModelType(
684 PortalUtil.getClassNameId(Repository.class.getName()),
685 StagedModelType.REFERRER_CLASS_NAME_ID_ALL));
686
687 return exportActionableDynamicQuery;
688 }
689
690 private static final Log _log = LogFactoryUtil.getLog(
691 DLPortletDataHandler.class);
692
693 }