001
014
015 package com.liferay.portlet.documentlibrary.asset;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.repository.model.FileEntry;
019 import com.liferay.portal.kernel.repository.model.FileVersion;
020 import com.liferay.portal.service.ClassNameLocalServiceUtil;
021 import com.liferay.portlet.asset.model.BaseDDMFieldReader;
022 import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadata;
023 import com.liferay.portlet.documentlibrary.service.DLFileEntryMetadataLocalServiceUtil;
024 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
025 import com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalServiceUtil;
026 import com.liferay.portlet.dynamicdatamapping.storage.Field;
027 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
028 import com.liferay.portlet.dynamicdatamapping.storage.StorageEngineUtil;
029
030 import java.util.List;
031
032
035 public class DLFileEntryDDMFieldReader extends BaseDDMFieldReader {
036
037 public DLFileEntryDDMFieldReader(
038 FileEntry dlFileEntry, FileVersion fileVersion) {
039
040 _fileEntry = dlFileEntry;
041 _fileVersion = fileVersion;
042 }
043
044 @Override
045 public Fields getFields() throws PortalException {
046 Fields fields = new Fields();
047
048 long classNameId = ClassNameLocalServiceUtil.getClassNameId(
049 DLFileEntryMetadata.class);
050
051 List<DDMStructure> ddmStructures =
052 DDMStructureLocalServiceUtil.getClassStructures(
053 _fileEntry.getCompanyId(), classNameId);
054
055 for (DDMStructure ddmStructure : ddmStructures) {
056 DLFileEntryMetadata dlFileEntryMetadata =
057 DLFileEntryMetadataLocalServiceUtil.fetchFileEntryMetadata(
058 ddmStructure.getStructureId(),
059 _fileVersion.getFileVersionId());
060
061 if (dlFileEntryMetadata == null) {
062 continue;
063 }
064
065 Fields ddmStorageFields = StorageEngineUtil.getFields(
066 dlFileEntryMetadata.getDDMStorageId());
067
068 for (Field ddmStorageField : ddmStorageFields) {
069 fields.put(ddmStorageField);
070 }
071 }
072
073 return fields;
074 }
075
076 private final FileEntry _fileEntry;
077 private final FileVersion _fileVersion;
078
079 }