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.model.impl;
016    
017    import com.liferay.portal.kernel.util.StringPool;
018    import com.liferay.portal.kernel.util.StringUtil;
019    import com.liferay.portal.kernel.util.UniqueList;
020    import com.liferay.portal.kernel.util.Validator;
021    import com.liferay.portal.kernel.xml.QName;
022    import com.liferay.portal.model.EventDefinition;
023    import com.liferay.portal.model.Portlet;
024    import com.liferay.portal.model.PortletApp;
025    import com.liferay.portal.model.PortletFilter;
026    import com.liferay.portal.model.PortletURLListener;
027    import com.liferay.portal.model.PublicRenderParameter;
028    import com.liferay.portal.model.SpriteImage;
029    
030    import java.util.HashMap;
031    import java.util.LinkedHashMap;
032    import java.util.LinkedHashSet;
033    import java.util.List;
034    import java.util.Map;
035    import java.util.Properties;
036    import java.util.Set;
037    
038    import javax.xml.XMLConstants;
039    
040    /**
041     * @author Brian Wing Shun Chan
042     */
043    public class PortletAppImpl implements PortletApp {
044    
045            public PortletAppImpl(String servletContextName) {
046                    _servletContextName = servletContextName;
047    
048                    if (Validator.isNotNull(_servletContextName)) {
049                            _contextPath = StringPool.SLASH.concat(_servletContextName);
050                            _warFile = true;
051                    }
052                    else {
053                            _warFile = false;
054                    }
055            }
056    
057            public void addEventDefinition(EventDefinition eventDefinition) {
058                    _eventDefinitions.add(eventDefinition);
059            }
060    
061            public void addPortlet(Portlet portlet) {
062                    _portlets.add(portlet);
063            }
064    
065            public void addPortletFilter(PortletFilter portletFilter) {
066                    _portletFilters.add(portletFilter);
067                    _portletFiltersByFilterName.put(
068                            portletFilter.getFilterName(), portletFilter);
069            }
070    
071            public void addPortletURLListener(PortletURLListener portletURLListener) {
072                    _portletURLListeners.add(portletURLListener);
073                    _portletURLListenersByListenerClass.put(
074                            portletURLListener.getListenerClass(), portletURLListener);
075            }
076    
077            public void addPublicRenderParameter(
078                    PublicRenderParameter publicRenderParameter) {
079    
080                    _publicRenderParametersByIdentifier.put(
081                            publicRenderParameter.getIdentifier(), publicRenderParameter);
082            }
083    
084            public void addPublicRenderParameter(String identifier, QName qName) {
085                    PublicRenderParameter publicRenderParameter =
086                            new PublicRenderParameterImpl(identifier, qName, this);
087    
088                    addPublicRenderParameter(publicRenderParameter);
089            }
090    
091            public void addServletURLPatterns(Set<String> servletURLPatterns) {
092                    _servletURLPatterns.addAll(servletURLPatterns);
093            }
094    
095            public Map<String, String[]> getContainerRuntimeOptions() {
096                    return _containerRuntimeOptions;
097            }
098    
099            public String getContextPath() {
100                    return _contextPath;
101            }
102    
103            public Map<String, String> getCustomUserAttributes() {
104                    return _customUserAttributes;
105            }
106    
107            public String getDefaultNamespace() {
108                    return _defaultNamespace;
109            }
110    
111            public PortletFilter getPortletFilter(String filterName) {
112                    return _portletFiltersByFilterName.get(filterName);
113            }
114    
115            public Set<PortletFilter> getPortletFilters() {
116                    return _portletFilters;
117            }
118    
119            public List<Portlet> getPortlets() {
120                    return _portlets;
121            }
122    
123            public PortletURLListener getPortletURLListener(String listenerClass) {
124                    return _portletURLListenersByListenerClass.get(listenerClass);
125            }
126    
127            public Set<PortletURLListener> getPortletURLListeners() {
128                    return _portletURLListeners;
129            }
130    
131            public PublicRenderParameter getPublicRenderParameter(String identifier) {
132                    return _publicRenderParametersByIdentifier.get(identifier);
133            }
134    
135            public String getServletContextName() {
136                    return _servletContextName;
137            }
138    
139            public Set<String> getServletURLPatterns() {
140                    return _servletURLPatterns;
141            }
142    
143            public SpriteImage getSpriteImage(String fileName) {
144                    return _spriteImagesMap.get(fileName);
145            }
146    
147            public Set<String> getUserAttributes() {
148                    return _userAttributes;
149            }
150    
151            public boolean isWARFile() {
152                    return _warFile;
153            }
154    
155            public void setDefaultNamespace(String defaultNamespace) {
156                    _defaultNamespace = defaultNamespace;
157            }
158    
159            public void setSpriteImages(String spriteFileName, Properties properties) {
160                    for (Map.Entry<Object, Object> entry : properties.entrySet()) {
161                            String key = (String)entry.getKey();
162                            String value = (String)entry.getValue();
163    
164                            int[] values = StringUtil.split(value, 0);
165    
166                            int offset = values[0];
167                            int height = values[1];
168                            int width = values[2];
169    
170                            SpriteImage spriteImage = new SpriteImage(
171                                    spriteFileName, key, offset, height, width);
172    
173                            _spriteImagesMap.put(key, spriteImage);
174                    }
175            }
176    
177            public void setWARFile(boolean warFile) {
178                    _warFile = warFile;
179            }
180    
181            private Map<String, String[]> _containerRuntimeOptions =
182                    new HashMap<String, String[]>();
183            private String _contextPath = StringPool.BLANK;
184            private Map<String, String> _customUserAttributes =
185                    new LinkedHashMap<String, String>();
186            private String _defaultNamespace = XMLConstants.NULL_NS_URI;
187            private Set<EventDefinition> _eventDefinitions =
188                    new LinkedHashSet<EventDefinition>();
189            private Set<PortletFilter> _portletFilters =
190                    new LinkedHashSet<PortletFilter>();
191            private Map<String, PortletFilter> _portletFiltersByFilterName =
192                    new HashMap<String, PortletFilter>();
193            private List<Portlet> _portlets = new UniqueList<Portlet>();
194            private Set<PortletURLListener> _portletURLListeners =
195                    new LinkedHashSet<PortletURLListener>();
196            private Map<String, PortletURLListener>
197                    _portletURLListenersByListenerClass =
198                            new HashMap<String, PortletURLListener>();
199            private Map<String, PublicRenderParameter>
200                    _publicRenderParametersByIdentifier =
201                            new HashMap<String, PublicRenderParameter>();
202            private String _servletContextName = StringPool.BLANK;
203            private Set<String> _servletURLPatterns = new LinkedHashSet<String>();
204            private Map<String, SpriteImage> _spriteImagesMap =
205                    new HashMap<String, SpriteImage>();
206            private Set<String> _userAttributes = new LinkedHashSet<String>();
207            private boolean _warFile;
208    
209    }