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