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