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.log.Log;
020 import com.liferay.portal.kernel.log.LogFactoryUtil;
021 import com.liferay.portal.kernel.repository.LocalRepository;
022 import com.liferay.portal.kernel.repository.model.FileEntry;
023 import com.liferay.portal.kernel.repository.model.FileVersion;
024 import com.liferay.portal.kernel.repository.model.Folder;
025 import com.liferay.portal.kernel.util.ParamUtil;
026 import com.liferay.portal.kernel.util.SortedArrayList;
027 import com.liferay.portal.kernel.util.UnicodeProperties;
028 import com.liferay.portal.model.Repository;
029 import com.liferay.portal.repository.liferayrepository.model.LiferayFileEntry;
030 import com.liferay.portal.repository.liferayrepository.model.LiferayFileVersion;
031 import com.liferay.portal.repository.liferayrepository.model.LiferayFolder;
032 import com.liferay.portal.service.RepositoryLocalService;
033 import com.liferay.portal.service.RepositoryService;
034 import com.liferay.portal.service.ResourceLocalService;
035 import com.liferay.portal.service.ServiceContext;
036 import com.liferay.portlet.documentlibrary.NoSuchFileEntryException;
037 import com.liferay.portlet.documentlibrary.NoSuchFileVersionException;
038 import com.liferay.portlet.documentlibrary.NoSuchFolderException;
039 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
040 import com.liferay.portlet.documentlibrary.model.DLFileVersion;
041 import com.liferay.portlet.documentlibrary.model.DLFolder;
042 import com.liferay.portlet.documentlibrary.service.DLAppHelperLocalService;
043 import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService;
044 import com.liferay.portlet.documentlibrary.service.DLFileEntryService;
045 import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalService;
046 import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalService;
047 import com.liferay.portlet.documentlibrary.service.DLFileVersionService;
048 import com.liferay.portlet.documentlibrary.service.DLFolderLocalService;
049 import com.liferay.portlet.documentlibrary.service.DLFolderService;
050 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
051
052 import java.io.File;
053 import java.io.InputStream;
054
055 import java.util.Map;
056
057
060 public class LiferayLocalRepository
061 extends LiferayRepositoryBase implements LocalRepository {
062
063 public LiferayLocalRepository(
064 RepositoryLocalService repositoryLocalService,
065 RepositoryService repositoryService,
066 DLAppHelperLocalService dlAppHelperLocalService,
067 DLFileEntryLocalService dlFileEntryLocalService,
068 DLFileEntryService dlFileEntryService,
069 DLFileEntryTypeLocalService dlFileEntryTypeLocalService,
070 DLFileVersionLocalService dlFileVersionLocalService,
071 DLFileVersionService dlFileVersionService,
072 DLFolderLocalService dlFolderLocalService,
073 DLFolderService dlFolderService,
074 ResourceLocalService resourceLocalService, long repositoryId) {
075
076 super(
077 repositoryLocalService, repositoryService, dlAppHelperLocalService,
078 dlFileEntryLocalService, dlFileEntryService,
079 dlFileEntryTypeLocalService, dlFileVersionLocalService,
080 dlFileVersionService, dlFolderLocalService, dlFolderService,
081 resourceLocalService, repositoryId);
082 }
083
084 public LiferayLocalRepository(
085 RepositoryLocalService repositoryLocalService,
086 RepositoryService repositoryService,
087 DLAppHelperLocalService dlAppHelperLocalService,
088 DLFileEntryLocalService dlFileEntryLocalService,
089 DLFileEntryService dlFileEntryService,
090 DLFileEntryTypeLocalService dlFileEntryTypeLocalService,
091 DLFileVersionLocalService dlFileVersionLocalService,
092 DLFileVersionService dlFileVersionService,
093 DLFolderLocalService dlFolderLocalService,
094 DLFolderService dlFolderService,
095 ResourceLocalService resourceLocalService, long folderId,
096 long fileEntryId, long fileVersionId) {
097
098 super(
099 repositoryLocalService, repositoryService, dlAppHelperLocalService,
100 dlFileEntryLocalService, dlFileEntryService,
101 dlFileEntryTypeLocalService, dlFileVersionLocalService,
102 dlFileVersionService, dlFolderLocalService, dlFolderService,
103 resourceLocalService, folderId, fileEntryId, fileVersionId);
104 }
105
106 @Override
107 public FileEntry addFileEntry(
108 long userId, long folderId, String sourceFileName, String mimeType,
109 String title, String description, String changeLog, File file,
110 ServiceContext serviceContext)
111 throws PortalException, SystemException {
112
113 long fileEntryTypeId = ParamUtil.getLong(
114 serviceContext, "fileEntryTypeId",
115 getDefaultFileEntryTypeId(serviceContext, folderId));
116
117 Map<String, Fields> fieldsMap = getFieldsMap(
118 serviceContext, fileEntryTypeId);
119
120 long size = 0;
121
122 if (file != null) {
123 size = file.length();
124 }
125
126 DLFileEntry dlFileEntry = dlFileEntryLocalService.addFileEntry(
127 userId, getGroupId(), getRepositoryId(), toFolderId(folderId),
128 sourceFileName, mimeType, title, description, changeLog,
129 fileEntryTypeId, fieldsMap, file, null, size, serviceContext);
130
131 addFileEntryResources(dlFileEntry, serviceContext);
132
133 return new LiferayFileEntry(dlFileEntry);
134 }
135
136 @Override
137 public FileEntry addFileEntry(
138 long userId, long folderId, String sourceFileName, String mimeType,
139 String title, String description, String changeLog, InputStream is,
140 long size, ServiceContext serviceContext)
141 throws PortalException, SystemException {
142
143 long fileEntryTypeId = ParamUtil.getLong(
144 serviceContext, "fileEntryTypeId",
145 getDefaultFileEntryTypeId(serviceContext, folderId));
146
147 Map<String, Fields> fieldsMap = getFieldsMap(
148 serviceContext, fileEntryTypeId);
149
150 DLFileEntry dlFileEntry = dlFileEntryLocalService.addFileEntry(
151 userId, getGroupId(), getRepositoryId(), toFolderId(folderId),
152 sourceFileName, mimeType, title, description, changeLog,
153 fileEntryTypeId, fieldsMap, null, is, size, serviceContext);
154
155 addFileEntryResources(dlFileEntry, serviceContext);
156
157 return new LiferayFileEntry(dlFileEntry);
158 }
159
160 @Override
161 public Folder addFolder(
162 long userId, long parentFolderId, String title, String description,
163 ServiceContext serviceContext)
164 throws PortalException, SystemException {
165
166 boolean mountPoint = ParamUtil.getBoolean(serviceContext, "mountPoint");
167
168 DLFolder dlFolder = dlFolderLocalService.addFolder(
169 userId, getGroupId(), getRepositoryId(), mountPoint,
170 toFolderId(parentFolderId), title, description, false,
171 serviceContext);
172
173 return new LiferayFolder(dlFolder);
174 }
175
176 public void addRepository(
177 long groupId, String name, String description, String portletKey,
178 UnicodeProperties typeSettingsProperties) {
179 }
180
181 @Override
182 public void deleteAll() throws PortalException, SystemException {
183 dlFolderLocalService.deleteAll(getGroupId());
184 }
185
186 @Override
187 public void deleteFileEntry(long fileEntryId)
188 throws PortalException, SystemException {
189
190 dlFileEntryLocalService.deleteFileEntry(fileEntryId);
191 }
192
193 @Override
194 public void deleteFolder(long folderId)
195 throws PortalException, SystemException {
196
197 dlFolderLocalService.deleteFolder(folderId);
198 }
199
200 @Override
201 public FileEntry getFileEntry(long fileEntryId)
202 throws PortalException, SystemException {
203
204 DLFileEntry dlFileEntry = dlFileEntryLocalService.getFileEntry(
205 fileEntryId);
206
207 return new LiferayFileEntry(dlFileEntry);
208 }
209
210 @Override
211 public FileEntry getFileEntry(long folderId, String title)
212 throws PortalException, SystemException {
213
214 DLFileEntry dlFileEntry = dlFileEntryLocalService.getFileEntry(
215 getGroupId(), toFolderId(folderId), title);
216
217 return new LiferayFileEntry(dlFileEntry);
218 }
219
220 @Override
221 public FileEntry getFileEntryByUuid(String uuid)
222 throws PortalException, SystemException {
223
224 DLFileEntry dlFileEntry =
225 dlFileEntryLocalService.getFileEntryByUuidAndGroupId(
226 uuid, getGroupId());
227
228 return new LiferayFileEntry(dlFileEntry);
229 }
230
231 @Override
232 public FileVersion getFileVersion(long fileVersionId)
233 throws PortalException, SystemException {
234
235 DLFileVersion dlFileVersion = dlFileVersionLocalService.getFileVersion(
236 fileVersionId);
237
238 return new LiferayFileVersion(dlFileVersion);
239 }
240
241 @Override
242 public Folder getFolder(long folderId)
243 throws PortalException, SystemException {
244
245 DLFolder dlFolder = dlFolderLocalService.getFolder(folderId);
246
247 return new LiferayFolder(dlFolder);
248 }
249
250 @Override
251 public Folder getFolder(long parentFolderId, String title)
252 throws PortalException, SystemException {
253
254 DLFolder dlFolder = dlFolderLocalService.getFolder(
255 getGroupId(), toFolderId(parentFolderId), title);
256
257 return new LiferayFolder(dlFolder);
258 }
259
260 @Override
261 public FileEntry moveFileEntry(
262 long userId, long fileEntryId, long newFolderId,
263 ServiceContext serviceContext)
264 throws PortalException, SystemException {
265
266 DLFileEntry dlFileEntry = dlFileEntryLocalService.moveFileEntry(
267 userId, fileEntryId, toFolderId(newFolderId), serviceContext);
268
269 return new LiferayFileEntry(dlFileEntry);
270 }
271
272 @Override
273 public Folder moveFolder(
274 long userId, long folderId, long parentFolderId,
275 ServiceContext serviceContext)
276 throws PortalException, SystemException {
277
278 DLFolder dlFolder = dlFolderLocalService.moveFolder(
279 userId, folderId, parentFolderId, serviceContext);
280
281 return new LiferayFolder(dlFolder);
282 }
283
284 @Override
285 public void updateAsset(
286 long userId, FileEntry fileEntry, FileVersion fileVersion,
287 long[] assetCategoryIds, String[] assetTagNames,
288 long[] assetLinkEntryIds)
289 throws PortalException, SystemException {
290
291 dlAppHelperLocalService.updateAsset(
292 userId, fileEntry, fileVersion, assetCategoryIds, assetTagNames,
293 assetLinkEntryIds);
294 }
295
296 @Override
297 public FileEntry updateFileEntry(
298 long userId, long fileEntryId, String sourceFileName,
299 String mimeType, String title, String description, String changeLog,
300 boolean majorVersion, File file, ServiceContext serviceContext)
301 throws PortalException, SystemException {
302
303 long fileEntryTypeId = ParamUtil.getLong(
304 serviceContext, "fileEntryTypeId", -1L);
305
306 Map<String, Fields> fieldsMap = getFieldsMap(
307 serviceContext, fileEntryTypeId);
308
309 long size = 0;
310
311 if (file != null) {
312 size = file.length();
313 }
314
315 DLFileEntry dlFileEntry = dlFileEntryLocalService.updateFileEntry(
316 userId, fileEntryId, sourceFileName, mimeType, title, description,
317 changeLog, majorVersion, fileEntryTypeId, fieldsMap, file, null,
318 size, serviceContext);
319
320 return new LiferayFileEntry(dlFileEntry);
321 }
322
323 @Override
324 public FileEntry updateFileEntry(
325 long userId, long fileEntryId, String sourceFileName,
326 String mimeType, String title, String description, String changeLog,
327 boolean majorVersion, InputStream is, long size,
328 ServiceContext serviceContext)
329 throws PortalException, SystemException {
330
331 long fileEntryTypeId = ParamUtil.getLong(
332 serviceContext, "fileEntryTypeId", -1L);
333
334 Map<String, Fields> fieldsMap = getFieldsMap(
335 serviceContext, fileEntryTypeId);
336
337 DLFileEntry dlFileEntry = dlFileEntryLocalService.updateFileEntry(
338 userId, fileEntryId, sourceFileName, mimeType, title, description,
339 changeLog, majorVersion, fileEntryTypeId, fieldsMap, null, is, size,
340 serviceContext);
341
342 return new LiferayFileEntry(dlFileEntry);
343 }
344
345 @Override
346 public Folder updateFolder(
347 long folderId, long parentFolderId, String title,
348 String description, ServiceContext serviceContext)
349 throws PortalException, SystemException {
350
351 long defaultFileEntryTypeId = ParamUtil.getLong(
352 serviceContext, "defaultFileEntryTypeId");
353 SortedArrayList<Long> fileEntryTypeIds = getLongList(
354 serviceContext, "dlFileEntryTypesSearchContainerPrimaryKeys");
355 boolean overrideFileEntryTypes = ParamUtil.getBoolean(
356 serviceContext, "overrideFileEntryTypes");
357
358 DLFolder dlFolder = dlFolderLocalService.updateFolder(
359 toFolderId(folderId), toFolderId(parentFolderId), title,
360 description, defaultFileEntryTypeId, fileEntryTypeIds,
361 overrideFileEntryTypes, serviceContext);
362
363 return new LiferayFolder(dlFolder);
364 }
365
366 public UnicodeProperties updateRepository(
367 UnicodeProperties typeSettingsProperties) {
368
369 return typeSettingsProperties;
370 }
371
372 @Override
373 protected void initByFileEntryId(long fileEntryId) {
374 try {
375 DLFileEntry dlFileEntry = dlFileEntryLocalService.getFileEntry(
376 fileEntryId);
377
378 initByRepositoryId(dlFileEntry.getRepositoryId());
379 }
380 catch (Exception e) {
381 if (_log.isTraceEnabled()) {
382 if (e instanceof NoSuchFileEntryException) {
383 _log.trace(e.getMessage());
384 }
385 else {
386 _log.trace(e, e);
387 }
388 }
389 }
390 }
391
392 @Override
393 protected void initByFileVersionId(long fileVersionId) {
394 try {
395 DLFileVersion dlFileVersion =
396 dlFileVersionLocalService.getFileVersion(fileVersionId);
397
398 initByRepositoryId(dlFileVersion.getRepositoryId());
399 }
400 catch (Exception e) {
401 if (_log.isTraceEnabled()) {
402 if (e instanceof NoSuchFileVersionException) {
403 _log.trace(e.getMessage());
404 }
405 else {
406 _log.trace(e, e);
407 }
408 }
409 }
410 }
411
412 @Override
413 protected void initByFolderId(long folderId) {
414 try {
415 DLFolder dlFolder = dlFolderLocalService.getFolder(folderId);
416
417 initByRepositoryId(dlFolder.getRepositoryId());
418 }
419 catch (Exception e) {
420 if (_log.isTraceEnabled()) {
421 if (e instanceof NoSuchFolderException) {
422 _log.trace(e.getMessage());
423 }
424 else {
425 _log.trace(e, e);
426 }
427 }
428 }
429 }
430
431 @Override
432 protected void initByRepositoryId(long repositoryId) {
433 setGroupId(repositoryId);
434 setRepositoryId(repositoryId);
435
436 try {
437 Repository repository = repositoryLocalService.getRepository(
438 repositoryId);
439
440 setDlFolderId(repository.getDlFolderId());
441 setGroupId(repository.getGroupId());
442 setRepositoryId(repository.getRepositoryId());
443 }
444 catch (Exception e) {
445 }
446 }
447
448 private static Log _log = LogFactoryUtil.getLog(
449 LiferayLocalRepository.class);
450
451 }