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
080 public long getFileEntryMetadataCount(long fileEntryId, long fileVersionId)
081 throws SystemException {
082
083 return getFileVersionFileEntryMetadatasCount(fileVersionId);
084 }
085
086 public List<DLFileEntryMetadata> getFileVersionFileEntryMetadatas(
087 long fileVersionId)
088 throws SystemException {
089
090 return dlFileEntryMetadataPersistence.findByFileVersionId(
091 fileVersionId);
092 }
093
094 public long getFileVersionFileEntryMetadatasCount(long fileVersionId)
095 throws SystemException {
096
097 return dlFileEntryMetadataPersistence.countByFileVersionId(
098 fileVersionId);
099 }
100
101 public void updateFileEntryMetadata(
102 long companyId, List<DDMStructure> ddmStructures,
103 long fileEntryTypeId, long fileEntryId, long fileVersionId,
104 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
105 throws PortalException, SystemException {
106
107 for (DDMStructure ddmStructure : ddmStructures) {
108 Fields fields = fieldsMap.get(ddmStructure.getStructureKey());
109
110 if (fields != null) {
111 updateFileEntryMetadata(
112 companyId, ddmStructure, fileEntryTypeId, fileEntryId,
113 fileVersionId, fields, serviceContext);
114 }
115 }
116 }
117
118 public void updateFileEntryMetadata(
119 long fileEntryTypeId, long fileEntryId, long fileVersionId,
120 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
121 throws PortalException, SystemException {
122
123 DLFileEntryType fileEntryType =
124 dlFileEntryTypeLocalService.getFileEntryType(fileEntryTypeId);
125
126 List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures();
127
128 updateFileEntryMetadata(
129 fileEntryType.getCompanyId(), ddmStructures, fileEntryTypeId,
130 fileEntryId, fileVersionId, fieldsMap, serviceContext);
131 }
132
133 protected void deleteFileEntryMetadata(
134 DLFileEntryMetadata fileEntryMetadata)
135 throws PortalException, SystemException {
136
137
138
139 dlFileEntryMetadataPersistence.remove(fileEntryMetadata);
140
141
142
143 StorageEngineUtil.deleteByClass(fileEntryMetadata.getDDMStorageId());
144
145
146
147 ddmStructureLinkLocalService.deleteClassStructureLink(
148 fileEntryMetadata.getFileEntryMetadataId());
149 }
150
151 protected void updateFileEntryMetadata(
152 long companyId, DDMStructure ddmStructure, long fileEntryTypeId,
153 long fileEntryId, long fileVersionId, Fields fields,
154 ServiceContext serviceContext)
155 throws StorageException, SystemException {
156
157 DLFileEntryMetadata fileEntryMetadata =
158 dlFileEntryMetadataPersistence.fetchByD_F(
159 ddmStructure.getStructureId(), fileVersionId);
160
161 if (fileEntryMetadata != null) {
162 StorageEngineUtil.update(
163 fileEntryMetadata.getDDMStorageId(), fields, serviceContext);
164 }
165 else {
166
167
168
169 long fileEntryMetadataId = counterLocalService.increment();
170
171 fileEntryMetadata = dlFileEntryMetadataPersistence.create(
172 fileEntryMetadataId);
173
174 long ddmStorageId = StorageEngineUtil.create(
175 companyId, ddmStructure.getStructureId(), fields,
176 serviceContext);
177
178 fileEntryMetadata.setDDMStorageId(ddmStorageId);
179
180 fileEntryMetadata.setDDMStructureId(ddmStructure.getStructureId());
181 fileEntryMetadata.setFileEntryTypeId(fileEntryTypeId);
182 fileEntryMetadata.setFileEntryId(fileEntryId);
183 fileEntryMetadata.setFileVersionId(fileVersionId);
184
185 dlFileEntryMetadataPersistence.update(fileEntryMetadata);
186
187
188
189 long classNameId = PortalUtil.getClassNameId(
190 DLFileEntryMetadata.class);
191
192 ddmStructureLinkLocalService.addStructureLink(
193 classNameId, fileEntryMetadata.getFileEntryMetadataId(),
194 ddmStructure.getStructureId(), serviceContext);
195 }
196
197 try {
198 String namespace = String.valueOf(ddmStructure.getStructureId());
199
200 for (String fieldName : ddmStructure.getFieldNames()) {
201 String fieldDataType = ddmStructure.getFieldDataType(fieldName);
202
203 if (fieldDataType.equals(FieldConstants.FILE_UPLOAD)) {
204 DDMUtil.uploadFieldFile(
205 fileEntryMetadata.getDDMStructureId(),
206 fileEntryMetadata.getDDMStorageId(), fileEntryMetadata,
207 fieldName, namespace, serviceContext);
208 }
209 }
210 }
211 catch (Exception e) {
212 }
213 }
214
215 }