001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.repository.capabilities;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.repository.LocalRepository;
019    import com.liferay.portal.kernel.repository.capabilities.CapabilityProvider;
020    import com.liferay.portal.kernel.repository.event.RepositoryEventTrigger;
021    import com.liferay.portal.kernel.repository.event.RepositoryEventType;
022    import com.liferay.portal.kernel.repository.model.FileEntry;
023    import com.liferay.portal.kernel.repository.model.FileShortcut;
024    import com.liferay.portal.kernel.repository.model.FileVersion;
025    import com.liferay.portal.kernel.repository.model.Folder;
026    import com.liferay.portal.kernel.util.OrderByComparator;
027    import com.liferay.portal.service.ServiceContext;
028    
029    import java.io.File;
030    import java.io.InputStream;
031    
032    import java.util.List;
033    
034    /**
035     * @author Adolfo P??rez
036     */
037    public class CapabilityLocalRepository
038            extends BaseCapabilityRepository<LocalRepository>
039            implements LocalRepository {
040    
041            public CapabilityLocalRepository(
042                    LocalRepository localRepository, CapabilityProvider capabilityProvider,
043                    RepositoryEventTrigger repositoryEventTrigger) {
044    
045                    super(localRepository, capabilityProvider);
046    
047                    _repositoryEventTrigger = repositoryEventTrigger;
048            }
049    
050            @Override
051            public FileEntry addFileEntry(
052                            long userId, long folderId, String sourceFileName, String mimeType,
053                            String title, String description, String changeLog, File file,
054                            ServiceContext serviceContext)
055                    throws PortalException {
056    
057                    LocalRepository localRepository = getRepository();
058    
059                    FileEntry fileEntry = localRepository.addFileEntry(
060                            userId, folderId, sourceFileName, mimeType, title, description,
061                            changeLog, file, serviceContext);
062    
063                    _repositoryEventTrigger.trigger(
064                            RepositoryEventType.Add.class, FileEntry.class, fileEntry);
065    
066                    return fileEntry;
067            }
068    
069            @Override
070            public FileEntry addFileEntry(
071                            long userId, long folderId, String sourceFileName, String mimeType,
072                            String title, String description, String changeLog, InputStream is,
073                            long size, ServiceContext serviceContext)
074                    throws PortalException {
075    
076                    LocalRepository localRepository = getRepository();
077    
078                    FileEntry fileEntry = localRepository.addFileEntry(
079                            userId, folderId, sourceFileName, mimeType, title, description,
080                            changeLog, is, size, serviceContext);
081    
082                    _repositoryEventTrigger.trigger(
083                            RepositoryEventType.Add.class, FileEntry.class, fileEntry);
084    
085                    return fileEntry;
086            }
087    
088            @Override
089            public FileShortcut addFileShortcut(
090                            long userId, long folderId, long toFileEntryId,
091                            ServiceContext serviceContext)
092                    throws PortalException {
093    
094                    LocalRepository localRepository = getRepository();
095    
096                    FileShortcut fileShortcut = localRepository.addFileShortcut(
097                            userId, folderId, toFileEntryId, serviceContext);
098    
099                    _repositoryEventTrigger.trigger(
100                            RepositoryEventType.Add.class, FileShortcut.class, fileShortcut);
101    
102                    return fileShortcut;
103            }
104    
105            @Override
106            public Folder addFolder(
107                            long userId, long parentFolderId, String name, String description,
108                            ServiceContext serviceContext)
109                    throws PortalException {
110    
111                    LocalRepository localRepository = getRepository();
112    
113                    Folder folder = localRepository.addFolder(
114                            userId, parentFolderId, name, description, serviceContext);
115    
116                    _repositoryEventTrigger.trigger(
117                            RepositoryEventType.Add.class, Folder.class, folder);
118    
119                    return folder;
120            }
121    
122            @Override
123            public void checkInFileEntry(
124                            long userId, long fileEntryId, boolean major, String changeLog,
125                            ServiceContext serviceContext)
126                    throws PortalException {
127    
128                    LocalRepository localRepository = getRepository();
129    
130                    localRepository.checkInFileEntry(
131                            userId, fileEntryId, major, changeLog, serviceContext);
132    
133                    FileEntry fileEntry = localRepository.getFileEntry(fileEntryId);
134    
135                    _repositoryEventTrigger.trigger(
136                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
137            }
138    
139            @Override
140            public void checkInFileEntry(
141                            long userId, long fileEntryId, String lockUuid,
142                            ServiceContext serviceContext)
143                    throws PortalException {
144    
145                    LocalRepository localRepository = getRepository();
146    
147                    localRepository.checkInFileEntry(
148                            userId, fileEntryId, lockUuid, serviceContext);
149    
150                    FileEntry fileEntry = localRepository.getFileEntry(fileEntryId);
151    
152                    _repositoryEventTrigger.trigger(
153                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
154            }
155    
156            @Override
157            public FileEntry copyFileEntry(
158                            long userId, long groupId, long fileEntryId, long destFolderId,
159                            ServiceContext serviceContext)
160                    throws PortalException {
161    
162                    LocalRepository localRepository = getRepository();
163    
164                    FileEntry fileEntry = localRepository.copyFileEntry(
165                            userId, groupId, fileEntryId, destFolderId, serviceContext);
166    
167                    _repositoryEventTrigger.trigger(
168                            RepositoryEventType.Add.class, FileEntry.class, fileEntry);
169    
170                    return fileEntry;
171            }
172    
173            @Override
174            public void deleteAll() throws PortalException {
175                    LocalRepository localRepository = getRepository();
176    
177                    _repositoryEventTrigger.trigger(
178                            RepositoryEventType.Delete.class, LocalRepository.class,
179                            localRepository);
180    
181                    localRepository.deleteAll();
182            }
183    
184            @Override
185            public void deleteFileEntry(long fileEntryId) throws PortalException {
186                    LocalRepository localRepository = getRepository();
187    
188                    FileEntry fileEntry = localRepository.getFileEntry(fileEntryId);
189    
190                    _repositoryEventTrigger.trigger(
191                            RepositoryEventType.Delete.class, FileEntry.class, fileEntry);
192    
193                    localRepository.deleteFileEntry(fileEntryId);
194            }
195    
196            @Override
197            public void deleteFileShortcut(long fileShortcutId) throws PortalException {
198                    LocalRepository localRepository = getRepository();
199    
200                    FileShortcut fileShortcut = localRepository.getFileShortcut(
201                            fileShortcutId);
202    
203                    _repositoryEventTrigger.trigger(
204                            RepositoryEventType.Delete.class, FileShortcut.class, fileShortcut);
205    
206                    localRepository.deleteFileShortcut(fileShortcutId);
207            }
208    
209            @Override
210            public void deleteFileShortcuts(long toFileEntryId) throws PortalException {
211                    LocalRepository localRepository = getRepository();
212    
213                    FileEntry fileEntry = localRepository.getFileEntry(toFileEntryId);
214    
215                    List<FileShortcut> fileShortcuts = fileEntry.getFileShortcuts();
216    
217                    for (FileShortcut fileShortcut : fileShortcuts) {
218                            _repositoryEventTrigger.trigger(
219                                    RepositoryEventType.Delete.class, FileShortcut.class,
220                                    fileShortcut);
221                    }
222    
223                    localRepository.deleteFileShortcuts(toFileEntryId);
224            }
225    
226            @Override
227            public void deleteFolder(long folderId) throws PortalException {
228                    LocalRepository localRepository = getRepository();
229    
230                    Folder folder = localRepository.getFolder(folderId);
231    
232                    _repositoryEventTrigger.trigger(
233                            RepositoryEventType.Delete.class, Folder.class, folder);
234    
235                    localRepository.deleteFolder(folderId);
236            }
237    
238            @Override
239            public List<FileEntry> getFileEntries(
240                            long folderId, int status, int start, int end,
241                            OrderByComparator<FileEntry> obc)
242                    throws PortalException {
243    
244                    return getRepository().getFileEntries(
245                            folderId, status, start, end, obc);
246            }
247    
248            @Override
249            public List<FileEntry> getFileEntries(
250                            long folderId, int start, int end, OrderByComparator<FileEntry> obc)
251                    throws PortalException {
252    
253                    return getRepository().getFileEntries(folderId, start, end, obc);
254            }
255    
256            @Override
257            public int getFileEntriesCount(long folderId) throws PortalException {
258                    return getRepository().getFileEntriesCount(folderId);
259            }
260    
261            @Override
262            public int getFileEntriesCount(long folderId, int status)
263                    throws PortalException {
264    
265                    return getRepository().getFileEntriesCount(folderId, status);
266            }
267    
268            @Override
269            public FileEntry getFileEntry(long fileEntryId) throws PortalException {
270                    return getRepository().getFileEntry(fileEntryId);
271            }
272    
273            @Override
274            public FileEntry getFileEntry(long folderId, String title)
275                    throws PortalException {
276    
277                    return getRepository().getFileEntry(folderId, title);
278            }
279    
280            @Override
281            public FileEntry getFileEntryByUuid(String uuid) throws PortalException {
282                    return getRepository().getFileEntryByUuid(uuid);
283            }
284    
285            @Override
286            public FileShortcut getFileShortcut(long fileShortcutId)
287                    throws PortalException {
288    
289                    return getRepository().getFileShortcut(fileShortcutId);
290            }
291    
292            @Override
293            public FileVersion getFileVersion(long fileVersionId)
294                    throws PortalException {
295    
296                    return getRepository().getFileVersion(fileVersionId);
297            }
298    
299            @Override
300            public Folder getFolder(long folderId) throws PortalException {
301                    return getRepository().getFolder(folderId);
302            }
303    
304            @Override
305            public Folder getFolder(long parentFolderId, String name)
306                    throws PortalException {
307    
308                    return getRepository().getFolder(parentFolderId, name);
309            }
310    
311            @Override
312            public List<FileEntry> getRepositoryFileEntries(
313                            long userId, long rootFolderId, int start, int end,
314                            OrderByComparator<FileEntry> obc)
315                    throws PortalException {
316    
317                    return getRepository().getRepositoryFileEntries(
318                            userId, rootFolderId, start, end, obc);
319            }
320    
321            @Override
322            public long getRepositoryId() {
323                    return getRepository().getRepositoryId();
324            }
325    
326            @Override
327            public FileEntry moveFileEntry(
328                            long userId, long fileEntryId, long newFolderId,
329                            ServiceContext serviceContext)
330                    throws PortalException {
331    
332                    LocalRepository localRepository = getRepository();
333    
334                    FileEntry fileEntry = localRepository.moveFileEntry(
335                            userId, fileEntryId, newFolderId, serviceContext);
336    
337                    _repositoryEventTrigger.trigger(
338                            RepositoryEventType.Move.class, FileEntry.class, fileEntry);
339    
340                    return fileEntry;
341            }
342    
343            @Override
344            public Folder moveFolder(
345                            long userId, long folderId, long parentFolderId,
346                            ServiceContext serviceContext)
347                    throws PortalException {
348    
349                    LocalRepository localRepository = getRepository();
350    
351                    Folder folder = localRepository.moveFolder(
352                            userId, folderId, parentFolderId, serviceContext);
353    
354                    _repositoryEventTrigger.trigger(
355                            RepositoryEventType.Move.class, Folder.class, folder);
356    
357                    return folder;
358            }
359    
360            @Override
361            public void revertFileEntry(
362                            long userId, long fileEntryId, String version,
363                            ServiceContext serviceContext)
364                    throws PortalException {
365    
366                    LocalRepository localRepository = getRepository();
367    
368                    localRepository.revertFileEntry(
369                            userId, fileEntryId, version, serviceContext);
370    
371                    FileEntry fileEntry = getFileEntry(fileEntryId);
372    
373                    _repositoryEventTrigger.trigger(
374                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
375            }
376    
377            /**
378             * @deprecated As of 7.0.0, with no direct replacement
379             */
380            @Deprecated
381            @Override
382            public void updateAsset(
383                            long userId, FileEntry fileEntry, FileVersion fileVersion,
384                            long[] assetCategoryIds, String[] assetTagNames,
385                            long[] assetLinkEntryIds)
386                    throws PortalException {
387    
388                    getRepository().updateAsset(
389                            userId, fileEntry, fileVersion, assetCategoryIds, assetTagNames,
390                            assetLinkEntryIds);
391            }
392    
393            @Override
394            public FileEntry updateFileEntry(
395                            long userId, long fileEntryId, String sourceFileName,
396                            String mimeType, String title, String description, String changeLog,
397                            boolean majorVersion, File file, ServiceContext serviceContext)
398                    throws PortalException {
399    
400                    LocalRepository localRepository = getRepository();
401    
402                    FileEntry fileEntry = localRepository.updateFileEntry(
403                            userId, fileEntryId, sourceFileName, mimeType, title, description,
404                            changeLog, majorVersion, file, serviceContext);
405    
406                    _repositoryEventTrigger.trigger(
407                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
408    
409                    return fileEntry;
410            }
411    
412            @Override
413            public FileEntry updateFileEntry(
414                            long userId, long fileEntryId, String sourceFileName,
415                            String mimeType, String title, String description, String changeLog,
416                            boolean majorVersion, InputStream is, long size,
417                            ServiceContext serviceContext)
418                    throws PortalException {
419    
420                    LocalRepository localRepository = getRepository();
421    
422                    FileEntry fileEntry = localRepository.updateFileEntry(
423                            userId, fileEntryId, sourceFileName, mimeType, title, description,
424                            changeLog, majorVersion, is, size, serviceContext);
425    
426                    _repositoryEventTrigger.trigger(
427                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
428    
429                    return fileEntry;
430            }
431    
432            @Override
433            public FileShortcut updateFileShortcut(
434                            long userId, long fileShortcutId, long folderId, long toFileEntryId,
435                            ServiceContext serviceContext)
436                    throws PortalException {
437    
438                    LocalRepository localRepository = getRepository();
439    
440                    FileShortcut fileShortcut = localRepository.updateFileShortcut(
441                            userId, fileShortcutId, folderId, toFileEntryId, serviceContext);
442    
443                    _repositoryEventTrigger.trigger(
444                            RepositoryEventType.Update.class, FileShortcut.class, fileShortcut);
445    
446                    return fileShortcut;
447            }
448    
449            @Override
450            public void updateFileShortcuts(
451                            long oldToFileEntryId, long newToFileEntryId)
452                    throws PortalException {
453    
454                    LocalRepository localRepository = getRepository();
455    
456                    FileEntry fileEntry = localRepository.getFileEntry(oldToFileEntryId);
457    
458                    fileEntry.getFileShortcuts();
459    
460                    localRepository.updateFileShortcuts(oldToFileEntryId, newToFileEntryId);
461            }
462    
463            @Override
464            public Folder updateFolder(
465                            long folderId, long parentFolderId, String name, String description,
466                            ServiceContext serviceContext)
467                    throws PortalException {
468    
469                    LocalRepository localRepository = getRepository();
470    
471                    Folder folder = localRepository.updateFolder(
472                            folderId, parentFolderId, name, description, serviceContext);
473    
474                    _repositoryEventTrigger.trigger(
475                            RepositoryEventType.Update.class, Folder.class, folder);
476    
477                    return folder;
478            }
479    
480            private final RepositoryEventTrigger _repositoryEventTrigger;
481    
482    }