001
014
015 package com.liferay.portal.repository.liferayrepository;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.repository.capabilities.Capability;
019 import com.liferay.portal.kernel.repository.capabilities.CapabilityProvider;
020 import com.liferay.portal.kernel.util.ParamUtil;
021 import com.liferay.portal.kernel.util.SortedArrayList;
022 import com.liferay.portal.kernel.util.StringUtil;
023 import com.liferay.portal.service.RepositoryLocalService;
024 import com.liferay.portal.service.RepositoryService;
025 import com.liferay.portal.service.ResourceLocalService;
026 import com.liferay.portal.service.ServiceContext;
027 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
028 import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
029 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
030 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
031 import com.liferay.portlet.documentlibrary.service.DLAppHelperLocalService;
032 import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService;
033 import com.liferay.portlet.documentlibrary.service.DLFileEntryService;
034 import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalService;
035 import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalServiceUtil;
036 import com.liferay.portlet.documentlibrary.service.DLFileShortcutLocalService;
037 import com.liferay.portlet.documentlibrary.service.DLFileShortcutService;
038 import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalService;
039 import com.liferay.portlet.documentlibrary.service.DLFileVersionService;
040 import com.liferay.portlet.documentlibrary.service.DLFolderLocalService;
041 import com.liferay.portlet.documentlibrary.service.DLFolderService;
042 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
043 import com.liferay.portlet.dynamicdatamapping.storage.DDMFormValues;
044 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
045 import com.liferay.portlet.dynamicdatamapping.util.DDMUtil;
046 import com.liferay.portlet.dynamicdatamapping.util.FieldsToDDMFormValuesConverterUtil;
047
048 import java.util.ArrayList;
049 import java.util.HashMap;
050 import java.util.List;
051
052
055 public abstract class LiferayRepositoryBase implements CapabilityProvider {
056
057 public LiferayRepositoryBase(
058 RepositoryLocalService repositoryLocalService,
059 RepositoryService repositoryService,
060 DLAppHelperLocalService dlAppHelperLocalService,
061 DLFileEntryLocalService dlFileEntryLocalService,
062 DLFileEntryService dlFileEntryService,
063 DLFileEntryTypeLocalService dlFileEntryTypeLocalService,
064 DLFileShortcutLocalService dlFileShortcutLocalService,
065 DLFileShortcutService dlFileShortcutService,
066 DLFileVersionLocalService dlFileVersionLocalService,
067 DLFileVersionService dlFileVersionService,
068 DLFolderLocalService dlFolderLocalService,
069 DLFolderService dlFolderService,
070 ResourceLocalService resourceLocalService, long groupId,
071 long repositoryId, long dlFolderId) {
072
073 this.repositoryLocalService = repositoryLocalService;
074 this.repositoryService = repositoryService;
075 this.dlAppHelperLocalService = dlAppHelperLocalService;
076 this.dlFileEntryLocalService = dlFileEntryLocalService;
077 this.dlFileEntryService = dlFileEntryService;
078 this.dlFileEntryTypeLocalService = dlFileEntryTypeLocalService;
079 this.dlFileShortcutLocalService = dlFileShortcutLocalService;
080 this.dlFileShortcutService = dlFileShortcutService;
081 this.dlFileVersionLocalService = dlFileVersionLocalService;
082 this.dlFileVersionService = dlFileVersionService;
083 this.dlFolderLocalService = dlFolderLocalService;
084 this.dlFolderService = dlFolderService;
085 this.resourceLocalService = resourceLocalService;
086 _groupId = groupId;
087 _repositoryId = repositoryId;
088 _dlFolderId = dlFolderId;
089 }
090
091 @Override
092 public <T extends Capability> T getCapability(Class<T> capabilityClass) {
093 throw new IllegalArgumentException(
094 String.format(
095 "Capability %s is not supported by repository %s",
096 capabilityClass.getName(), getRepositoryId()));
097 }
098
099 public long getRepositoryId() {
100 return _repositoryId;
101 }
102
103 @Override
104 public <T extends Capability> boolean isCapabilityProvided(
105 Class<T> capabilityClass) {
106
107 return false;
108 }
109
110 protected void addFileEntryResources(
111 DLFileEntry dlFileEntry, ServiceContext serviceContext)
112 throws PortalException {
113
114 if (serviceContext.isAddGroupPermissions() ||
115 serviceContext.isAddGuestPermissions()) {
116
117 resourceLocalService.addResources(
118 dlFileEntry.getCompanyId(), dlFileEntry.getGroupId(),
119 dlFileEntry.getUserId(), DLFileEntry.class.getName(),
120 dlFileEntry.getFileEntryId(), false,
121 serviceContext.isAddGroupPermissions(),
122 serviceContext.isAddGuestPermissions());
123 }
124 else {
125 if (serviceContext.isDeriveDefaultPermissions()) {
126 serviceContext.deriveDefaultPermissions(
127 dlFileEntry.getRepositoryId(),
128 DLFileEntryConstants.getClassName());
129 }
130
131 resourceLocalService.addModelResources(
132 dlFileEntry.getCompanyId(), dlFileEntry.getGroupId(),
133 dlFileEntry.getUserId(), DLFileEntry.class.getName(),
134 dlFileEntry.getFileEntryId(),
135 serviceContext.getGroupPermissions(),
136 serviceContext.getGuestPermissions());
137 }
138 }
139
140 protected HashMap<String, DDMFormValues> getDDMFormValuesMap(
141 ServiceContext serviceContext, long fileEntryTypeId)
142 throws PortalException {
143
144 HashMap<String, DDMFormValues> ddmFormValuesMap = new HashMap<>();
145
146 if (fileEntryTypeId <= 0) {
147 return ddmFormValuesMap;
148 }
149
150 DLFileEntryType fileEntryType =
151 DLFileEntryTypeLocalServiceUtil.getFileEntryType(fileEntryTypeId);
152
153 List<DDMStructure> ddmStructures = fileEntryType.getDDMStructures();
154
155 for (DDMStructure ddmStructure : ddmStructures) {
156 String namespace = String.valueOf(ddmStructure.getStructureId());
157
158 DDMFormValues ddmFormValues =
159 (DDMFormValues)serviceContext.getAttribute(
160 DDMFormValues.class.getName() +
161 ddmStructure.getStructureId());
162
163 if (ddmFormValues == null) {
164 Fields fields = DDMUtil.getFields(
165 ddmStructure.getStructureId(), namespace, serviceContext);
166
167 ddmFormValues = FieldsToDDMFormValuesConverterUtil.convert(
168 ddmStructure, fields);
169 }
170
171 ddmFormValuesMap.put(ddmStructure.getStructureKey(), ddmFormValues);
172 }
173
174 return ddmFormValuesMap;
175 }
176
177 protected long getDefaultFileEntryTypeId(
178 ServiceContext serviceContext, long folderId)
179 throws PortalException {
180
181 folderId = dlFolderLocalService.getFolderId(
182 serviceContext.getCompanyId(), folderId);
183
184 return dlFileEntryTypeLocalService.getDefaultFileEntryTypeId(folderId);
185 }
186
187 protected long getGroupId() {
188 return _groupId;
189 }
190
191 protected SortedArrayList<Long> getLongList(
192 ServiceContext serviceContext, String name) {
193
194 String value = ParamUtil.getString(serviceContext, name);
195
196 if (value == null) {
197 return new SortedArrayList<>();
198 }
199
200 long[] longArray = StringUtil.split(value, 0L);
201
202 SortedArrayList<Long> longList = new SortedArrayList<>();
203
204 for (long longValue : longArray) {
205 longList.add(longValue);
206 }
207
208 return longList;
209 }
210
211 protected boolean isDefaultRepository() {
212 if (_groupId == _repositoryId) {
213 return true;
214 }
215 else {
216 return false;
217 }
218 }
219
220 protected long toFolderId(long folderId) {
221 if (folderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
222 return _dlFolderId;
223 }
224 else {
225 return folderId;
226 }
227 }
228
229 protected List<Long> toFolderIds(List<Long> folderIds) {
230 List<Long> toFolderIds = new ArrayList<>(folderIds.size());
231
232 for (long folderId : folderIds) {
233 toFolderIds.add(toFolderId(folderId));
234 }
235
236 return toFolderIds;
237 }
238
239 protected DLAppHelperLocalService dlAppHelperLocalService;
240 protected DLFileEntryLocalService dlFileEntryLocalService;
241 protected DLFileEntryService dlFileEntryService;
242 protected DLFileEntryTypeLocalService dlFileEntryTypeLocalService;
243 protected DLFileShortcutLocalService dlFileShortcutLocalService;
244 protected DLFileShortcutService dlFileShortcutService;
245 protected DLFileVersionLocalService dlFileVersionLocalService;
246 protected DLFileVersionService dlFileVersionService;
247 protected DLFolderLocalService dlFolderLocalService;
248 protected DLFolderService dlFolderService;
249 protected RepositoryLocalService repositoryLocalService;
250 protected RepositoryService repositoryService;
251 protected ResourceLocalService resourceLocalService;
252
253 private final long _dlFolderId;
254 private long _groupId;
255 private final long _repositoryId;
256
257 }