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