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.FileVersion;
024    import com.liferay.portal.kernel.repository.model.Folder;
025    import com.liferay.portal.kernel.util.OrderByComparator;
026    import com.liferay.portal.service.ServiceContext;
027    
028    import java.io.File;
029    import java.io.InputStream;
030    
031    import java.util.List;
032    
033    /**
034     * @author Adolfo P??rez
035     */
036    public class CapabilityLocalRepository
037            extends BaseCapabilityRepository<LocalRepository>
038            implements LocalRepository {
039    
040            public CapabilityLocalRepository(
041                    LocalRepository localRepository, CapabilityProvider capabilityProvider,
042                    RepositoryEventTrigger repositoryEventTrigger) {
043    
044                    super(localRepository, capabilityProvider);
045    
046                    _repositoryEventTrigger = repositoryEventTrigger;
047            }
048    
049            @Override
050            public FileEntry addFileEntry(
051                            long userId, long folderId, String sourceFileName, String mimeType,
052                            String title, String description, String changeLog, File file,
053                            ServiceContext serviceContext)
054                    throws PortalException {
055    
056                    LocalRepository localRepository = getRepository();
057    
058                    FileEntry fileEntry = localRepository.addFileEntry(
059                            userId, folderId, sourceFileName, mimeType, title, description,
060                            changeLog, file, serviceContext);
061    
062                    _repositoryEventTrigger.trigger(
063                            RepositoryEventType.Add.class, FileEntry.class, fileEntry);
064    
065                    return fileEntry;
066            }
067    
068            @Override
069            public FileEntry addFileEntry(
070                            long userId, long folderId, String sourceFileName, String mimeType,
071                            String title, String description, String changeLog, InputStream is,
072                            long size, ServiceContext serviceContext)
073                    throws PortalException {
074    
075                    LocalRepository localRepository = getRepository();
076    
077                    FileEntry fileEntry = localRepository.addFileEntry(
078                            userId, folderId, sourceFileName, mimeType, title, description,
079                            changeLog, is, size, serviceContext);
080    
081                    _repositoryEventTrigger.trigger(
082                            RepositoryEventType.Add.class, FileEntry.class, fileEntry);
083    
084                    return fileEntry;
085            }
086    
087            @Override
088            public Folder addFolder(
089                            long userId, long parentFolderId, String name, String description,
090                            ServiceContext serviceContext)
091                    throws PortalException {
092    
093                    LocalRepository localRepository = getRepository();
094    
095                    Folder folder = localRepository.addFolder(
096                            userId, parentFolderId, name, description, serviceContext);
097    
098                    _repositoryEventTrigger.trigger(
099                            RepositoryEventType.Add.class, Folder.class, folder);
100    
101                    return folder;
102            }
103    
104            @Override
105            public void checkInFileEntry(
106                            long userId, long fileEntryId, boolean major, String changeLog,
107                            ServiceContext serviceContext)
108                    throws PortalException {
109    
110                    LocalRepository localRepository = getRepository();
111    
112                    localRepository.checkInFileEntry(
113                            userId, fileEntryId, major, changeLog, serviceContext);
114    
115                    FileEntry fileEntry = localRepository.getFileEntry(fileEntryId);
116    
117                    _repositoryEventTrigger.trigger(
118                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
119            }
120    
121            @Override
122            public void checkInFileEntry(
123                            long userId, long fileEntryId, String lockUuid,
124                            ServiceContext serviceContext)
125                    throws PortalException {
126    
127                    LocalRepository localRepository = getRepository();
128    
129                    localRepository.checkInFileEntry(
130                            userId, fileEntryId, lockUuid, serviceContext);
131    
132                    FileEntry fileEntry = localRepository.getFileEntry(fileEntryId);
133    
134                    _repositoryEventTrigger.trigger(
135                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
136            }
137    
138            @Override
139            public FileEntry copyFileEntry(
140                            long userId, long groupId, long fileEntryId, long destFolderId,
141                            ServiceContext serviceContext)
142                    throws PortalException {
143    
144                    LocalRepository localRepository = getRepository();
145    
146                    FileEntry fileEntry = localRepository.copyFileEntry(
147                            userId, groupId, fileEntryId, destFolderId, serviceContext);
148    
149                    _repositoryEventTrigger.trigger(
150                            RepositoryEventType.Add.class, FileEntry.class, fileEntry);
151    
152                    return fileEntry;
153            }
154    
155            @Override
156            public void deleteAll() throws PortalException {
157                    LocalRepository localRepository = getRepository();
158    
159                    _repositoryEventTrigger.trigger(
160                            RepositoryEventType.Delete.class, LocalRepository.class,
161                            localRepository);
162    
163                    localRepository.deleteAll();
164            }
165    
166            @Override
167            public void deleteFileEntry(long fileEntryId) throws PortalException {
168                    LocalRepository localRepository = getRepository();
169    
170                    FileEntry fileEntry = localRepository.getFileEntry(fileEntryId);
171    
172                    _repositoryEventTrigger.trigger(
173                            RepositoryEventType.Delete.class, FileEntry.class, fileEntry);
174    
175                    localRepository.deleteFileEntry(fileEntryId);
176            }
177    
178            @Override
179            public void deleteFolder(long folderId) throws PortalException {
180                    LocalRepository localRepository = getRepository();
181    
182                    Folder folder = localRepository.getFolder(folderId);
183    
184                    _repositoryEventTrigger.trigger(
185                            RepositoryEventType.Delete.class, Folder.class, folder);
186    
187                    localRepository.deleteFolder(folderId);
188            }
189    
190            @Override
191            public FileEntry getFileEntry(long fileEntryId) throws PortalException {
192                    return getRepository().getFileEntry(fileEntryId);
193            }
194    
195            @Override
196            public FileEntry getFileEntry(long folderId, String title)
197                    throws PortalException {
198    
199                    return getRepository().getFileEntry(folderId, title);
200            }
201    
202            @Override
203            public FileEntry getFileEntryByUuid(String uuid) throws PortalException {
204                    return getRepository().getFileEntryByUuid(uuid);
205            }
206    
207            @Override
208            public FileVersion getFileVersion(long fileVersionId)
209                    throws PortalException {
210    
211                    return getRepository().getFileVersion(fileVersionId);
212            }
213    
214            @Override
215            public Folder getFolder(long folderId) throws PortalException {
216                    return getRepository().getFolder(folderId);
217            }
218    
219            @Override
220            public Folder getFolder(long parentFolderId, String name)
221                    throws PortalException {
222    
223                    return getRepository().getFolder(parentFolderId, name);
224            }
225    
226            @Override
227            public List<FileEntry> getRepositoryFileEntries(
228                            long userId, long rootFolderId, int start, int end,
229                            OrderByComparator<FileEntry> obc)
230                    throws PortalException {
231    
232                    return getRepository().getRepositoryFileEntries(
233                            userId, rootFolderId, start, end, obc);
234            }
235    
236            @Override
237            public long getRepositoryId() {
238                    return getRepository().getRepositoryId();
239            }
240    
241            @Override
242            public FileEntry moveFileEntry(
243                            long userId, long fileEntryId, long newFolderId,
244                            ServiceContext serviceContext)
245                    throws PortalException {
246    
247                    LocalRepository localRepository = getRepository();
248    
249                    FileEntry fileEntry = localRepository.moveFileEntry(
250                            userId, fileEntryId, newFolderId, serviceContext);
251    
252                    _repositoryEventTrigger.trigger(
253                            RepositoryEventType.Move.class, FileEntry.class, fileEntry);
254    
255                    return fileEntry;
256            }
257    
258            @Override
259            public Folder moveFolder(
260                            long userId, long folderId, long parentFolderId,
261                            ServiceContext serviceContext)
262                    throws PortalException {
263    
264                    LocalRepository localRepository = getRepository();
265    
266                    Folder folder = localRepository.moveFolder(
267                            userId, folderId, parentFolderId, serviceContext);
268    
269                    _repositoryEventTrigger.trigger(
270                            RepositoryEventType.Move.class, Folder.class, folder);
271    
272                    return folder;
273            }
274    
275            @Override
276            public void revertFileEntry(
277                            long userId, long fileEntryId, String version,
278                            ServiceContext serviceContext)
279                    throws PortalException {
280    
281                    LocalRepository localRepository = getRepository();
282    
283                    localRepository.revertFileEntry(
284                            userId, fileEntryId, version, serviceContext);
285    
286                    FileEntry fileEntry = getFileEntry(fileEntryId);
287    
288                    _repositoryEventTrigger.trigger(
289                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
290            }
291    
292            /**
293             * @deprecated As of 7.0.0, with no direct replacement
294             */
295            @Deprecated
296            @Override
297            public void updateAsset(
298                            long userId, FileEntry fileEntry, FileVersion fileVersion,
299                            long[] assetCategoryIds, String[] assetTagNames,
300                            long[] assetLinkEntryIds)
301                    throws PortalException {
302    
303                    getRepository().updateAsset(
304                            userId, fileEntry, fileVersion, assetCategoryIds, assetTagNames,
305                            assetLinkEntryIds);
306            }
307    
308            @Override
309            public FileEntry updateFileEntry(
310                            long userId, long fileEntryId, String sourceFileName,
311                            String mimeType, String title, String description, String changeLog,
312                            boolean majorVersion, File file, ServiceContext serviceContext)
313                    throws PortalException {
314    
315                    LocalRepository localRepository = getRepository();
316    
317                    FileEntry fileEntry = localRepository.updateFileEntry(
318                            userId, fileEntryId, sourceFileName, mimeType, title, description,
319                            changeLog, majorVersion, file, serviceContext);
320    
321                    _repositoryEventTrigger.trigger(
322                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
323    
324                    return fileEntry;
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 {
334    
335                    LocalRepository localRepository = getRepository();
336    
337                    FileEntry fileEntry = localRepository.updateFileEntry(
338                            userId, fileEntryId, sourceFileName, mimeType, title, description,
339                            changeLog, majorVersion, is, size, serviceContext);
340    
341                    _repositoryEventTrigger.trigger(
342                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
343    
344                    return fileEntry;
345            }
346    
347            @Override
348            public Folder updateFolder(
349                            long folderId, long parentFolderId, String name, String description,
350                            ServiceContext serviceContext)
351                    throws PortalException {
352    
353                    LocalRepository localRepository = getRepository();
354    
355                    Folder folder = localRepository.updateFolder(
356                            folderId, parentFolderId, name, description, serviceContext);
357    
358                    _repositoryEventTrigger.trigger(
359                            RepositoryEventType.Update.class, Folder.class, folder);
360    
361                    return folder;
362            }
363    
364            private final RepositoryEventTrigger _repositoryEventTrigger;
365    
366    }