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.portletrepository;
016    
017    import com.liferay.portal.kernel.repository.DocumentRepository;
018    import com.liferay.portal.kernel.repository.RepositoryFactory;
019    import com.liferay.portal.kernel.repository.capabilities.ProcessorCapability;
020    import com.liferay.portal.kernel.repository.capabilities.RelatedModelCapability;
021    import com.liferay.portal.kernel.repository.capabilities.TrashCapability;
022    import com.liferay.portal.kernel.repository.capabilities.WorkflowCapability;
023    import com.liferay.portal.kernel.repository.registry.BaseRepositoryDefiner;
024    import com.liferay.portal.kernel.repository.registry.CapabilityRegistry;
025    import com.liferay.portal.kernel.repository.registry.RepositoryFactoryRegistry;
026    import com.liferay.portal.repository.capabilities.LiferayProcessorCapability;
027    import com.liferay.portal.repository.capabilities.LiferayRelatedModelCapability;
028    import com.liferay.portal.repository.capabilities.LiferayTrashCapability;
029    import com.liferay.portal.repository.capabilities.MinimalWorkflowCapability;
030    import com.liferay.portal.repository.capabilities.util.DLAppServiceAdapter;
031    import com.liferay.portal.repository.capabilities.util.DLFileEntryServiceAdapter;
032    import com.liferay.portal.repository.capabilities.util.DLFolderServiceAdapter;
033    import com.liferay.portal.repository.capabilities.util.RepositoryEntryChecker;
034    import com.liferay.portal.repository.capabilities.util.RepositoryEntryConverter;
035    import com.liferay.portal.repository.capabilities.util.RepositoryServiceAdapter;
036    import com.liferay.portlet.documentlibrary.service.DLAppHelperLocalServiceUtil;
037    import com.liferay.portlet.trash.service.TrashEntryLocalServiceUtil;
038    import com.liferay.portlet.trash.service.TrashVersionLocalServiceUtil;
039    
040    /**
041     * @author Adolfo P??rez
042     */
043    public class PortletRepositoryDefiner extends BaseRepositoryDefiner {
044    
045            @Override
046            public String getClassName() {
047                    return PortletRepository.class.getName();
048            }
049    
050            @Override
051            public boolean isExternalRepository() {
052                    return false;
053            }
054    
055            @Override
056            public void registerCapabilities(
057                    CapabilityRegistry<DocumentRepository> capabilityRegistry) {
058    
059                    DocumentRepository documentRepository = capabilityRegistry.getTarget();
060    
061                    DLFileEntryServiceAdapter dlFileEntryServiceAdapter =
062                            DLFileEntryServiceAdapter.create(documentRepository);
063    
064                    capabilityRegistry.addExportedCapability(
065                            RelatedModelCapability.class,
066                            new LiferayRelatedModelCapability(
067                                    new RepositoryEntryConverter(),
068                                    new RepositoryEntryChecker(documentRepository)));
069    
070                    TrashCapability trashCapability = new LiferayTrashCapability(
071                            DLAppHelperLocalServiceUtil.getService(),
072                            DLAppServiceAdapter.create(documentRepository),
073                            dlFileEntryServiceAdapter,
074                            DLFolderServiceAdapter.create(documentRepository),
075                            RepositoryServiceAdapter.create(documentRepository),
076                            TrashEntryLocalServiceUtil.getService(),
077                            TrashVersionLocalServiceUtil.getService());
078    
079                    capabilityRegistry.addExportedCapability(
080                            TrashCapability.class, trashCapability);
081    
082                    capabilityRegistry.addExportedCapability(
083                            WorkflowCapability.class,
084                            new MinimalWorkflowCapability(dlFileEntryServiceAdapter));
085    
086                    capabilityRegistry.addSupportedCapability(
087                            ProcessorCapability.class, new LiferayProcessorCapability());
088            }
089    
090            @Override
091            public void registerRepositoryFactory(
092                    RepositoryFactoryRegistry repositoryFactoryRegistry) {
093    
094                    repositoryFactoryRegistry.setRepositoryFactory(_repositoryFactory);
095            }
096    
097            public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
098                    _repositoryFactory = repositoryFactory;
099            }
100    
101            private RepositoryFactory _repositoryFactory;
102    
103    }