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.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.Validator;
020    import com.liferay.portal.kernel.xml.QName;
021    import com.liferay.portal.model.EventDefinition;
022    import com.liferay.portal.model.Portlet;
023    import com.liferay.portal.model.PortletApp;
024    import com.liferay.portal.model.PortletFilter;
025    import com.liferay.portal.model.PortletURLListener;
026    import com.liferay.portal.model.PublicRenderParameter;
027    import com.liferay.portal.model.SpriteImage;
028    
029    import java.util.ArrayList;
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            @Override
058            public void addEventDefinition(EventDefinition eventDefinition) {
059                    _eventDefinitions.add(eventDefinition);
060            }
061    
062            @Override
063            public void addPortlet(Portlet portlet) {
064                    _portlets.add(portlet);
065            }
066    
067            @Override
068            public void addPortletFilter(PortletFilter portletFilter) {
069                    _portletFilters.add(portletFilter);
070                    _portletFiltersByFilterName.put(
071                            portletFilter.getFilterName(), portletFilter);
072            }
073    
074            @Override
075            public void addPortletURLListener(PortletURLListener portletURLListener) {
076                    _portletURLListeners.add(portletURLListener);
077                    _portletURLListenersByListenerClass.put(
078                            portletURLListener.getListenerClass(), portletURLListener);
079            }
080    
081            @Override
082            public void addPublicRenderParameter(
083                    PublicRenderParameter publicRenderParameter) {
084    
085                    _publicRenderParametersByIdentifier.put(
086                            publicRenderParameter.getIdentifier(), publicRenderParameter);
087            }
088    
089            @Override
090            public void addPublicRenderParameter(String identifier, QName qName) {
091                    PublicRenderParameter publicRenderParameter =
092                            new PublicRenderParameterImpl(identifier, qName, this);
093    
094                    addPublicRenderParameter(publicRenderParameter);
095            }
096    
097            @Override
098            public void addServletURLPatterns(Set<String> servletURLPatterns) {
099                    _servletURLPatterns.addAll(servletURLPatterns);
100            }
101    
102            @Override
103            public Map<String, String[]> getContainerRuntimeOptions() {
104                    return _containerRuntimeOptions;
105            }
106    
107            @Override
108            public String getContextPath() {
109                    return _contextPath;
110            }
111    
112            @Override
113            public Map<String, String> getCustomUserAttributes() {
114                    return _customUserAttributes;
115            }
116    
117            @Override
118            public String getDefaultNamespace() {
119                    return _defaultNamespace;
120            }
121    
122            @Override
123            public Set<EventDefinition> getEventDefinitions() {
124                    return _eventDefinitions;
125            }
126    
127            @Override
128            public PortletFilter getPortletFilter(String filterName) {
129                    return _portletFiltersByFilterName.get(filterName);
130            }
131    
132            @Override
133            public Set<PortletFilter> getPortletFilters() {
134                    return _portletFilters;
135            }
136    
137            @Override
138            public List<Portlet> getPortlets() {
139                    return new ArrayList<Portlet>(_portlets);
140            }
141    
142            @Override
143            public PortletURLListener getPortletURLListener(String listenerClass) {
144                    return _portletURLListenersByListenerClass.get(listenerClass);
145            }
146    
147            @Override
148            public Set<PortletURLListener> getPortletURLListeners() {
149                    return _portletURLListeners;
150            }
151    
152            @Override
153            public PublicRenderParameter getPublicRenderParameter(String identifier) {
154                    return _publicRenderParametersByIdentifier.get(identifier);
155            }
156    
157            @Override
158            public String getServletContextName() {
159                    return _servletContextName;
160            }
161    
162            @Override
163            public Set<String> getServletURLPatterns() {
164                    return _servletURLPatterns;
165            }
166    
167            @Override
168            public SpriteImage getSpriteImage(String fileName) {
169                    return _spriteImagesMap.get(fileName);
170            }
171    
172            @Override
173            public Set<String> getUserAttributes() {
174                    return _userAttributes;
175            }
176    
177            @Override
178            public boolean isWARFile() {
179                    return _warFile;
180            }
181    
182            @Override
183            public void setDefaultNamespace(String defaultNamespace) {
184                    _defaultNamespace = defaultNamespace;
185            }
186    
187            @Override
188            public void setSpriteImages(String spriteFileName, Properties properties) {
189                    for (Map.Entry<Object, Object> entry : properties.entrySet()) {
190                            String key = (String)entry.getKey();
191                            String value = (String)entry.getValue();
192    
193                            int[] values = StringUtil.split(value, 0);
194    
195                            int offset = values[0];
196                            int height = values[1];
197                            int width = values[2];
198    
199                            SpriteImage spriteImage = new SpriteImage(
200                                    spriteFileName, key, offset, height, width);
201    
202                            _spriteImagesMap.put(key, spriteImage);
203                    }
204            }
205    
206            @Override
207            public void setWARFile(boolean warFile) {
208                    _warFile = warFile;
209            }
210    
211            private Map<String, String[]> _containerRuntimeOptions =
212                    new HashMap<String, String[]>();
213            private String _contextPath = StringPool.BLANK;
214            private Map<String, String> _customUserAttributes =
215                    new LinkedHashMap<String, String>();
216            private String _defaultNamespace = XMLConstants.NULL_NS_URI;
217            private Set<EventDefinition> _eventDefinitions =
218                    new LinkedHashSet<EventDefinition>();
219            private Set<PortletFilter> _portletFilters =
220                    new LinkedHashSet<PortletFilter>();
221            private Map<String, PortletFilter> _portletFiltersByFilterName =
222                    new HashMap<String, PortletFilter>();
223            private Set<Portlet> _portlets = new LinkedHashSet<Portlet>();
224            private Set<PortletURLListener> _portletURLListeners =
225                    new LinkedHashSet<PortletURLListener>();
226            private Map<String, PortletURLListener>
227                    _portletURLListenersByListenerClass =
228                            new HashMap<String, PortletURLListener>();
229            private Map<String, PublicRenderParameter>
230                    _publicRenderParametersByIdentifier =
231                            new HashMap<String, PublicRenderParameter>();
232            private String _servletContextName = StringPool.BLANK;
233            private Set<String> _servletURLPatterns = new LinkedHashSet<String>();
234            private Map<String, SpriteImage> _spriteImagesMap =
235                    new HashMap<String, SpriteImage>();
236            private Set<String> _userAttributes = new LinkedHashSet<String>();
237            private boolean _warFile;
238    
239    }