1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.model.impl;
16  
17  import com.liferay.portal.kernel.util.StringPool;
18  import com.liferay.portal.kernel.util.StringUtil;
19  import com.liferay.portal.kernel.util.Validator;
20  import com.liferay.portal.kernel.xml.QName;
21  import com.liferay.portal.model.EventDefinition;
22  import com.liferay.portal.model.PortletApp;
23  import com.liferay.portal.model.PortletFilter;
24  import com.liferay.portal.model.PortletURLListener;
25  import com.liferay.portal.model.PublicRenderParameter;
26  import com.liferay.portal.model.SpriteImage;
27  
28  import java.util.HashMap;
29  import java.util.Iterator;
30  import java.util.LinkedHashMap;
31  import java.util.LinkedHashSet;
32  import java.util.Map;
33  import java.util.Properties;
34  import java.util.Set;
35  
36  import javax.xml.XMLConstants;
37  
38  /**
39   * <a href="PortletAppImpl.java.html"><b><i>View Source</i></b></a>
40   *
41   * @author Brian Wing Shun Chan
42   */
43  public class PortletAppImpl implements PortletApp {
44  
45      public PortletAppImpl(String servletContextName) {
46          _servletContextName = servletContextName;
47  
48          if (Validator.isNotNull(_servletContextName)) {
49              _warFile = true;
50          }
51          else {
52              _warFile = false;
53          }
54      }
55  
56      public void addEventDefinition(EventDefinition eventDefinition) {
57          _eventDefinitions.add(eventDefinition);
58      }
59  
60      public void addPortletFilter(PortletFilter portletFilter) {
61          _portletFilters.add(portletFilter);
62          _portletFiltersByFilterName.put(
63              portletFilter.getFilterName(), portletFilter);
64      }
65  
66      public void addPortletURLListener(PortletURLListener portletURLListener) {
67          _portletURLListeners.add(portletURLListener);
68          _portletURLListenersByListenerClass.put(
69              portletURLListener.getListenerClass(), portletURLListener);
70      }
71  
72      public void addPublicRenderParameter(
73          PublicRenderParameter publicRenderParameter) {
74  
75          _publicRenderParameters.add(publicRenderParameter);
76          _publicRenderParametersByIdentifier.put(
77              publicRenderParameter.getIdentifier(), publicRenderParameter);
78      }
79  
80      public void addPublicRenderParameter(String identifier, QName qName) {
81          PublicRenderParameter publicRenderParameter =
82              new PublicRenderParameterImpl(identifier, qName, this);
83  
84          addPublicRenderParameter(publicRenderParameter);
85      }
86  
87      public void addServletURLPatterns(Set<String> servletURLPatterns) {
88          _servletURLPatterns.addAll(servletURLPatterns);
89      }
90  
91      public Map<String, String[]> getContainerRuntimeOptions() {
92          return _containerRuntimeOptions;
93      }
94  
95      public Map<String, String> getCustomUserAttributes() {
96          return _customUserAttributes;
97      }
98  
99      public String getDefaultNamespace() {
100         return _defaultNamespace;
101     }
102 
103     public PortletFilter getPortletFilter(String filterName) {
104         return _portletFiltersByFilterName.get(filterName);
105     }
106 
107     public Set<PortletFilter> getPortletFilters() {
108         return _portletFilters;
109     }
110 
111     public PortletURLListener getPortletURLListener(String listenerClass) {
112         return _portletURLListenersByListenerClass.get(listenerClass);
113     }
114 
115     public Set<PortletURLListener> getPortletURLListeners() {
116         return _portletURLListeners;
117     }
118 
119     public PublicRenderParameter getPublicRenderParameter(String identifier) {
120         return _publicRenderParametersByIdentifier.get(identifier);
121     }
122 
123     public String getServletContextName() {
124         return _servletContextName;
125     }
126 
127     public Set<String> getServletURLPatterns() {
128         return _servletURLPatterns;
129     }
130 
131     public SpriteImage getSpriteImage(String fileName) {
132         return _spriteImagesMap.get(fileName);
133     }
134 
135     public Set<String> getUserAttributes() {
136         return _userAttributes;
137     }
138 
139     public boolean isWARFile() {
140         return _warFile;
141     }
142 
143     public void setDefaultNamespace(String defaultNamespace) {
144         _defaultNamespace = defaultNamespace;
145     }
146 
147     public void setSpriteImages(
148         String spriteFileName, Properties properties) {
149 
150         Iterator<Map.Entry<Object, Object>> itr =
151             properties.entrySet().iterator();
152 
153         while (itr.hasNext()) {
154             Map.Entry<Object, Object> entry = itr.next();
155 
156             String key = (String)entry.getKey();
157             String value = (String)entry.getValue();
158 
159             int[] values = StringUtil.split(value, 0);
160 
161             int offset = values[0];
162             int height = values[1];
163             int width = values[2];
164 
165             SpriteImage spriteImage = new SpriteImage(
166                 spriteFileName, key, offset, height, width);
167 
168             _spriteImagesMap.put(key, spriteImage);
169         }
170     }
171 
172     public void setWARFile(boolean warFile) {
173         _warFile = warFile;
174     }
175 
176     private Map<String, String[]> _containerRuntimeOptions =
177         new HashMap<String, String[]>();
178     private Map<String, String> _customUserAttributes =
179         new LinkedHashMap<String, String>();
180     private String _defaultNamespace = XMLConstants.NULL_NS_URI;
181     private Set<EventDefinition> _eventDefinitions =
182         new LinkedHashSet<EventDefinition>();
183     private Set<PortletFilter> _portletFilters =
184         new LinkedHashSet<PortletFilter>();
185     private Map<String, PortletFilter> _portletFiltersByFilterName =
186         new HashMap<String, PortletFilter>();
187     private Set<PortletURLListener> _portletURLListeners =
188         new LinkedHashSet<PortletURLListener>();
189     private Map<String, PortletURLListener>
190         _portletURLListenersByListenerClass =
191             new HashMap<String, PortletURLListener>();
192     private Set<PublicRenderParameter> _publicRenderParameters =
193         new LinkedHashSet<PublicRenderParameter>();
194     private Map<String, PublicRenderParameter>
195         _publicRenderParametersByIdentifier =
196             new HashMap<String, PublicRenderParameter>();
197     private String _servletContextName = StringPool.BLANK;
198     private Set<String> _servletURLPatterns = new LinkedHashSet<String>();
199     private Map<String, SpriteImage> _spriteImagesMap =
200         new HashMap<String, SpriteImage>();
201     private Set<String> _userAttributes = new LinkedHashSet<String>();
202     private boolean _warFile;
203 
204 }