001    /**
002     * Copyright (c) 2000-2013 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.kernel.template;
016    
017    import java.util.Collections;
018    import java.util.List;
019    import java.util.Map;
020    import java.util.Set;
021    import java.util.concurrent.ConcurrentHashMap;
022    
023    /**
024     * @author Tina Tian
025     */
026    public class TemplateResourceLoaderUtil {
027    
028            public static void clearCache() {
029                    for (TemplateResourceLoader templateResourceLoader :
030                                    _templateResourceLoaders.values()) {
031    
032                            templateResourceLoader.clearCache();
033                    }
034            }
035    
036            public static void clearCache(String templateResourceLoaderName)
037                    throws TemplateException {
038    
039                    TemplateResourceLoader templateResourceLoader =
040                            _getTemplateResourceLoader(templateResourceLoaderName);
041    
042                    templateResourceLoader.clearCache();
043            }
044    
045            public static void clearCache(
046                            String templateResourceLoaderName, String templateId)
047                    throws TemplateException {
048    
049                    TemplateResourceLoader templateResourceLoader =
050                            _getTemplateResourceLoader(templateResourceLoaderName);
051    
052                    templateResourceLoader.clearCache(templateId);
053            }
054    
055            public static void destroy() {
056                    for (TemplateResourceLoader templateResourceLoader :
057                                    _templateResourceLoaders.values()) {
058    
059                            templateResourceLoader.destroy();
060                    }
061    
062                    _templateResourceLoaders.clear();
063            }
064    
065            public static TemplateResource getTemplateResource(
066                            String templateResourceLoaderName, String templateId)
067                    throws TemplateException {
068    
069                    TemplateResourceLoader templateResourceLoader =
070                            _getTemplateResourceLoader(templateResourceLoaderName);
071    
072                    return templateResourceLoader.getTemplateResource(templateId);
073            }
074    
075            public static TemplateResourceLoader getTemplateResourceLoader(
076                    String templateResourceLoaderName) {
077    
078                    return _templateResourceLoaders.get(templateResourceLoaderName);
079            }
080    
081            public static Set<String> getTemplateResourceLoaderNames() {
082                    return _templateResourceLoaders.keySet();
083            }
084    
085            public static Map<String, TemplateResourceLoader>
086                    getTemplateResourceLoaders() {
087    
088                    return Collections.unmodifiableMap(_templateResourceLoaders);
089            }
090    
091            public static boolean hasTemplateResource(
092                            String templateResourceLoaderName, String templateId)
093                    throws TemplateException {
094    
095                    TemplateResourceLoader templateResourceLoader =
096                            _getTemplateResourceLoader(templateResourceLoaderName);
097    
098                    return templateResourceLoader.hasTemplateResource(templateId);
099            }
100    
101            public static boolean hasTemplateResourceLoader(
102                    String templateResourceLoaderName) {
103    
104                    return _templateResourceLoaders.containsKey(templateResourceLoaderName);
105            }
106    
107            public static void registerTemplateResourceLoader(
108                    TemplateResourceLoader templateResourceLoader) {
109    
110                    _templateResourceLoaders.put(
111                            templateResourceLoader.getName(), templateResourceLoader);
112            }
113    
114            public static void unregisterTemplateResourceLoader(
115                    String templateResourceLoaderName) {
116    
117                    TemplateResourceLoader templateResourceLoader =
118                            _templateResourceLoaders.remove(templateResourceLoaderName);
119    
120                    if (templateResourceLoader != null) {
121                            templateResourceLoader.destroy();
122                    }
123            }
124    
125            public void setTemplateResourceLoaders(
126                    List<TemplateResourceLoader> templateResourceLoaders) {
127    
128                    for (TemplateResourceLoader templateResourceLoader :
129                                    templateResourceLoaders) {
130    
131                            _templateResourceLoaders.put(
132                                    templateResourceLoader.getName(), templateResourceLoader);
133                    }
134            }
135    
136            private static TemplateResourceLoader _getTemplateResourceLoader(
137                            String templateResourceLoaderName)
138                    throws TemplateException {
139    
140                    TemplateResourceLoader templateResourceLoader =
141                            _templateResourceLoaders.get(templateResourceLoaderName);
142    
143                    if (templateResourceLoader == null) {
144                            throw new TemplateException(
145                                    "Unsupported template resource loader " +
146                                            templateResourceLoaderName);
147                    }
148    
149                    return templateResourceLoader;
150            }
151    
152            private static Map<String, TemplateResourceLoader>
153                    _templateResourceLoaders =
154                            new ConcurrentHashMap<String, TemplateResourceLoader>();
155    
156    }