001
014
015 package com.liferay.portlet.documentlibrary.service.impl;
016
017 import com.liferay.document.library.kernel.model.DLFileEntryMetadata;
018 import com.liferay.document.library.kernel.model.DLFileEntryType;
019 import com.liferay.dynamic.data.mapping.kernel.DDMFormValues;
020 import com.liferay.dynamic.data.mapping.kernel.DDMStructure;
021 import com.liferay.dynamic.data.mapping.kernel.DDMStructureLinkManagerUtil;
022 import com.liferay.dynamic.data.mapping.kernel.StorageEngineManagerUtil;
023 import com.liferay.portal.kernel.exception.PortalException;
024 import com.liferay.portal.kernel.service.ServiceContext;
025 import com.liferay.portlet.documentlibrary.service.base.DLFileEntryMetadataLocalServiceBaseImpl;
026
027 import java.util.List;
028 import java.util.Map;
029
030
033 public class DLFileEntryMetadataLocalServiceImpl
034 extends DLFileEntryMetadataLocalServiceBaseImpl {
035
036 @Override
037 public void deleteFileEntryMetadata(DLFileEntryMetadata fileEntryMetadata)
038 throws PortalException {
039
040
041
042 dlFileEntryMetadataPersistence.remove(fileEntryMetadata);
043
044
045
046 StorageEngineManagerUtil.deleteByClass(
047 fileEntryMetadata.getDDMStorageId());
048
049
050
051 long classNameId = classNameLocalService.getClassNameId(
052 DLFileEntryMetadata.class);
053
054 DDMStructureLinkManagerUtil.deleteStructureLinks(
055 classNameId, fileEntryMetadata.getFileEntryMetadataId());
056 }
057
058 @Override
059 public void deleteFileEntryMetadata(long fileEntryId)
060 throws PortalException {
061
062 List<DLFileEntryMetadata> fileEntryMetadatas =
063 dlFileEntryMetadataPersistence.findByFileEntryId(fileEntryId);
064
065 for (DLFileEntryMetadata fileEntryMetadata : fileEntryMetadatas) {
066 deleteFileEntryMetadata(fileEntryMetadata);
067 }
068 }
069
070 @Override
071 public void deleteFileVersionFileEntryMetadata(long fileVersionId)
072 throws PortalException {
073
074 List<DLFileEntryMetadata> fileEntryMetadatas =
075 dlFileEntryMetadataPersistence.findByFileVersionId(fileVersionId);
076
077 for (DLFileEntryMetadata fileEntryMetadata : fileEntryMetadatas) {
078 deleteFileEntryMetadata(fileEntryMetadata);
079 }
080 }
081
082 @Override
083 public DLFileEntryMetadata fetchFileEntryMetadata(
084 long fileEntryMetadataId) {
085
086 return dlFileEntryMetadataPersistence.fetchByPrimaryKey(
087 fileEntryMetadataId);
088 }
089
090 @Override
091 public DLFileEntryMetadata fetchFileEntryMetadata(
092 long ddmStructureId, long fileVersionId) {
093
094 return dlFileEntryMetadataPersistence.fetchByD_F(
095 ddmStructureId, fileVersionId);
096 }
097
098 @Override
099 public DLFileEntryMetadata getFileEntryMetadata(long fileEntryMetadataId)
100 throws PortalException {
101
102 return dlFileEntryMetadataPersistence.findByPrimaryKey(
103 fileEntryMetadataId);
104 }
105
106 @Override
107 public DLFileEntryMetadata getFileEntryMetadata(
108 long ddmStructureId, long fileVersionId)
109 throws PortalException {
110
111 return dlFileEntryMetadataPersistence.findByD_F(
112 ddmStructureId, fileVersionId);
113 }
114
115 @Override
116 public List<DLFileEntryMetadata> getFileVersionFileEntryMetadatas(
117 long fileVersionId) {
118
119 return dlFileEntryMetadataPersistence.findByFileVersionId(
120 fileVersionId);
121 }
122
123 @Override
124 public long getFileVersionFileEntryMetadatasCount(long fileVersionId) {
125 return dlFileEntryMetadataPersistence.countByFileVersionId(
126 fileVersionId);
127 }
128
129 @Override
130 public List<DLFileEntryMetadata>
131 getMismatchedCompanyIdFileEntryMetadatas() {
132
133 return dlFileEntryMetadataFinder.findByMismatchedCompanyId();
134 }
135
136 @Override
137 public List<DLFileEntryMetadata> getNoStructuresFileEntryMetadatas() {
138 return dlFileEntryMetadataFinder.findByNoStructures();
139 }
140
141 @Override
142 public void updateFileEntryMetadata(
143 long companyId, List<DDMStructure> ddmStructures, long fileEntryId,
144 long fileVersionId, Map<String, DDMFormValues> ddmFormValuesMap,
145 ServiceContext serviceContext)
146 throws PortalException {
147
148 for (DDMStructure ddmStructure : ddmStructures) {
149 DDMFormValues ddmFormValues = ddmFormValuesMap.get(
150 ddmStructure.getStructureKey());
151
152 if (ddmFormValues != null) {
153 updateFileEntryMetadata(
154 companyId, ddmStructure, fileEntryId, fileVersionId,
155 ddmFormValues, serviceContext);
156 }
157 }
158 }
159
160 @Override
161 public void updateFileEntryMetadata(
162 long fileEntryTypeId, long fileEntryId, long fileVersionId,
163 Map<String, DDMFormValues> ddmFormValuesMap,
164 ServiceContext serviceContext)
165 throws PortalException {
166
167 DLFileEntryType fileEntryType =
168 dlFileEntryTypeLocalService.getFileEntryType(fileEntryTypeId);
169
170 List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures();
171
172 updateFileEntryMetadata(
173 fileEntryType.getCompanyId(), ddmStructures, fileEntryId,
174 fileVersionId, ddmFormValuesMap, serviceContext);
175 }
176
177 protected void updateFileEntryMetadata(
178 long companyId, DDMStructure ddmStructure, long fileEntryId,
179 long fileVersionId, DDMFormValues ddmFormValues,
180 ServiceContext serviceContext)
181 throws PortalException {
182
183 DLFileEntryMetadata fileEntryMetadata =
184 dlFileEntryMetadataPersistence.fetchByD_F(
185 ddmStructure.getStructureId(), fileVersionId);
186
187 if (fileEntryMetadata != null) {
188 StorageEngineManagerUtil.update(
189 fileEntryMetadata.getDDMStorageId(), ddmFormValues,
190 serviceContext);
191 }
192 else {
193
194
195
196 long fileEntryMetadataId = counterLocalService.increment();
197
198 fileEntryMetadata = dlFileEntryMetadataPersistence.create(
199 fileEntryMetadataId);
200
201 long ddmStorageId = StorageEngineManagerUtil.create(
202 companyId, ddmStructure.getStructureId(), ddmFormValues,
203 serviceContext);
204
205 fileEntryMetadata.setDDMStorageId(ddmStorageId);
206
207 fileEntryMetadata.setDDMStructureId(ddmStructure.getStructureId());
208 fileEntryMetadata.setFileEntryId(fileEntryId);
209 fileEntryMetadata.setFileVersionId(fileVersionId);
210
211 dlFileEntryMetadataPersistence.update(fileEntryMetadata);
212
213
214
215 long classNameId = classNameLocalService.getClassNameId(
216 DLFileEntryMetadata.class);
217
218 DDMStructureLinkManagerUtil.addStructureLink(
219 classNameId, fileEntryMetadata.getFileEntryMetadataId(),
220 ddmStructure.getStructureId());
221 }
222 }
223
224 }