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.portlet.documentlibrary.context;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.repository.model.FileEntry;
020    import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
021    import com.liferay.registry.Registry;
022    import com.liferay.registry.RegistryUtil;
023    
024    import java.util.Collection;
025    
026    import javax.servlet.http.HttpServletRequest;
027    import javax.servlet.http.HttpServletResponse;
028    
029    /**
030     * @author Iv??n Zaera
031     */
032    public class DLEditFileEntryDisplayContextUtil {
033    
034            public static DLEditFileEntryDisplayContext
035                    getDLEditFileEntryDisplayContext(
036                            HttpServletRequest request, HttpServletResponse response,
037                            DLFileEntryType dlFileEntryType)
038                    throws PortalException {
039    
040                    DLEditFileEntryDisplayContext dlEditFileEntryDisplayContext =
041                            new DefaultDLEditFileEntryDisplayContext(
042                                    request, response, dlFileEntryType);
043    
044                    return _chainDLEditFileEntryDisplayContexts(
045                            dlEditFileEntryDisplayContext, request, response, dlFileEntryType);
046            }
047    
048            public static DLEditFileEntryDisplayContext
049                    getDLEditFileEntryDisplayContext(
050                            HttpServletRequest request, HttpServletResponse response,
051                            FileEntry fileEntry)
052                    throws PortalException {
053    
054                    DLEditFileEntryDisplayContext dlEditFileEntryDisplayContext =
055                            new DefaultDLEditFileEntryDisplayContext(
056                                    request, response, fileEntry);
057    
058                    return _chainDLEditFileEntryDisplayContexts(
059                            dlEditFileEntryDisplayContext, request, response, fileEntry);
060            }
061    
062            private static DLEditFileEntryDisplayContext
063                    _chainDLEditFileEntryDisplayContexts(
064                            DLEditFileEntryDisplayContext dlEditFileEntryDisplayContext,
065                            HttpServletRequest request, HttpServletResponse response,
066                            DLFileEntryType dlFileEntryType) {
067    
068                    Collection<DLEditFileEntryDisplayContextFactory>
069                            dlEditFileEntryDisplayContextFactories =
070                                    _getDLEditFileEntryDisplayContextFactories();
071    
072                    for (DLEditFileEntryDisplayContextFactory
073                                    dlEditFileEntryDisplayContextFactory :
074                                            dlEditFileEntryDisplayContextFactories) {
075    
076                            dlEditFileEntryDisplayContext =
077                                    dlEditFileEntryDisplayContextFactory.
078                                            getDLEditFileEntryDisplayContext(
079                                                    dlEditFileEntryDisplayContext, request, response,
080                                                    dlFileEntryType);
081                    }
082    
083                    return dlEditFileEntryDisplayContext;
084            }
085    
086            private static DLEditFileEntryDisplayContext
087                    _chainDLEditFileEntryDisplayContexts(
088                            DLEditFileEntryDisplayContext dlEditFileEntryDisplayContext,
089                            HttpServletRequest request, HttpServletResponse response,
090                            FileEntry fileEntry) {
091    
092                    Collection<DLEditFileEntryDisplayContextFactory>
093                            dlEditFileEntryDisplayContextFactories =
094                                    _getDLEditFileEntryDisplayContextFactories();
095    
096                    for (DLEditFileEntryDisplayContextFactory
097                                    dlEditFileEntryDisplayContextFactory :
098                                            dlEditFileEntryDisplayContextFactories) {
099    
100                            dlEditFileEntryDisplayContext =
101                                    dlEditFileEntryDisplayContextFactory.
102                                            getDLEditFileEntryDisplayContext(
103                                                    dlEditFileEntryDisplayContext, request, response,
104                                                    fileEntry);
105                    }
106    
107                    return dlEditFileEntryDisplayContext;
108            }
109    
110            private static Collection<DLEditFileEntryDisplayContextFactory>
111                    _getDLEditFileEntryDisplayContextFactories() {
112    
113                    try {
114                            Registry registry = RegistryUtil.getRegistry();
115    
116                            return registry.getServices(
117                                    DLEditFileEntryDisplayContextFactory.class, null);
118                    }
119                    catch (Exception e) {
120                            throw new SystemException(e);
121                    }
122            }
123    
124    }