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