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.liferayrepository;
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.ProcessorCapability;
020    import com.liferay.portal.kernel.repository.model.FileEntry;
021    import com.liferay.portal.kernel.repository.model.FileVersion;
022    import com.liferay.portal.repository.util.LocalRepositoryWrapper;
023    import com.liferay.portal.service.ServiceContext;
024    
025    import java.io.File;
026    import java.io.InputStream;
027    
028    /**
029     * @author Adolfo P??rez
030     */
031    public class LiferayProcessorLocalRepositoryWrapper
032            extends LocalRepositoryWrapper {
033    
034            public LiferayProcessorLocalRepositoryWrapper(
035                    LocalRepository localRepository,
036                    ProcessorCapability processorCapability) {
037    
038                    super(localRepository);
039    
040                    _processorCapability = processorCapability;
041            }
042    
043            @Override
044            public FileEntry addFileEntry(
045                            long userId, long folderId, String sourceFileName, String mimeType,
046                            String title, String description, String changeLog, File file,
047                            ServiceContext serviceContext)
048                    throws PortalException {
049    
050                    FileEntry fileEntry = super.addFileEntry(
051                            userId, folderId, sourceFileName, mimeType, title, description,
052                            changeLog, file, serviceContext);
053    
054                    _processorCapability.generateNew(fileEntry);
055    
056                    return fileEntry;
057            }
058    
059            @Override
060            public FileEntry addFileEntry(
061                            long userId, long folderId, String sourceFileName, String mimeType,
062                            String title, String description, String changeLog, InputStream is,
063                            long size, ServiceContext serviceContext)
064                    throws PortalException {
065    
066                    FileEntry fileEntry = super.addFileEntry(
067                            userId, folderId, sourceFileName, mimeType, title, description,
068                            changeLog, is, size, serviceContext);
069    
070                    _processorCapability.generateNew(fileEntry);
071    
072                    return fileEntry;
073            }
074    
075            @Override
076            public void checkInFileEntry(
077                            long userId, long fileEntryId, boolean major, String changeLog,
078                            ServiceContext serviceContext)
079                    throws PortalException {
080    
081                    FileEntry fileEntry = getFileEntry(fileEntryId);
082    
083                    _processorCapability.cleanUp(fileEntry.getLatestFileVersion(true));
084    
085                    super.checkInFileEntry(
086                            userId, fileEntryId, major, changeLog, serviceContext);
087    
088                    _processorCapability.copyPrevious(fileEntry.getFileVersion());
089            }
090    
091            @Override
092            public void checkInFileEntry(
093                            long userId, long fileEntryId, String lockUuid,
094                            ServiceContext serviceContext)
095                    throws PortalException {
096    
097                    FileEntry fileEntry = getFileEntry(fileEntryId);
098    
099                    _processorCapability.cleanUp(fileEntry.getLatestFileVersion(true));
100    
101                    super.checkInFileEntry(userId, fileEntryId, lockUuid, serviceContext);
102    
103                    _processorCapability.copyPrevious(fileEntry.getFileVersion());
104            }
105    
106            @Override
107            public void deleteFileEntry(long fileEntryId) throws PortalException {
108                    FileEntry fileEntry = getFileEntry(fileEntryId);
109    
110                    super.deleteFileEntry(fileEntryId);
111    
112                    _processorCapability.cleanUp(fileEntry);
113            }
114    
115            @Override
116            public void revertFileEntry(
117                            long userId, long fileEntryId, String version,
118                            ServiceContext serviceContext)
119                    throws PortalException {
120    
121                    super.revertFileEntry(userId, fileEntryId, version, serviceContext);
122    
123                    FileEntry fileEntry = getFileEntry(fileEntryId);
124    
125                    _processorCapability.copyPrevious(fileEntry.getFileVersion(version));
126            }
127    
128            @Override
129            public FileEntry updateFileEntry(
130                            long userId, long fileEntryId, String sourceFileName,
131                            String mimeType, String title, String description, String changeLog,
132                            boolean majorVersion, File file, ServiceContext serviceContext)
133                    throws PortalException {
134    
135                    FileEntry fileEntry = super.updateFileEntry(
136                            userId, fileEntryId, sourceFileName, mimeType, title, description,
137                            changeLog, majorVersion, file, serviceContext);
138    
139                    _processorCapability.cleanUp(fileEntry.getLatestFileVersion(true));
140                    _processorCapability.generateNew(fileEntry);
141    
142                    return fileEntry;
143            }
144    
145            @Override
146            public FileEntry updateFileEntry(
147                            long userId, long fileEntryId, String sourceFileName,
148                            String mimeType, String title, String description, String changeLog,
149                            boolean majorVersion, InputStream is, long size,
150                            ServiceContext serviceContext)
151                    throws PortalException {
152    
153                    FileEntry oldFileEntry = null;
154                    FileVersion oldFileVersion = null;
155    
156                    if (is == null) {
157                            oldFileEntry = getFileEntry(fileEntryId);
158                            oldFileVersion = oldFileEntry.getLatestFileVersion(true);
159                    }
160    
161                    FileEntry fileEntry = super.updateFileEntry(
162                            userId, fileEntryId, sourceFileName, mimeType, title, description,
163                            changeLog, majorVersion, is, size, serviceContext);
164    
165                    if (is == null) {
166                            _processorCapability.copyPrevious(oldFileVersion);
167                    }
168                    else {
169                            _processorCapability.cleanUp(fileEntry.getLatestFileVersion(true));
170                            _processorCapability.generateNew(fileEntry);
171                    }
172    
173                    return fileEntry;
174            }
175    
176            private final ProcessorCapability _processorCapability;
177    
178    }