001    /**
002     * Copyright (c) 2000-2011 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
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(
162                    String spriteFileName, Properties properties) {
163    
164                    Iterator<Map.Entry<Object, Object>> itr =
165                            properties.entrySet().iterator();
166    
167                    while (itr.hasNext()) {
168                            Map.Entry<Object, Object> entry = itr.next();
169    
170                            String key = (String)entry.getKey();
171                            String value = (String)entry.getValue();
172    
173                            int[] values = StringUtil.split(value, 0);
174    
175                            int offset = values[0];
176                            int height = values[1];
177                            int width = values[2];
178    
179                            SpriteImage spriteImage = new SpriteImage(
180                                    spriteFileName, key, offset, height, width);
181    
182                            _spriteImagesMap.put(key, spriteImage);
183                    }
184            }
185    
186            public void setWARFile(boolean warFile) {
187                    _warFile = warFile;
188            }
189    
190            private Map<String, String[]> _containerRuntimeOptions =
191                    new HashMap<String, String[]>();
192            private String _contextPath = StringPool.BLANK;
193            private Map<String, String> _customUserAttributes =
194                    new LinkedHashMap<String, String>();
195            private String _defaultNamespace = XMLConstants.NULL_NS_URI;
196            private Set<EventDefinition> _eventDefinitions =
197                    new LinkedHashSet<EventDefinition>();
198            private Set<PortletFilter> _portletFilters =
199                    new LinkedHashSet<PortletFilter>();
200            private Map<String, PortletFilter> _portletFiltersByFilterName =
201                    new HashMap<String, PortletFilter>();
202            private List<Portlet> _portlets = new UniqueList<Portlet>();
203            private Set<PortletURLListener> _portletURLListeners =
204                    new LinkedHashSet<PortletURLListener>();
205            private Map<String, PortletURLListener>
206                    _portletURLListenersByListenerClass =
207                            new HashMap<String, PortletURLListener>();
208            private Set<PublicRenderParameter> _publicRenderParameters =
209                    new LinkedHashSet<PublicRenderParameter>();
210            private Map<String, PublicRenderParameter>
211                    _publicRenderParametersByIdentifier =
212                            new HashMap<String, PublicRenderParameter>();
213            private String _servletContextName = StringPool.BLANK;
214            private Set<String> _servletURLPatterns = new LinkedHashSet<String>();
215            private Map<String, SpriteImage> _spriteImagesMap =
216                    new HashMap<String, SpriteImage>();
217            private Set<String> _userAttributes = new LinkedHashSet<String>();
218            private boolean _warFile;
219    
220    }