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 @Override
039 public void deleteFileEntryMetadata(long fileEntryId)
040 throws PortalException, SystemException {
041
042 List<DLFileEntryMetadata> fileEntryMetadatas =
043 dlFileEntryMetadataPersistence.findByFileEntryId(fileEntryId);
044
045 for (DLFileEntryMetadata fileEntryMetadata : fileEntryMetadatas) {
046 deleteFileEntryMetadata(fileEntryMetadata);
047 }
048 }
049
050 @Override
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 @Override
063 public DLFileEntryMetadata fetchFileEntryMetadata(long fileEntryMetadataId)
064 throws SystemException {
065
066 return dlFileEntryMetadataPersistence.fetchByPrimaryKey(
067 fileEntryMetadataId);
068 }
069
070 @Override
071 public DLFileEntryMetadata fetchFileEntryMetadata(
072 long ddmStructureId, long fileVersionId)
073 throws SystemException {
074
075 return dlFileEntryMetadataPersistence.fetchByD_F(
076 ddmStructureId, fileVersionId);
077 }
078
079 @Override
080 public DLFileEntryMetadata getFileEntryMetadata(long fileEntryMetadataId)
081 throws PortalException, SystemException {
082
083 return dlFileEntryMetadataPersistence.findByPrimaryKey(
084 fileEntryMetadataId);
085 }
086
087 @Override
088 public DLFileEntryMetadata getFileEntryMetadata(
089 long ddmStructureId, long fileVersionId)
090 throws PortalException, SystemException {
091
092 return dlFileEntryMetadataPersistence.findByD_F(
093 ddmStructureId, fileVersionId);
094 }
095
096
100 @Override
101 public long getFileEntryMetadataCount(long fileEntryId, long fileVersionId)
102 throws SystemException {
103
104 return getFileVersionFileEntryMetadatasCount(fileVersionId);
105 }
106
107 @Override
108 public List<DLFileEntryMetadata> getFileVersionFileEntryMetadatas(
109 long fileVersionId)
110 throws SystemException {
111
112 return dlFileEntryMetadataPersistence.findByFileVersionId(
113 fileVersionId);
114 }
115
116 @Override
117 public long getFileVersionFileEntryMetadatasCount(long fileVersionId)
118 throws SystemException {
119
120 return dlFileEntryMetadataPersistence.countByFileVersionId(
121 fileVersionId);
122 }
123
124 @Override
125 public void updateFileEntryMetadata(
126 long companyId, List<DDMStructure> ddmStructures,
127 long fileEntryTypeId, long fileEntryId, long fileVersionId,
128 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
129 throws PortalException, SystemException {
130
131 for (DDMStructure ddmStructure : ddmStructures) {
132 Fields fields = fieldsMap.get(ddmStructure.getStructureKey());
133
134 if (fields != null) {
135 updateFileEntryMetadata(
136 companyId, ddmStructure, fileEntryTypeId, fileEntryId,
137 fileVersionId, fields, serviceContext);
138 }
139 }
140 }
141
142 @Override
143 public void updateFileEntryMetadata(
144 long fileEntryTypeId, long fileEntryId, long fileVersionId,
145 Map<String, Fields> fieldsMap, ServiceContext serviceContext)
146 throws PortalException, SystemException {
147
148 DLFileEntryType fileEntryType =
149 dlFileEntryTypeLocalService.getFileEntryType(fileEntryTypeId);
150
151 List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures();
152
153 updateFileEntryMetadata(
154 fileEntryType.getCompanyId(), ddmStructures, fileEntryTypeId,
155 fileEntryId, fileVersionId, fieldsMap, serviceContext);
156 }
157
158 protected void deleteFileEntryMetadata(
159 DLFileEntryMetadata fileEntryMetadata)
160 throws PortalException, SystemException {
161
162
163
164 dlFileEntryMetadataPersistence.remove(fileEntryMetadata);
165
166
167
168 StorageEngineUtil.deleteByClass(fileEntryMetadata.getDDMStorageId());
169
170
171
172 ddmStructureLinkLocalService.deleteClassStructureLink(
173 fileEntryMetadata.getFileEntryMetadataId());
174 }
175
176 protected void updateFileEntryMetadata(
177 long companyId, DDMStructure ddmStructure, long fileEntryTypeId,
178 long fileEntryId, long fileVersionId, Fields fields,
179 ServiceContext serviceContext)
180 throws StorageException, SystemException {
181
182 DLFileEntryMetadata fileEntryMetadata =
183 dlFileEntryMetadataPersistence.fetchByD_F(
184 ddmStructure.getStructureId(), fileVersionId);
185
186 if (fileEntryMetadata != null) {
187 StorageEngineUtil.update(
188 fileEntryMetadata.getDDMStorageId(), fields, true,
189 serviceContext);
190 }
191 else {
192
193
194
195 long fileEntryMetadataId = counterLocalService.increment();
196
197 fileEntryMetadata = dlFileEntryMetadataPersistence.create(
198 fileEntryMetadataId);
199
200 long ddmStorageId = StorageEngineUtil.create(
201 companyId, ddmStructure.getStructureId(), fields,
202 serviceContext);
203
204 fileEntryMetadata.setDDMStorageId(ddmStorageId);
205
206 fileEntryMetadata.setDDMStructureId(ddmStructure.getStructureId());
207 fileEntryMetadata.setFileEntryTypeId(fileEntryTypeId);
208 fileEntryMetadata.setFileEntryId(fileEntryId);
209 fileEntryMetadata.setFileVersionId(fileVersionId);
210
211 dlFileEntryMetadataPersistence.update(fileEntryMetadata);
212
213
214
215 long classNameId = PortalUtil.getClassNameId(
216 DLFileEntryMetadata.class);
217
218 ddmStructureLinkLocalService.addStructureLink(
219 classNameId, fileEntryMetadata.getFileEntryMetadataId(),
220 ddmStructure.getStructureId(), serviceContext);
221 }
222 }
223
224 }