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.SyncCapability;
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,
042                    RepositoryEventTrigger repositoryEventTrigger) {
043    
044                    super(localRepository);
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 deleteAll() throws PortalException {
106                    LocalRepository localRepository = getRepository();
107    
108                    _repositoryEventTrigger.trigger(
109                            RepositoryEventType.Delete.class, LocalRepository.class,
110                            localRepository);
111    
112                    SyncCapability syncCapability = getInternalCapability(
113                            SyncCapability.class);
114    
115                    if (syncCapability != null) {
116                            syncCapability.destroyLocalRepository(this);
117                    }
118    
119                    localRepository.deleteAll();
120            }
121    
122            @Override
123            public void deleteFileEntry(long fileEntryId) throws PortalException {
124                    LocalRepository localRepository = getRepository();
125    
126                    FileEntry fileEntry = localRepository.getFileEntry(fileEntryId);
127    
128                    _repositoryEventTrigger.trigger(
129                            RepositoryEventType.Delete.class, FileEntry.class, fileEntry);
130    
131                    localRepository.deleteFileEntry(fileEntryId);
132            }
133    
134            @Override
135            public void deleteFolder(long folderId) throws PortalException {
136                    LocalRepository localRepository = getRepository();
137    
138                    Folder folder = localRepository.getFolder(folderId);
139    
140                    _repositoryEventTrigger.trigger(
141                            RepositoryEventType.Delete.class, Folder.class, folder);
142    
143                    localRepository.deleteFolder(folderId);
144            }
145    
146            @Override
147            public FileEntry getFileEntry(long fileEntryId) throws PortalException {
148                    return getRepository().getFileEntry(fileEntryId);
149            }
150    
151            @Override
152            public FileEntry getFileEntry(long folderId, String title)
153                    throws PortalException {
154    
155                    return getRepository().getFileEntry(folderId, title);
156            }
157    
158            @Override
159            public FileEntry getFileEntryByUuid(String uuid) throws PortalException {
160                    return getRepository().getFileEntryByUuid(uuid);
161            }
162    
163            @Override
164            public FileVersion getFileVersion(long fileVersionId)
165                    throws PortalException {
166    
167                    return getRepository().getFileVersion(fileVersionId);
168            }
169    
170            @Override
171            public Folder getFolder(long folderId) throws PortalException {
172                    return getRepository().getFolder(folderId);
173            }
174    
175            @Override
176            public Folder getFolder(long parentFolderId, String name)
177                    throws PortalException {
178    
179                    return getRepository().getFolder(parentFolderId, name);
180            }
181    
182            @Override
183            public List<FileEntry> getRepositoryFileEntries(
184                            long rootFolderId, int start, int end,
185                            OrderByComparator<FileEntry> obc)
186                    throws PortalException {
187    
188                    return getRepository().getRepositoryFileEntries(
189                            rootFolderId, start, end, obc);
190            }
191    
192            @Override
193            public long getRepositoryId() {
194                    return getRepository().getRepositoryId();
195            }
196    
197            @Override
198            public FileEntry moveFileEntry(
199                            long userId, long fileEntryId, long newFolderId,
200                            ServiceContext serviceContext)
201                    throws PortalException {
202    
203                    LocalRepository localRepository = getRepository();
204    
205                    FileEntry fileEntry = localRepository.moveFileEntry(
206                            userId, fileEntryId, newFolderId, serviceContext);
207    
208                    _repositoryEventTrigger.trigger(
209                            RepositoryEventType.Move.class, FileEntry.class, fileEntry);
210    
211                    return fileEntry;
212            }
213    
214            @Override
215            public Folder moveFolder(
216                            long userId, long folderId, long parentFolderId,
217                            ServiceContext serviceContext)
218                    throws PortalException {
219    
220                    LocalRepository localRepository = getRepository();
221    
222                    Folder folder = localRepository.moveFolder(
223                            userId, folderId, parentFolderId, serviceContext);
224    
225                    _repositoryEventTrigger.trigger(
226                            RepositoryEventType.Move.class, Folder.class, folder);
227    
228                    return folder;
229            }
230    
231            @Override
232            public void updateAsset(
233                            long userId, FileEntry fileEntry, FileVersion fileVersion,
234                            long[] assetCategoryIds, String[] assetTagNames,
235                            long[] assetLinkEntryIds)
236                    throws PortalException {
237    
238                    getRepository().updateAsset(
239                            userId, fileEntry, fileVersion, assetCategoryIds, assetTagNames,
240                            assetLinkEntryIds);
241            }
242    
243            @Override
244            public FileEntry updateFileEntry(
245                            long userId, long fileEntryId, String sourceFileName,
246                            String mimeType, String title, String description, String changeLog,
247                            boolean majorVersion, File file, ServiceContext serviceContext)
248                    throws PortalException {
249    
250                    LocalRepository localRepository = getRepository();
251    
252                    FileEntry fileEntry = localRepository.updateFileEntry(
253                            userId, fileEntryId, sourceFileName, mimeType, title, description,
254                            changeLog, majorVersion, file, serviceContext);
255    
256                    _repositoryEventTrigger.trigger(
257                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
258    
259                    return fileEntry;
260            }
261    
262            @Override
263            public FileEntry updateFileEntry(
264                            long userId, long fileEntryId, String sourceFileName,
265                            String mimeType, String title, String description, String changeLog,
266                            boolean majorVersion, InputStream is, long size,
267                            ServiceContext serviceContext)
268                    throws PortalException {
269    
270                    LocalRepository localRepository = getRepository();
271    
272                    FileEntry fileEntry = localRepository.updateFileEntry(
273                            userId, fileEntryId, sourceFileName, mimeType, title, description,
274                            changeLog, majorVersion, is, size, serviceContext);
275    
276                    _repositoryEventTrigger.trigger(
277                            RepositoryEventType.Update.class, FileEntry.class, fileEntry);
278    
279                    return fileEntry;
280            }
281    
282            @Override
283            public Folder updateFolder(
284                            long folderId, long parentFolderId, String name, String description,
285                            ServiceContext serviceContext)
286                    throws PortalException {
287    
288                    LocalRepository localRepository = getRepository();
289    
290                    Folder folder = localRepository.updateFolder(
291                            folderId, parentFolderId, name, description, serviceContext);
292    
293                    _repositoryEventTrigger.trigger(
294                            RepositoryEventType.Update.class, Folder.class, folder);
295    
296                    return folder;
297            }
298    
299            private final RepositoryEventTrigger _repositoryEventTrigger;
300    
301    }