001    /**
002     * Copyright (c) 2000-2012 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.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.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                    _publicRenderParametersByIdentifier.put(
082                            publicRenderParameter.getIdentifier(), publicRenderParameter);
083            }
084    
085            public void addPublicRenderParameter(String identifier, QName qName) {
086                    PublicRenderParameter publicRenderParameter =
087                            new PublicRenderParameterImpl(identifier, qName, this);
088    
089                    addPublicRenderParameter(publicRenderParameter);
090            }
091    
092            public void addServletURLPatterns(Set<String> servletURLPatterns) {
093                    _servletURLPatterns.addAll(servletURLPatterns);
094            }
095    
096            public Map<String, String[]> getContainerRuntimeOptions() {
097                    return _containerRuntimeOptions;
098            }
099    
100            public String getContextPath() {
101                    return _contextPath;
102            }
103    
104            public Map<String, String> getCustomUserAttributes() {
105                    return _customUserAttributes;
106            }
107    
108            public String getDefaultNamespace() {
109                    return _defaultNamespace;
110            }
111    
112            public PortletFilter getPortletFilter(String filterName) {
113                    return _portletFiltersByFilterName.get(filterName);
114            }
115    
116            public Set<PortletFilter> getPortletFilters() {
117                    return _portletFilters;
118            }
119    
120            public List<Portlet> getPortlets() {
121                    return _portlets;
122            }
123    
124            public PortletURLListener getPortletURLListener(String listenerClass) {
125                    return _portletURLListenersByListenerClass.get(listenerClass);
126            }
127    
128            public Set<PortletURLListener> getPortletURLListeners() {
129                    return _portletURLListeners;
130            }
131    
132            public PublicRenderParameter getPublicRenderParameter(String identifier) {
133                    return _publicRenderParametersByIdentifier.get(identifier);
134            }
135    
136            public String getServletContextName() {
137                    return _servletContextName;
138            }
139    
140            public Set<String> getServletURLPatterns() {
141                    return _servletURLPatterns;
142            }
143    
144            public SpriteImage getSpriteImage(String fileName) {
145                    return _spriteImagesMap.get(fileName);
146            }
147    
148            public Set<String> getUserAttributes() {
149                    return _userAttributes;
150            }
151    
152            public boolean isWARFile() {
153                    return _warFile;
154            }
155    
156            public void setDefaultNamespace(String defaultNamespace) {
157                    _defaultNamespace = defaultNamespace;
158            }
159    
160            public void setSpriteImages(String spriteFileName, Properties properties) {
161                    Iterator<Map.Entry<Object, Object>> itr =
162                            properties.entrySet().iterator();
163    
164                    while (itr.hasNext()) {
165                            Map.Entry<Object, Object> entry = itr.next();
166    
167                            String key = (String)entry.getKey();
168                            String value = (String)entry.getValue();
169    
170                            int[] values = StringUtil.split(value, 0);
171    
172                            int offset = values[0];
173                            int height = values[1];
174                            int width = values[2];
175    
176                            SpriteImage spriteImage = new SpriteImage(
177                                    spriteFileName, key, offset, height, width);
178    
179                            _spriteImagesMap.put(key, spriteImage);
180                    }
181            }
182    
183            public void setWARFile(boolean warFile) {
184                    _warFile = warFile;
185            }
186    
187            private Map<String, String[]> _containerRuntimeOptions =
188                    new HashMap<String, String[]>();
189            private String _contextPath = StringPool.BLANK;
190            private Map<String, String> _customUserAttributes =
191                    new LinkedHashMap<String, String>();
192            private String _defaultNamespace = XMLConstants.NULL_NS_URI;
193            private Set<EventDefinition> _eventDefinitions =
194                    new LinkedHashSet<EventDefinition>();
195            private Set<PortletFilter> _portletFilters =
196                    new LinkedHashSet<PortletFilter>();
197            private Map<String, PortletFilter> _portletFiltersByFilterName =
198                    new HashMap<String, PortletFilter>();
199            private List<Portlet> _portlets = new UniqueList<Portlet>();
200            private Set<PortletURLListener> _portletURLListeners =
201                    new LinkedHashSet<PortletURLListener>();
202            private Map<String, PortletURLListener>
203                    _portletURLListenersByListenerClass =
204                            new HashMap<String, PortletURLListener>();
205            private Map<String, PublicRenderParameter>
206                    _publicRenderParametersByIdentifier =
207                            new HashMap<String, PublicRenderParameter>();
208            private String _servletContextName = StringPool.BLANK;
209            private Set<String> _servletURLPatterns = new LinkedHashSet<String>();
210            private Map<String, SpriteImage> _spriteImagesMap =
211                    new HashMap<String, SpriteImage>();
212            private Set<String> _userAttributes = new LinkedHashSet<String>();
213            private boolean _warFile;
214    
215    }