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 DLFolder dlFolder = dlFolderLocalService.fetchFolder(folderId);
198
199 if (dlFolder != null) {
200 dlFolderLocalService.deleteFolder(folderId);
201 }
202 }
203
204 @Override
205 public FileEntry getFileEntry(long fileEntryId)
206 throws PortalException, SystemException {
207
208 DLFileEntry dlFileEntry = dlFileEntryLocalService.getFileEntry(
209 fileEntryId);
210
211 return new LiferayFileEntry(dlFileEntry);
212 }
213
214 @Override
215 public FileEntry getFileEntry(long folderId, String title)
216 throws PortalException, SystemException {
217
218 DLFileEntry dlFileEntry = dlFileEntryLocalService.getFileEntry(
219 getGroupId(), toFolderId(folderId), title);
220
221 return new LiferayFileEntry(dlFileEntry);
222 }
223
224 @Override
225 public FileEntry getFileEntryByUuid(String uuid)
226 throws PortalException, SystemException {
227
228 DLFileEntry dlFileEntry =
229 dlFileEntryLocalService.getFileEntryByUuidAndGroupId(
230 uuid, getGroupId());
231
232 return new LiferayFileEntry(dlFileEntry);
233 }
234
235 @Override
236 public FileVersion getFileVersion(long fileVersionId)
237 throws PortalException, SystemException {
238
239 DLFileVersion dlFileVersion = dlFileVersionLocalService.getFileVersion(
240 fileVersionId);
241
242 return new LiferayFileVersion(dlFileVersion);
243 }
244
245 @Override
246 public Folder getFolder(long folderId)
247 throws PortalException, SystemException {
248
249 DLFolder dlFolder = dlFolderLocalService.getFolder(folderId);
250
251 return new LiferayFolder(dlFolder);
252 }
253
254 @Override
255 public Folder getFolder(long parentFolderId, String title)
256 throws PortalException, SystemException {
257
258 DLFolder dlFolder = dlFolderLocalService.getFolder(
259 getGroupId(), toFolderId(parentFolderId), title);
260
261 return new LiferayFolder(dlFolder);
262 }
263
264 @Override
265 public FileEntry moveFileEntry(
266 long userId, long fileEntryId, long newFolderId,
267 ServiceContext serviceContext)
268 throws PortalException, SystemException {
269
270 DLFileEntry dlFileEntry = dlFileEntryLocalService.moveFileEntry(
271 userId, fileEntryId, toFolderId(newFolderId), serviceContext);
272
273 return new LiferayFileEntry(dlFileEntry);
274 }
275
276 @Override
277 public Folder moveFolder(
278 long userId, long folderId, long parentFolderId,
279 ServiceContext serviceContext)
280 throws PortalException, SystemException {
281
282 DLFolder dlFolder = dlFolderLocalService.moveFolder(
283 userId, folderId, parentFolderId, serviceContext);
284
285 return new LiferayFolder(dlFolder);
286 }
287
288 @Override
289 public void updateAsset(
290 long userId, FileEntry fileEntry, FileVersion fileVersion,
291 long[] assetCategoryIds, String[] assetTagNames,
292 long[] assetLinkEntryIds)
293 throws PortalException, SystemException {
294
295 dlAppHelperLocalService.updateAsset(
296 userId, fileEntry, fileVersion, assetCategoryIds, assetTagNames,
297 assetLinkEntryIds);
298 }
299
300 @Override
301 public FileEntry updateFileEntry(
302 long userId, long fileEntryId, String sourceFileName,
303 String mimeType, String title, String description, String changeLog,
304 boolean majorVersion, File file, ServiceContext serviceContext)
305 throws PortalException, SystemException {
306
307 long fileEntryTypeId = ParamUtil.getLong(
308 serviceContext, "fileEntryTypeId", -1L);
309
310 Map<String, Fields> fieldsMap = getFieldsMap(
311 serviceContext, fileEntryTypeId);
312
313 long size = 0;
314
315 if (file != null) {
316 size = file.length();
317 }
318
319 DLFileEntry dlFileEntry = dlFileEntryLocalService.updateFileEntry(
320 userId, fileEntryId, sourceFileName, mimeType, title, description,
321 changeLog, majorVersion, fileEntryTypeId, fieldsMap, file, null,
322 size, serviceContext);
323
324 return new LiferayFileEntry(dlFileEntry);
325 }
326
327 @Override
328 public FileEntry updateFileEntry(
329 long userId, long fileEntryId, String sourceFileName,
330 String mimeType, String title, String description, String changeLog,
331 boolean majorVersion, InputStream is, long size,
332 ServiceContext serviceContext)
333 throws PortalException, SystemException {
334
335 long fileEntryTypeId = ParamUtil.getLong(
336 serviceContext, "fileEntryTypeId", -1L);
337
338 Map<String, Fields> fieldsMap = getFieldsMap(
339 serviceContext, fileEntryTypeId);
340
341 DLFileEntry dlFileEntry = dlFileEntryLocalService.updateFileEntry(
342 userId, fileEntryId, sourceFileName, mimeType, title, description,
343 changeLog, majorVersion, fileEntryTypeId, fieldsMap, null, is, size,
344 serviceContext);
345
346 return new LiferayFileEntry(dlFileEntry);
347 }
348
349 @Override
350 public Folder updateFolder(
351 long folderId, long parentFolderId, String title,
352 String description, ServiceContext serviceContext)
353 throws PortalException, SystemException {
354
355 long defaultFileEntryTypeId = ParamUtil.getLong(
356 serviceContext, "defaultFileEntryTypeId");
357 SortedArrayList<Long> fileEntryTypeIds = getLongList(
358 serviceContext, "dlFileEntryTypesSearchContainerPrimaryKeys");
359 boolean overrideFileEntryTypes = ParamUtil.getBoolean(
360 serviceContext, "overrideFileEntryTypes");
361
362 DLFolder dlFolder = dlFolderLocalService.updateFolder(
363 toFolderId(folderId), toFolderId(parentFolderId), title,
364 description, defaultFileEntryTypeId, fileEntryTypeIds,
365 overrideFileEntryTypes, serviceContext);
366
367 return new LiferayFolder(dlFolder);
368 }
369
370 public UnicodeProperties updateRepository(
371 UnicodeProperties typeSettingsProperties) {
372
373 return typeSettingsProperties;
374 }
375
376 @Override
377 protected void initByFileEntryId(long fileEntryId) {
378 try {
379 DLFileEntry dlFileEntry = dlFileEntryLocalService.getFileEntry(
380 fileEntryId);
381
382 initByRepositoryId(dlFileEntry.getRepositoryId());
383 }
384 catch (Exception e) {
385 if (_log.isTraceEnabled()) {
386 if (e instanceof NoSuchFileEntryException) {
387 _log.trace(e.getMessage());
388 }
389 else {
390 _log.trace(e, e);
391 }
392 }
393 }
394 }
395
396 @Override
397 protected void initByFileVersionId(long fileVersionId) {
398 try {
399 DLFileVersion dlFileVersion =
400 dlFileVersionLocalService.getFileVersion(fileVersionId);
401
402 initByRepositoryId(dlFileVersion.getRepositoryId());
403 }
404 catch (Exception e) {
405 if (_log.isTraceEnabled()) {
406 if (e instanceof NoSuchFileVersionException) {
407 _log.trace(e.getMessage());
408 }
409 else {
410 _log.trace(e, e);
411 }
412 }
413 }
414 }
415
416 @Override
417 protected void initByFolderId(long folderId) {
418 try {
419 DLFolder dlFolder = dlFolderLocalService.getFolder(folderId);
420
421 initByRepositoryId(dlFolder.getRepositoryId());
422 }
423 catch (Exception e) {
424 if (_log.isTraceEnabled()) {
425 if (e instanceof NoSuchFolderException) {
426 _log.trace(e.getMessage());
427 }
428 else {
429 _log.trace(e, e);
430 }
431 }
432 }
433 }
434
435 @Override
436 protected void initByRepositoryId(long repositoryId) {
437 setGroupId(repositoryId);
438 setRepositoryId(repositoryId);
439
440 try {
441 Repository repository = repositoryLocalService.getRepository(
442 repositoryId);
443
444 setDlFolderId(repository.getDlFolderId());
445 setGroupId(repository.getGroupId());
446 setRepositoryId(repository.getRepositoryId());
447 }
448 catch (Exception e) {
449 }
450 }
451
452 private static Log _log = LogFactoryUtil.getLog(
453 LiferayLocalRepository.class);
454
455 }