View Javadoc

1   package org.rcfaces.core.component;
2   
3   import org.rcfaces.core.internal.component.Properties;
4   import java.util.Map;
5   import org.rcfaces.core.component.capability.IUserEventCapability;
6   import org.apache.commons.logging.LogFactory;
7   import java.util.Collections;
8   import org.rcfaces.core.internal.manager.IClientDataManager;
9   import org.rcfaces.core.component.capability.IValidationEventCapability;
10  import javax.faces.context.FacesContext;
11  import org.rcfaces.core.component.capability.IImmediateCapability;
12  import org.rcfaces.core.internal.Constants;
13  import org.rcfaces.core.component.capability.IServerDataCapability;
14  import org.apache.commons.logging.Log;
15  import java.util.Set;
16  import org.rcfaces.core.component.capability.IValueLockedCapability;
17  import org.rcfaces.core.internal.tools.ComponentTools;
18  import org.rcfaces.core.internal.component.CameliaInputComponent;
19  import java.lang.Object;
20  import java.lang.String;
21  import org.rcfaces.core.component.capability.IPropertyChangeEventCapability;
22  import org.rcfaces.core.internal.component.IDataMapAccessor;
23  import org.rcfaces.core.internal.manager.IServerDataManager;
24  import javax.el.ValueExpression;
25  import java.util.HashSet;
26  import org.rcfaces.core.component.capability.IClientDataCapability;
27  import java.util.Arrays;
28  
29  /**
30   * <p>The hiddenValue Component is a non-visual component. It is equivalent to and Input hidden type HTML tag.</p>
31   * <p>It allows to access and store value on the client and on the server while keeping it concealed. The clientData Component can also be used.</p>
32   * <p>The hiddenValue Component has the following capability :
33   * <ul>
34   * <li>IClientDataCapability</li>
35   * <li>IServerDataCapability</li>
36   * <li>IPropertyChangeEventCapability</li>
37   * <li>IImmediateCapability</li>
38   * <li>IValueLockedCapability</li>
39   * <li>IValidationEventCapability</li>
40   * <li>IUserEventCapability</li>
41   * <li>IClientDataManager</li>
42   * <li>IServerDataManager</li>
43   * </ul>
44   * </p>
45   * 
46   * <p>The default <a href="/apidocs/index.html?org/rcfaces/core/component/HiddenValueComponent.html">hiddenValue</a> renderer is link to the <a href="/jsdocs/index.html?f_hiddenValue.html" target="_blank">f_hiddenValue</a> javascript class. f_hiddenValue extends f_eventTarget, fa_serializable, fa_clientData</p>
47   */
48  public class HiddenValueComponent extends CameliaInputComponent implements 
49  	IClientDataCapability,
50  	IServerDataCapability,
51  	IPropertyChangeEventCapability,
52  	IImmediateCapability,
53  	IValueLockedCapability,
54  	IValidationEventCapability,
55  	IUserEventCapability,
56  	IClientDataManager,
57  	IServerDataManager {
58  
59  	private static final Log LOG = LogFactory.getLog(HiddenValueComponent.class);
60  
61  	public static final String COMPONENT_TYPE="org.rcfaces.core.hiddenValue";
62  
63  	protected static final Set CAMELIA_ATTRIBUTES=new HashSet(CameliaInputComponent.CAMELIA_ATTRIBUTES);
64  	static {
65  		CAMELIA_ATTRIBUTES.addAll(Arrays.asList(new String[] {"immediate","userEventListener","valueLocked","propertyChangeListener","validationListener"}));
66  	}
67  
68  	public HiddenValueComponent() {
69  		setRendererType(COMPONENT_TYPE);
70  	}
71  
72  	public HiddenValueComponent(String componentId) {
73  		this();
74  		setId(componentId);
75  	}
76  
77  	public void setClientData(String name, ValueExpression value) {
78  
79  
80  		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "clientData", true);
81              
82  		dataMapAccessor.setData(name, value, null);
83  		
84  	}
85  
86  	public String setClientData(String name, String value) {
87  
88  
89  		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "clientData", true);
90              
91  		return (String)dataMapAccessor.setData(name, value, null);
92  		
93  	}
94  
95  	public void setServerData(String name, ValueExpression value) {
96  
97  
98  		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "serverData", true);
99              
100 		dataMapAccessor.setData(name, value, null);
101 		
102 	}
103 
104 	public Object setServerData(String name, Object value) {
105 
106 
107 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "serverData", true);
108             
109 		return dataMapAccessor.setData(name, value, null);
110 		
111 	}
112 
113 	public String getClientData(String name, FacesContext facesContext) {
114 
115 
116 		 IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "clientData", false);
117 		 if (dataMapAccessor==null) {
118 		 	return null;
119 		 }
120             
121 		return (String)dataMapAccessor.getData(name, facesContext);
122 		
123 	}
124 
125 	public Object getServerData(String name, FacesContext facesContext) {
126 
127 
128 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "serverData", false);
129 		if (dataMapAccessor==null) {
130 			return null;
131 		}
132 		
133 		return dataMapAccessor.getData(name, facesContext);
134 		
135 	}
136 
137 	public Map getClientDataMap(FacesContext facesContext) {
138 
139 
140 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "clientData", false);
141 		if (dataMapAccessor==null) {
142 			return Collections.EMPTY_MAP;
143 		}
144             
145 		return dataMapAccessor.getDataMap(facesContext);
146 		
147 	}
148 
149 	public Map getServerDataMap(FacesContext facesContext) {
150 
151 
152 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "serverData", false);
153  		if (dataMapAccessor==null) {
154 			return Collections.EMPTY_MAP;
155 		}
156             
157 		Map map=dataMapAccessor.getDataMap(facesContext);
158 		if (Constants.READ_ONLY_COLLECTION_LOCK_ENABLED) {
159 			if (map.isEmpty()) {
160 				return Collections.EMPTY_MAP;
161 			}
162 			map=Collections.unmodifiableMap(map);
163 		}
164 		return map;
165 		
166 	}
167 
168 	public String[] listClientDataKeys(FacesContext facesContext) {
169 
170 
171 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "clientData", false);
172 		if (dataMapAccessor==null) {
173 			return ComponentTools.STRING_EMPTY_ARRAY;
174 		}
175 		
176 		return dataMapAccessor.listDataKeys(facesContext);
177 		
178 	}
179 
180 	public String[] listServerDataKeys(FacesContext facesContext) {
181 
182 
183 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "serverData", false);
184 		if (dataMapAccessor==null) {
185 			return ComponentTools.STRING_EMPTY_ARRAY;
186 		}
187 		
188 		return dataMapAccessor.listDataKeys(facesContext);
189 		
190 	}
191 
192 	public int getClientDataCount() {
193 
194 
195 		 IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "clientData", false);
196 		 if (dataMapAccessor==null) {
197 		 	return 0;
198 		 }
199 		 
200 		 return dataMapAccessor.getDataCount();
201 		
202 	}
203 
204 	public String[] listClientDataKeys() {
205 
206 
207 			return listClientDataKeys(null);
208 		
209 	}
210 
211 	public String removeClientData(String name) {
212 
213 
214 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "clientData", false);
215 		if (dataMapAccessor==null) {
216 			return null;
217 		}
218             
219 		return (String)dataMapAccessor.removeData(name, null);
220 		
221 	}
222 
223 	public String getClientData(String name) {
224 
225 
226 		 return getClientData(name, null);
227 		
228 	}
229 
230 	public Map getClientDataMap() {
231 
232 
233 		return getClientDataMap(null);
234 		
235 	}
236 
237 	public String[] listServerDataKeys() {
238 
239 
240 			return listServerDataKeys(null);
241 		
242 	}
243 
244 	public Map getServerDataMap() {
245 
246 
247 		return getServerDataMap(null);
248 		
249 	}
250 
251 	public int getServerDataCount() {
252 
253 
254 		 IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "serverData", false);
255 		 if (dataMapAccessor==null) {
256 		 	return 0;
257 		 }
258             
259 		return dataMapAccessor.getDataCount();
260 		
261 	}
262 
263 	public Object getServerData(String name) {
264 
265 
266 		 IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "serverData", false);
267 		 if (dataMapAccessor==null) {
268 		 	return null;
269 		 }
270             
271 		return dataMapAccessor.getData(name, null);
272 		
273 	}
274 
275 	public Object removeServerData(String name) {
276 
277 
278 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(null, "serverData", false);
279 		if (dataMapAccessor==null) {
280 		 	return null;
281 		}
282             
283 		return dataMapAccessor.removeData(name, null);
284 		
285 	}
286 
287 	public final void addPropertyChangeListener(org.rcfaces.core.event.IPropertyChangeListener listener) {
288 		addFacesListener(listener);
289 	}
290 
291 	public final void removePropertyChangeListener(org.rcfaces.core.event.IPropertyChangeListener listener) {
292 		removeFacesListener(listener);
293 	}
294 
295 	public final javax.faces.event.FacesListener [] listPropertyChangeListeners() {
296 		return getFacesListeners(org.rcfaces.core.event.IPropertyChangeListener.class);
297 	}
298 
299 	public boolean isValueLocked() {
300 		return isValueLocked(null);
301 	}
302 
303 	/**
304 	 * See {@link #isValueLocked() isValueLocked()} for more details
305 	 */
306 	public boolean isValueLocked(javax.faces.context.FacesContext facesContext) {
307 		return engine.getBoolProperty(Properties.VALUE_LOCKED, false, facesContext);
308 	}
309 
310 	/**
311 	 * Returns <code>true</code> if the attribute "valueLocked" is set.
312 	 * @return <code>true</code> if the attribute is set.
313 	 */
314 	public final boolean isValueLockedSetted() {
315 		return engine.isPropertySetted(Properties.VALUE_LOCKED);
316 	}
317 
318 	public void setValueLocked(boolean valueLocked) {
319 		engine.setProperty(Properties.VALUE_LOCKED, valueLocked);
320 	}
321 
322 	public final void addValidationListener(org.rcfaces.core.event.IValidationListener listener) {
323 		addFacesListener(listener);
324 	}
325 
326 	public final void removeValidationListener(org.rcfaces.core.event.IValidationListener listener) {
327 		removeFacesListener(listener);
328 	}
329 
330 	public final javax.faces.event.FacesListener [] listValidationListeners() {
331 		return getFacesListeners(org.rcfaces.core.event.IValidationListener.class);
332 	}
333 
334 	public final void addUserEventListener(org.rcfaces.core.event.IUserEventListener listener) {
335 		addFacesListener(listener);
336 	}
337 
338 	public final void removeUserEventListener(org.rcfaces.core.event.IUserEventListener listener) {
339 		removeFacesListener(listener);
340 	}
341 
342 	public final javax.faces.event.FacesListener [] listUserEventListeners() {
343 		return getFacesListeners(org.rcfaces.core.event.IUserEventListener.class);
344 	}
345 
346 	protected Set getCameliaFields() {
347 		return CAMELIA_ATTRIBUTES;
348 	}
349 }