001    /**
002     * Copyright (c) 2000-2012 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.portletdisplaytemplate;
016    
017    import com.liferay.portal.kernel.portletdisplaytemplate.PortletDisplayTemplateHandler;
018    import com.liferay.portal.kernel.portletdisplaytemplate.PortletDisplayTemplateHandlerRegistry;
019    import com.liferay.portal.kernel.util.ListUtil;
020    import com.liferay.portal.util.PortalUtil;
021    
022    import java.util.HashMap;
023    import java.util.List;
024    import java.util.Map;
025    
026    /**
027     * @author Juan Fernández
028     */
029    public class PortletDisplayTemplateHandlerRegistryImpl
030            implements PortletDisplayTemplateHandlerRegistry {
031    
032            public long[] getClassNameIds() {
033                    long[] classNameIds = new long[_portletDisplayTemplateHandlers.size()];
034    
035                    int i = 0;
036    
037                    for (Map.Entry<String, PortletDisplayTemplateHandler> entry :
038                                    _portletDisplayTemplateHandlers.entrySet()) {
039    
040                            PortletDisplayTemplateHandler portletDisplayTemplateHandler =
041                                    entry.getValue();
042    
043                            classNameIds[i++] = PortalUtil.getClassNameId(
044                                    portletDisplayTemplateHandler.getClassName());
045                    }
046    
047                    return classNameIds;
048            }
049    
050            public PortletDisplayTemplateHandler getPortletDisplayTemplateHandler(
051                    long classNameId) {
052    
053                    String className = PortalUtil.getClassName(classNameId);
054    
055                    return _portletDisplayTemplateHandlers.get(className);
056            }
057    
058            public PortletDisplayTemplateHandler getPortletDisplayTemplateHandler(
059                    String className) {
060    
061                    return _portletDisplayTemplateHandlers.get(className);
062            }
063    
064            public List<PortletDisplayTemplateHandler>
065                    getPortletDisplayTemplateHandlers() {
066    
067                    return ListUtil.fromMapValues(_portletDisplayTemplateHandlers);
068            }
069    
070            public void register(
071                    PortletDisplayTemplateHandler portletDisplayTemplateHandler) {
072    
073                    _portletDisplayTemplateHandlers.put(
074                            portletDisplayTemplateHandler.getClassName(),
075                            portletDisplayTemplateHandler);
076            }
077    
078            public void unregister(
079                    PortletDisplayTemplateHandler portletDisplayTemplateHandler) {
080    
081                    _portletDisplayTemplateHandlers.remove(
082                            portletDisplayTemplateHandler.getClassName());
083            }
084    
085            private Map<String, PortletDisplayTemplateHandler>
086                    _portletDisplayTemplateHandlers =
087                            new HashMap<String, PortletDisplayTemplateHandler>();
088    
089    }