001
014
015 package com.liferay.portlet.documentlibrary.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.service.ServiceContext;
020 import com.liferay.portal.util.PortalUtil;
021 import com.liferay.portlet.documentlibrary.model.DLFileEntryMetadata;
022 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
023 import com.liferay.portlet.documentlibrary.service.base.DLFileEntryMetadataLocalServiceBaseImpl;
024 import com.liferay.portlet.dynamicdatamapping.StorageException;
025 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
026 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
027 import com.liferay.portlet.dynamicdatamapping.storage.StorageEngineUtil;
028
029 import java.util.List;
030 import java.util.Map;
031
032
035 public class DLFileEntryMetadataLocalServiceImpl
036 extends DLFileEntryMetadataLocalServiceBaseImpl {
037
038 public void deleteFileEntryMetadata(long fileEntryId)
039 throws PortalException, SystemException {
040
041 List<DLFileEntryMetadata> fileEntryMetadatas =
042 dlFileEntryMetadataPersistence.findByFileEntryId(fileEntryId);
043
044 for (DLFileEntryMetadata fileEntryMetadata : fileEntryMetadatas) {
045 deleteFileEntryMetadata(fileEntryMetadata);
046 }
047 }
048
049 public DLFileEntryMetadata getFileEntryMetadata(long fileEntryMetadataId)
050 throws PortalException, SystemException {
051
052 return dlFileEntryMetadataPersistence.findByPrimaryKey(
053 fileEntryMetadataId);
054 }
055
056 public DLFileEntryMetadata getFileEntryMetadata(
057 long ddmStructureId, long fileVersionId)
058 throws PortalException, SystemException {
059
060 return dlFileEntryMetadataPersistence.findByD_F(
061 ddmStructureId, fileVersionId);
062 }
063
064 public long getFileEntryMetadataCount(long fileEntryId, long fileVersionId)
065 throws SystemException {
066
067 return dlFileEntryMetadataPersistence.countByF_V(
068 fileEntryId, fileVersionId);
069 }
070
071 public void updateFileEntryMetadata(
072 long companyId, List<DDMStructure> ddmStructures,
073 long fileEntryTypeId, long fileEntryId, long fileVersionId,
074 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
075 throws PortalException, SystemException {
076
077 for (DDMStructure ddmStructure : ddmStructures) {
078 Fields fields = fieldsMap.get(ddmStructure.getStructureKey());
079
080 if (fields != null) {
081 updateFileEntryMetadata(
082 companyId, ddmStructure, fileEntryTypeId, fileEntryId,
083 fileVersionId, fields, serviceContext);
084 }
085 }
086 }
087
088 public void updateFileEntryMetadata(
089 long fileEntryTypeId, long fileEntryId, long fileVersionId,
090 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
091 throws PortalException, SystemException {
092
093 DLFileEntryType fileEntryType =
094 dlFileEntryTypeLocalService.getFileEntryType(fileEntryTypeId);
095
096 List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures();
097
098 updateFileEntryMetadata(
099 fileEntryType.getCompanyId(), ddmStructures, fileEntryTypeId,
100 fileEntryId, fileVersionId, fieldsMap, serviceContext);
101 }
102
103 protected void deleteFileEntryMetadata(
104 DLFileEntryMetadata fileEntryMetadata)
105 throws PortalException, SystemException {
106
107
108
109 dlFileEntryMetadataPersistence.remove(fileEntryMetadata);
110
111
112
113 StorageEngineUtil.deleteByClass(fileEntryMetadata.getDDMStorageId());
114
115
116
117 ddmStructureLinkLocalService.deleteClassStructureLink(
118 fileEntryMetadata.getFileEntryMetadataId());
119 }
120
121 protected void updateFileEntryMetadata(
122 long companyId, DDMStructure ddmStructure, long fileEntryTypeId,
123 long fileEntryId, long fileVersionId, Fields fields,
124 ServiceContext serviceContext)
125 throws StorageException, SystemException {
126
127 DLFileEntryMetadata fileEntryMetadata =
128 dlFileEntryMetadataPersistence.fetchByD_F(
129 ddmStructure.getStructureId(), fileVersionId);
130
131 if (fileEntryMetadata != null) {
132 StorageEngineUtil.update(
133 fileEntryMetadata.getDDMStorageId(), fields, serviceContext);
134 }
135 else {
136
137
138
139 long fileEntryMetadataId = counterLocalService.increment();
140
141 fileEntryMetadata =
142 dlFileEntryMetadataPersistence.create(fileEntryMetadataId);
143
144 long ddmStorageId = StorageEngineUtil.create(
145 companyId, ddmStructure.getStructureId(), fields,
146 serviceContext);
147
148 fileEntryMetadata.setDDMStorageId(ddmStorageId);
149
150 fileEntryMetadata.setDDMStructureId(ddmStructure.getStructureId());
151 fileEntryMetadata.setFileEntryTypeId(fileEntryTypeId);
152 fileEntryMetadata.setFileEntryId(fileEntryId);
153 fileEntryMetadata.setFileVersionId(fileVersionId);
154
155 dlFileEntryMetadataPersistence.update(fileEntryMetadata, false);
156
157
158
159 long classNameId = PortalUtil.getClassNameId(
160 DLFileEntryMetadata.class);
161
162 ddmStructureLinkLocalService.addStructureLink(
163 classNameId, fileEntryMetadata.getFileEntryMetadataId(),
164 ddmStructure.getStructureId(), serviceContext);
165 }
166 }
167
168 }