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