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