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.FieldConstants;
027 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
028 import com.liferay.portlet.dynamicdatamapping.storage.StorageEngineUtil;
029 import com.liferay.portlet.dynamicdatamapping.util.DDMUtil;
030
031 import java.util.List;
032 import java.util.Map;
033
034
037 public class DLFileEntryMetadataLocalServiceImpl
038 extends DLFileEntryMetadataLocalServiceBaseImpl {
039
040 public void deleteFileEntryMetadata(long fileEntryId)
041 throws PortalException, SystemException {
042
043 List<DLFileEntryMetadata> fileEntryMetadatas =
044 dlFileEntryMetadataPersistence.findByFileEntryId(fileEntryId);
045
046 for (DLFileEntryMetadata fileEntryMetadata : fileEntryMetadatas) {
047 deleteFileEntryMetadata(fileEntryMetadata);
048 }
049 }
050
051 public void deleteFileVersionFileEntryMetadata(long fileVersionId)
052 throws PortalException, SystemException {
053
054 List<DLFileEntryMetadata> fileEntryMetadatas =
055 dlFileEntryMetadataPersistence.findByFileVersionId(fileVersionId);
056
057 for (DLFileEntryMetadata fileEntryMetadata : fileEntryMetadatas) {
058 deleteFileEntryMetadata(fileEntryMetadata);
059 }
060 }
061
062 public DLFileEntryMetadata getFileEntryMetadata(long fileEntryMetadataId)
063 throws PortalException, SystemException {
064
065 return dlFileEntryMetadataPersistence.findByPrimaryKey(
066 fileEntryMetadataId);
067 }
068
069 public DLFileEntryMetadata getFileEntryMetadata(
070 long ddmStructureId, long fileVersionId)
071 throws PortalException, SystemException {
072
073 return dlFileEntryMetadataPersistence.findByD_F(
074 ddmStructureId, fileVersionId);
075 }
076
077
081 public long getFileEntryMetadataCount(long fileEntryId, long fileVersionId)
082 throws SystemException {
083
084 return getFileVersionFileEntryMetadatasCount(fileVersionId);
085 }
086
087 public List<DLFileEntryMetadata> getFileVersionFileEntryMetadatas(
088 long fileVersionId)
089 throws SystemException {
090
091 return dlFileEntryMetadataPersistence.findByFileVersionId(
092 fileVersionId);
093 }
094
095 public long getFileVersionFileEntryMetadatasCount(long fileVersionId)
096 throws SystemException {
097
098 return dlFileEntryMetadataPersistence.countByFileVersionId(
099 fileVersionId);
100 }
101
102 public void updateFileEntryMetadata(
103 long companyId, List<DDMStructure> ddmStructures,
104 long fileEntryTypeId, long fileEntryId, long fileVersionId,
105 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
106 throws PortalException, SystemException {
107
108 for (DDMStructure ddmStructure : ddmStructures) {
109 Fields fields = fieldsMap.get(ddmStructure.getStructureKey());
110
111 if (fields != null) {
112 updateFileEntryMetadata(
113 companyId, ddmStructure, fileEntryTypeId, fileEntryId,
114 fileVersionId, fields, serviceContext);
115 }
116 }
117 }
118
119 public void updateFileEntryMetadata(
120 long fileEntryTypeId, long fileEntryId, long fileVersionId,
121 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
122 throws PortalException, SystemException {
123
124 DLFileEntryType fileEntryType =
125 dlFileEntryTypeLocalService.getFileEntryType(fileEntryTypeId);
126
127 List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures();
128
129 updateFileEntryMetadata(
130 fileEntryType.getCompanyId(), ddmStructures, fileEntryTypeId,
131 fileEntryId, fileVersionId, fieldsMap, serviceContext);
132 }
133
134 protected void deleteFileEntryMetadata(
135 DLFileEntryMetadata fileEntryMetadata)
136 throws PortalException, SystemException {
137
138
139
140 dlFileEntryMetadataPersistence.remove(fileEntryMetadata);
141
142
143
144 StorageEngineUtil.deleteByClass(fileEntryMetadata.getDDMStorageId());
145
146
147
148 ddmStructureLinkLocalService.deleteClassStructureLink(
149 fileEntryMetadata.getFileEntryMetadataId());
150 }
151
152 protected void updateFileEntryMetadata(
153 long companyId, DDMStructure ddmStructure, long fileEntryTypeId,
154 long fileEntryId, long fileVersionId, Fields fields,
155 ServiceContext serviceContext)
156 throws StorageException, SystemException {
157
158 DLFileEntryMetadata fileEntryMetadata =
159 dlFileEntryMetadataPersistence.fetchByD_F(
160 ddmStructure.getStructureId(), fileVersionId);
161
162 if (fileEntryMetadata != null) {
163 StorageEngineUtil.update(
164 fileEntryMetadata.getDDMStorageId(), fields, true,
165 serviceContext);
166 }
167 else {
168
169
170
171 long fileEntryMetadataId = counterLocalService.increment();
172
173 fileEntryMetadata = dlFileEntryMetadataPersistence.create(
174 fileEntryMetadataId);
175
176 long ddmStorageId = StorageEngineUtil.create(
177 companyId, ddmStructure.getStructureId(), fields,
178 serviceContext);
179
180 fileEntryMetadata.setDDMStorageId(ddmStorageId);
181
182 fileEntryMetadata.setDDMStructureId(ddmStructure.getStructureId());
183 fileEntryMetadata.setFileEntryTypeId(fileEntryTypeId);
184 fileEntryMetadata.setFileEntryId(fileEntryId);
185 fileEntryMetadata.setFileVersionId(fileVersionId);
186
187 dlFileEntryMetadataPersistence.update(fileEntryMetadata);
188
189
190
191 long classNameId = PortalUtil.getClassNameId(
192 DLFileEntryMetadata.class);
193
194 ddmStructureLinkLocalService.addStructureLink(
195 classNameId, fileEntryMetadata.getFileEntryMetadataId(),
196 ddmStructure.getStructureId(), serviceContext);
197 }
198
199 try {
200 String namespace = String.valueOf(ddmStructure.getStructureId());
201
202 for (String fieldName : ddmStructure.getFieldNames()) {
203 String fieldDataType = ddmStructure.getFieldDataType(fieldName);
204
205 if (fieldDataType.equals(FieldConstants.FILE_UPLOAD)) {
206 DDMUtil.uploadFieldFile(
207 fileEntryMetadata.getDDMStructureId(),
208 fileEntryMetadata.getDDMStorageId(), fileEntryMetadata,
209 fieldName, namespace, serviceContext);
210 }
211 }
212 }
213 catch (Exception e) {
214 }
215 }
216
217 }