1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    *
5    *
6    *
7    * The contents of this file are subject to the terms of the Liferay Enterprise
8    * Subscription License ("License"). You may not use this file except in
9    * compliance with the License. You can obtain a copy of the License by
10   * contacting Liferay, Inc. See the License for the specific language governing
11   * permissions and limitations under the License, including but not limited to
12   * distribution rights of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portal.model.impl;
24  
25  import com.liferay.portal.kernel.util.StringPool;
26  import com.liferay.portal.kernel.util.StringUtil;
27  import com.liferay.portal.kernel.util.Validator;
28  import com.liferay.portal.model.EventDefinition;
29  import com.liferay.portal.model.PortletApp;
30  import com.liferay.portal.model.PortletFilter;
31  import com.liferay.portal.model.PortletURLListener;
32  import com.liferay.portal.model.PublicRenderParameter;
33  import com.liferay.portal.model.SpriteImage;
34  
35  import java.util.HashMap;
36  import java.util.Iterator;
37  import java.util.LinkedHashMap;
38  import java.util.LinkedHashSet;
39  import java.util.Map;
40  import java.util.Properties;
41  import java.util.Set;
42  
43  import javax.xml.XMLConstants;
44  import javax.xml.namespace.QName;
45  
46  /**
47   * <a href="PortletAppImpl.java.html"><b><i>View Source</i></b></a>
48   *
49   * @author Brian Wing Shun Chan
50   */
51  public class PortletAppImpl implements PortletApp {
52  
53      public PortletAppImpl(String servletContextName) {
54          _servletContextName = servletContextName;
55  
56          if (Validator.isNotNull(_servletContextName)) {
57              _warFile = true;
58          }
59          else {
60              _warFile = false;
61          }
62      }
63  
64      public void addEventDefinition(EventDefinition eventDefinition) {
65          _eventDefinitions.add(eventDefinition);
66      }
67  
68      public void addPortletFilter(PortletFilter portletFilter) {
69          _portletFilters.add(portletFilter);
70          _portletFiltersByFilterName.put(
71              portletFilter.getFilterName(), portletFilter);
72      }
73  
74      public void addPortletURLListener(PortletURLListener portletURLListener) {
75          _portletURLListeners.add(portletURLListener);
76          _portletURLListenersByListenerClass.put(
77              portletURLListener.getListenerClass(), portletURLListener);
78      }
79  
80      public void addPublicRenderParameter(
81          PublicRenderParameter publicRenderParameter) {
82  
83          _publicRenderParameters.add(publicRenderParameter);
84          _publicRenderParametersByIdentifier.put(
85              publicRenderParameter.getIdentifier(), publicRenderParameter);
86      }
87  
88      public void addPublicRenderParameter(String identifier, QName qName) {
89          PublicRenderParameter publicRenderParameter =
90              new PublicRenderParameterImpl(identifier, qName, this);
91  
92          addPublicRenderParameter(publicRenderParameter);
93      }
94  
95      public Map<String, String[]> getContainerRuntimeOptions() {
96          return _containerRuntimeOptions;
97      }
98  
99      public Map<String, String> getCustomUserAttributes() {
100         return _customUserAttributes;
101     }
102 
103     public String getDefaultNamespace() {
104         return _defaultNamespace;
105     }
106 
107     public PortletFilter getPortletFilter(String filterName) {
108         return _portletFiltersByFilterName.get(filterName);
109     }
110 
111     public Set<PortletFilter> getPortletFilters() {
112         return _portletFilters;
113     }
114 
115     public PortletURLListener getPortletURLListener(String listenerClass) {
116         return _portletURLListenersByListenerClass.get(listenerClass);
117     }
118 
119     public Set<PortletURLListener> getPortletURLListeners() {
120         return _portletURLListeners;
121     }
122 
123     public PublicRenderParameter getPublicRenderParameter(String identifier) {
124         return _publicRenderParametersByIdentifier.get(identifier);
125     }
126 
127     public String getServletContextName() {
128         return _servletContextName;
129     }
130 
131     public Set<String> getServletURLPatterns() {
132         return _servletURLPatterns;
133     }
134 
135     public SpriteImage getSpriteImage(String fileName) {
136         return _spriteImagesMap.get(fileName);
137     }
138 
139     public Set<String> getUserAttributes() {
140         return _userAttributes;
141     }
142 
143     public boolean isWARFile() {
144         return _warFile;
145     }
146 
147     public void setDefaultNamespace(String defaultNamespace) {
148         _defaultNamespace = defaultNamespace;
149     }
150 
151     public void setSpriteImages(
152         String spriteFileName, Properties properties) {
153 
154         Iterator<Map.Entry<Object, Object>> itr =
155             properties.entrySet().iterator();
156 
157         while (itr.hasNext()) {
158             Map.Entry<Object, Object> entry = itr.next();
159 
160             String key = (String)entry.getKey();
161             String value = (String)entry.getValue();
162 
163             int[] values = StringUtil.split(value, 0);
164 
165             int offset = values[0];
166             int height = values[1];
167             int width = values[2];
168 
169             SpriteImage spriteImage = new SpriteImage(
170                 spriteFileName, key, offset, height, width);
171 
172             _spriteImagesMap.put(key, spriteImage);
173         }
174     }
175 
176     public void setWARFile(boolean warFile) {
177         _warFile = warFile;
178     }
179 
180     private Map<String, String[]> _containerRuntimeOptions =
181         new HashMap<String, String[]>();
182     private Map<String, String> _customUserAttributes =
183         new LinkedHashMap<String, String>();
184     private String _defaultNamespace = XMLConstants.NULL_NS_URI;
185     private Set<EventDefinition> _eventDefinitions =
186         new LinkedHashSet<EventDefinition>();
187     private Set<PortletFilter> _portletFilters =
188         new LinkedHashSet<PortletFilter>();
189     private Map<String, PortletFilter> _portletFiltersByFilterName =
190         new HashMap<String, PortletFilter>();
191     private Set<PortletURLListener> _portletURLListeners =
192         new LinkedHashSet<PortletURLListener>();
193     private Map<String, PortletURLListener>
194         _portletURLListenersByListenerClass =
195             new HashMap<String, PortletURLListener>();
196     private Set<PublicRenderParameter> _publicRenderParameters =
197         new LinkedHashSet<PublicRenderParameter>();
198     private Map<String, PublicRenderParameter>
199         _publicRenderParametersByIdentifier =
200             new HashMap<String, PublicRenderParameter>();
201     private String _servletContextName = StringPool.BLANK;
202     private Set<String> _servletURLPatterns = new LinkedHashSet<String>();
203     private Map<String, SpriteImage> _spriteImagesMap =
204         new HashMap<String, SpriteImage>();
205     private Set<String> _userAttributes = new LinkedHashSet<String>();
206     private boolean _warFile;
207 
208 }