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