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.bean.BeanReference;
018    import com.liferay.portal.kernel.repository.LocalRepository;
019    import com.liferay.portal.kernel.repository.Repository;
020    import com.liferay.portal.kernel.repository.RepositoryFactory;
021    import com.liferay.portal.service.RepositoryLocalService;
022    import com.liferay.portal.service.RepositoryService;
023    import com.liferay.portal.service.ResourceLocalService;
024    import com.liferay.portlet.documentlibrary.service.DLAppHelperLocalService;
025    import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService;
026    import com.liferay.portlet.documentlibrary.service.DLFileEntryService;
027    import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalService;
028    import com.liferay.portlet.documentlibrary.service.DLFileShortcutLocalService;
029    import com.liferay.portlet.documentlibrary.service.DLFileShortcutService;
030    import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalService;
031    import com.liferay.portlet.documentlibrary.service.DLFileVersionService;
032    import com.liferay.portlet.documentlibrary.service.DLFolderLocalService;
033    import com.liferay.portlet.documentlibrary.service.DLFolderService;
034    
035    /**
036     * @author Adolfo P??rez
037     */
038    public class LiferayRepositoryFactory implements RepositoryFactory {
039    
040            @Override
041            public LocalRepository createLocalRepository(long repositoryId) {
042                    long[] repositoryLocation = getRepositoryLocation(repositoryId);
043    
044                    return createLocalRepositoryInstance(repositoryLocation);
045            }
046    
047            @Override
048            public Repository createRepository(long repositoryId) {
049                    long[] repositoryLocation = getRepositoryLocation(repositoryId);
050    
051                    return createRepositoryInstance(repositoryLocation);
052            }
053    
054            protected LocalRepository createLocalRepositoryInstance(
055                    long[] repositoryLocation) {
056    
057                    long groupId = repositoryLocation[0];
058                    long repositoryId = repositoryLocation[1];
059                    long dlFolderId = repositoryLocation[2];
060    
061                    return new LiferayLocalRepository(
062                            _repositoryLocalService, _repositoryService,
063                            _dlAppHelperLocalService, _dlFileEntryLocalService,
064                            _dlFileEntryService, _dlFileEntryTypeLocalService,
065                            _dlFileShortcutLocalService, _dlFileShortcutService,
066                            _dlFileVersionLocalService, _dlFileVersionService,
067                            _dlFolderLocalService, _dlFolderService, _resourceLocalService,
068                            groupId, repositoryId, dlFolderId);
069            }
070    
071            protected Repository createRepositoryInstance(long[] repositoryLocation) {
072                    long groupId = repositoryLocation[0];
073                    long repositoryId = repositoryLocation[1];
074                    long dlFolderId = repositoryLocation[2];
075    
076                    return new LiferayRepository(
077                            _repositoryLocalService, _repositoryService,
078                            _dlAppHelperLocalService, _dlFileEntryLocalService,
079                            _dlFileEntryService, _dlFileEntryTypeLocalService,
080                            _dlFileShortcutLocalService, _dlFileShortcutService,
081                            _dlFileVersionLocalService, _dlFileVersionService,
082                            _dlFolderLocalService, _dlFolderService, _resourceLocalService,
083                            groupId, repositoryId, dlFolderId);
084            }
085    
086            protected long[] getRepositoryLocation(long repositoryId) {
087                    long dlFolderId = 0;
088                    long groupId = 0;
089    
090                    com.liferay.portal.model.Repository repository =
091                            _repositoryLocalService.fetchRepository(repositoryId);
092    
093                    if (repository == null) {
094                            groupId = repositoryId;
095                    }
096                    else {
097                            groupId = repository.getGroupId();
098                            dlFolderId = repository.getDlFolderId();
099                    }
100    
101                    return new long[] {groupId, repositoryId, dlFolderId};
102            }
103    
104            @BeanReference(type = DLAppHelperLocalService.class)
105            private DLAppHelperLocalService _dlAppHelperLocalService;
106    
107            @BeanReference(type = DLFileEntryLocalService.class)
108            private DLFileEntryLocalService _dlFileEntryLocalService;
109    
110            @BeanReference(type = DLFileEntryService.class)
111            private DLFileEntryService _dlFileEntryService;
112    
113            @BeanReference(type = DLFileEntryTypeLocalService.class)
114            private DLFileEntryTypeLocalService _dlFileEntryTypeLocalService;
115    
116            @BeanReference(type = DLFileShortcutLocalService.class)
117            private DLFileShortcutLocalService _dlFileShortcutLocalService;
118    
119            @BeanReference(type = DLFileShortcutService.class)
120            private DLFileShortcutService _dlFileShortcutService;
121    
122            @BeanReference(type = DLFileVersionLocalService.class)
123            private DLFileVersionLocalService _dlFileVersionLocalService;
124    
125            @BeanReference(type = DLFileVersionService.class)
126            private DLFileVersionService _dlFileVersionService;
127    
128            @BeanReference(type = DLFolderLocalService.class)
129            private DLFolderLocalService _dlFolderLocalService;
130    
131            @BeanReference(type = DLFolderService.class)
132            private DLFolderService _dlFolderService;
133    
134            @BeanReference(type = RepositoryLocalService.class)
135            private RepositoryLocalService _repositoryLocalService;
136    
137            @BeanReference(type = RepositoryService.class)
138            private RepositoryService _repositoryService;
139    
140            @BeanReference(type = ResourceLocalService.class)
141            private ResourceLocalService _resourceLocalService;
142    
143    }