001
014
015 package com.liferay.portlet.documentlibrary.lar.lifecycle;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.search.Indexer;
020 import com.liferay.portal.kernel.search.IndexerRegistryUtil;
021 import com.liferay.portal.kernel.search.SearchException;
022 import com.liferay.portal.kernel.spring.osgi.OSGiBeanProperties;
023 import com.liferay.portal.kernel.util.ArrayUtil;
024 import com.liferay.portal.kernel.util.ListUtil;
025 import com.liferay.portal.kernel.util.MapUtil;
026 import com.liferay.portal.kernel.util.PredicateFilter;
027 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
028 import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
029 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
030 import com.liferay.portlet.exportimport.lar.PortletDataContext;
031 import com.liferay.portlet.exportimport.lifecycle.BaseExportImportLifecycleListener;
032
033 import java.util.List;
034 import java.util.Map;
035
036
039 @OSGiBeanProperties
040 public class DLIndexingExportImportLifecycleListener
041 extends BaseExportImportLifecycleListener {
042
043 @Override
044 public boolean isParallel() {
045 return true;
046 }
047
048 @Override
049 protected void onLayoutImportProcessFinished(
050 PortletDataContext portletDataContext)
051 throws Exception {
052
053 reindex(portletDataContext);
054 }
055
056 @Override
057 protected void onPortletImportProcessFinished(
058 PortletDataContext portletDataContext)
059 throws Exception {
060
061 reindex(portletDataContext);
062 }
063
064 protected void reindex(PortletDataContext portletDataContext) {
065 Map<String, Long> ddmStructureIds =
066 (Map<String, Long>)portletDataContext.getNewPrimaryKeysMap(
067 DDMStructure.class);
068
069 if (MapUtil.isEmpty(ddmStructureIds)) {
070 return;
071 }
072
073 List<DLFileEntry> dlFileEntries =
074 DLFileEntryLocalServiceUtil.getDDMStructureFileEntries(
075 portletDataContext.getGroupId(),
076 ArrayUtil.toLongArray(ddmStructureIds.values()));
077
078 final Map<Long, Long> dlFileEntryPrimaryKeysMap =
079 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
080 DLFileEntry.class);
081
082 dlFileEntries = ListUtil.filter(
083 dlFileEntries,
084 new PredicateFilter<DLFileEntry>() {
085
086 @Override
087 public boolean filter(DLFileEntry dlFileEntry) {
088 return !dlFileEntryPrimaryKeysMap.containsValue(
089 dlFileEntry.getFileEntryId());
090 }
091
092 });
093
094 Indexer dlFileEntryIndexer = IndexerRegistryUtil.getIndexer(
095 DLFileEntry.class);
096
097 if (dlFileEntryIndexer == null) {
098 return;
099 }
100
101 for (DLFileEntry dlFileEntry : dlFileEntries) {
102 try {
103 dlFileEntryIndexer.reindex(dlFileEntry);
104 }
105 catch (SearchException se) {
106 if (_log.isDebugEnabled() && (dlFileEntry != null)) {
107 _log.debug(
108 "Unable to reindex file entry " +
109 dlFileEntry.getFileEntryId(),
110 se);
111 }
112 }
113 }
114 }
115
116 private static final Log _log = LogFactoryUtil.getLog(
117 DLIndexingExportImportLifecycleListener.class);
118
119 }