1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
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.Portlet;
23  import com.liferay.portal.model.PortletApp;
24  import com.liferay.portal.model.PortletFilter;
25  import com.liferay.portal.model.PortletURLListener;
26  import com.liferay.portal.model.PublicRenderParameter;
27  import com.liferay.portal.model.SpriteImage;
28  import com.liferay.util.UniqueList;
29  
30  import java.util.HashMap;
31  import java.util.Iterator;
32  import java.util.LinkedHashMap;
33  import java.util.LinkedHashSet;
34  import java.util.List;
35  import java.util.Map;
36  import java.util.Properties;
37  import java.util.Set;
38  
39  import javax.xml.XMLConstants;
40  
41  /**
42   * <a href="PortletAppImpl.java.html"><b><i>View Source</i></b></a>
43   *
44   * @author Brian Wing Shun Chan
45   */
46  public class PortletAppImpl implements PortletApp {
47  
48      public PortletAppImpl(String servletContextName) {
49          _servletContextName = servletContextName;
50  
51          if (Validator.isNotNull(_servletContextName)) {
52              _warFile = true;
53          }
54          else {
55              _warFile = false;
56          }
57      }
58  
59      public void addEventDefinition(EventDefinition eventDefinition) {
60          _eventDefinitions.add(eventDefinition);
61      }
62  
63      public void addPortlet(Portlet portlet) {
64          _portlets.add(portlet);
65      }
66  
67      public void addPortletFilter(PortletFilter portletFilter) {
68          _portletFilters.add(portletFilter);
69          _portletFiltersByFilterName.put(
70              portletFilter.getFilterName(), portletFilter);
71      }
72  
73      public void addPortletURLListener(PortletURLListener portletURLListener) {
74          _portletURLListeners.add(portletURLListener);
75          _portletURLListenersByListenerClass.put(
76              portletURLListener.getListenerClass(), portletURLListener);
77      }
78  
79      public void addPublicRenderParameter(
80          PublicRenderParameter publicRenderParameter) {
81  
82          _publicRenderParameters.add(publicRenderParameter);
83          _publicRenderParametersByIdentifier.put(
84              publicRenderParameter.getIdentifier(), publicRenderParameter);
85      }
86  
87      public void addPublicRenderParameter(String identifier, QName qName) {
88          PublicRenderParameter publicRenderParameter =
89              new PublicRenderParameterImpl(identifier, qName, this);
90  
91          addPublicRenderParameter(publicRenderParameter);
92      }
93  
94      public void addServletURLPatterns(Set<String> servletURLPatterns) {
95          _servletURLPatterns.addAll(servletURLPatterns);
96      }
97  
98      public Map<String, String[]> getContainerRuntimeOptions() {
99          return _containerRuntimeOptions;
100     }
101 
102     public Map<String, String> getCustomUserAttributes() {
103         return _customUserAttributes;
104     }
105 
106     public String getDefaultNamespace() {
107         return _defaultNamespace;
108     }
109 
110     public PortletFilter getPortletFilter(String filterName) {
111         return _portletFiltersByFilterName.get(filterName);
112     }
113 
114     public Set<PortletFilter> getPortletFilters() {
115         return _portletFilters;
116     }
117 
118     public List<Portlet> getPortlets() {
119         return _portlets;
120     }
121 
122     public PortletURLListener getPortletURLListener(String listenerClass) {
123         return _portletURLListenersByListenerClass.get(listenerClass);
124     }
125 
126     public Set<PortletURLListener> getPortletURLListeners() {
127         return _portletURLListeners;
128     }
129 
130     public PublicRenderParameter getPublicRenderParameter(String identifier) {
131         return _publicRenderParametersByIdentifier.get(identifier);
132     }
133 
134     public String getServletContextName() {
135         return _servletContextName;
136     }
137 
138     public Set<String> getServletURLPatterns() {
139         return _servletURLPatterns;
140     }
141 
142     public SpriteImage getSpriteImage(String fileName) {
143         return _spriteImagesMap.get(fileName);
144     }
145 
146     public Set<String> getUserAttributes() {
147         return _userAttributes;
148     }
149 
150     public boolean isWARFile() {
151         return _warFile;
152     }
153 
154     public void setDefaultNamespace(String defaultNamespace) {
155         _defaultNamespace = defaultNamespace;
156     }
157 
158     public void setSpriteImages(
159         String spriteFileName, Properties properties) {
160 
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 Map<String, String> _customUserAttributes =
190         new LinkedHashMap<String, String>();
191     private String _defaultNamespace = XMLConstants.NULL_NS_URI;
192     private Set<EventDefinition> _eventDefinitions =
193         new LinkedHashSet<EventDefinition>();
194     private Set<PortletFilter> _portletFilters =
195         new LinkedHashSet<PortletFilter>();
196     private Map<String, PortletFilter> _portletFiltersByFilterName =
197         new HashMap<String, PortletFilter>();
198     private List<Portlet> _portlets = new UniqueList<Portlet>();
199     private Set<PortletURLListener> _portletURLListeners =
200         new LinkedHashSet<PortletURLListener>();
201     private Map<String, PortletURLListener>
202         _portletURLListenersByListenerClass =
203             new HashMap<String, PortletURLListener>();
204     private Set<PublicRenderParameter> _publicRenderParameters =
205         new LinkedHashSet<PublicRenderParameter>();
206     private Map<String, PublicRenderParameter>
207         _publicRenderParametersByIdentifier =
208             new HashMap<String, PublicRenderParameter>();
209     private String _servletContextName = StringPool.BLANK;
210     private Set<String> _servletURLPatterns = new LinkedHashSet<String>();
211     private Map<String, SpriteImage> _spriteImagesMap =
212         new HashMap<String, SpriteImage>();
213     private Set<String> _userAttributes = new LinkedHashSet<String>();
214     private boolean _warFile;
215 
216 }