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