001
014
015 package com.liferay.portlet.documentlibrary.util;
016
017 import com.liferay.portal.kernel.dao.orm.QueryUtil;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.messaging.DestinationNames;
021 import com.liferay.portal.kernel.messaging.MessageBusUtil;
022 import com.liferay.portal.kernel.metadata.RawMetadataProcessorUtil;
023 import com.liferay.portal.kernel.repository.model.FileEntry;
024 import com.liferay.portal.kernel.repository.model.FileVersion;
025 import com.liferay.portal.repository.liferayrepository.model.LiferayFileVersion;
026 import com.liferay.portal.service.ServiceContext;
027 import com.liferay.portal.util.PortalUtil;
028 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
029 import com.liferay.portlet.documentlibrary.service.DLFileEntryMetadataLocalServiceUtil;
030 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
031 import com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalServiceUtil;
032 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
033
034 import java.io.File;
035 import java.io.InputStream;
036
037 import java.util.List;
038 import java.util.Map;
039
040
055 public class RawMetadataProcessor implements DLProcessor {
056
057 public void cleanUp(FileEntry fileEntry) {
058 }
059
060 public void cleanUp(FileVersion fileVersion) {
061 }
062
063
071 public static void generateMetadata(FileVersion fileVersion)
072 throws PortalException, SystemException {
073
074 long fileEntryMetadataCount =
075 DLFileEntryMetadataLocalServiceUtil.getFileEntryMetadataCount(
076 fileVersion.getFileEntryId(),
077 fileVersion.getFileVersionId());
078
079 if (fileEntryMetadataCount == 0) {
080 _instance.trigger(fileVersion);
081 }
082 }
083
084 public boolean isSupported(FileVersion fileVersion) {
085 return true;
086 }
087
088 public boolean isSupported(String mimeType) {
089 return true;
090 }
091
092
105 public static void saveMetadata(FileVersion fileVersion)
106 throws PortalException, SystemException {
107
108 Map<String, Fields> rawMetadataMap = null;
109
110 if (fileVersion instanceof LiferayFileVersion) {
111 try {
112 LiferayFileVersion liferayFileVersion =
113 (LiferayFileVersion)fileVersion;
114
115 File file = liferayFileVersion.getFile(false);
116
117 rawMetadataMap = RawMetadataProcessorUtil.getRawMetadataMap(
118 fileVersion.getExtension(), fileVersion.getMimeType(),
119 file);
120 }
121 catch (UnsupportedOperationException uoe) {
122 }
123 }
124
125 if (rawMetadataMap == null) {
126 InputStream inputStream = fileVersion.getContentStream(false);
127
128 rawMetadataMap = RawMetadataProcessorUtil.getRawMetadataMap(
129 fileVersion.getExtension(), fileVersion.getMimeType(),
130 inputStream);
131 }
132
133 List<DDMStructure> ddmStructures =
134 DDMStructureLocalServiceUtil.getClassStructures(
135 PortalUtil.getClassNameId(DLFileEntry.class),
136 QueryUtil.ALL_POS, QueryUtil.ALL_POS);
137
138 ServiceContext serviceContext = new ServiceContext();
139
140 serviceContext.setScopeGroupId(fileVersion.getGroupId());
141 serviceContext.setUserId(fileVersion.getUserId());
142
143 DLFileEntryMetadataLocalServiceUtil.updateFileEntryMetadata(
144 fileVersion.getCompanyId(), ddmStructures, 0L,
145 fileVersion.getFileEntryId(), fileVersion.getFileVersionId(),
146 rawMetadataMap, serviceContext);
147 }
148
149
159 public void trigger(FileVersion fileVersion) {
160 MessageBusUtil.sendMessage(
161 DestinationNames.DOCUMENT_LIBRARY_RAW_METADATA_PROCESSOR,
162 fileVersion);
163 }
164
165 private static RawMetadataProcessor _instance = new RawMetadataProcessor();
166
167 }