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