001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2007
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.faces;
034:
035: import javax.el.ValueExpression;
036: import javax.faces.component.UIComponent;
037: import javax.faces.context.FacesContext;
038:
039: /**
040: * Utility functions for JSF/Facelets components.
041: *
042: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
043: * @version $Rev: 29 $
044: */
045: public class FxJsfComponentUtils {
046:
047: /**
048: * Private constructor to avoid instantiation.
049: */
050: private FxJsfComponentUtils() {
051: }
052:
053: /**
054: * Evaluate the string attribute of a component.
055: *
056: * @param component a JSF component
057: * @param attributeName the attribute name to be evaluated, e.g. "title"
058: * @return the bound value, or null if no value is bound
059: */
060: public static String getStringValue(UIComponent component,
061: String attributeName) {
062: return (String) getValue(component, attributeName);
063: }
064:
065: /**
066: * Evaluate the integer attribute of a component.
067: *
068: * @param component a JSF component
069: * @param attributeName the attribute name to be evaluated, e.g. "title"
070: * @return the bound value, or null if no value is bound
071: */
072: public static Integer getIntegerValue(UIComponent component,
073: String attributeName) {
074: return (Integer) getValue(component, attributeName);
075: }
076:
077: /**
078: * Evaluate the long attribute of a component.
079: *
080: * @param component a JSF component
081: * @param attributeName the attribute name to be evaluated, e.g. "title"
082: * @param defaultValue the default value to be used if no value is bound
083: * @return the bound value, or <code>defaultValue</code> if no value is bound
084: */
085: public static int getLongValue(UIComponent component,
086: String attributeName, int defaultValue) {
087: final Integer intValue = (Integer) getValue(component,
088: attributeName);
089: return intValue != null ? intValue : defaultValue;
090: }
091:
092: /**
093: * Evaluate the long attribute of a component.
094: *
095: * @param component a JSF component
096: * @param attributeName the attribute name to be evaluated, e.g. "title"
097: * @return the bound value, or null if no value is bound
098: */
099: public static Long getLongValue(UIComponent component,
100: String attributeName) {
101: return (Long) getValue(component, attributeName);
102: }
103:
104: /**
105: * Evaluate the long attribute of a component.
106: *
107: * @param component a JSF component
108: * @param attributeName the attribute name to be evaluated, e.g. "title"
109: * @param defaultValue the default value to be used if no value is bound
110: * @return the bound value, or <code>defaultValue</code> if no value is bound
111: */
112: public static long getLongValue(UIComponent component,
113: String attributeName, long defaultValue) {
114: final Long longValue = (Long) getValue(component, attributeName);
115: return longValue != null ? longValue : defaultValue;
116: }
117:
118: /**
119: * Evaluate the boolean attribute of a component.
120: *
121: * @param component a JSF component
122: * @param attributeName the attribute name to be evaluated, e.g. "title"
123: * @return the bound value, or null if no value is bound
124: */
125: public static Boolean getBooleanValue(UIComponent component,
126: String attributeName) {
127: return (Boolean) getValue(component, attributeName);
128: }
129:
130: /**
131: * Evaluate the boolean attribute of a component.
132: *
133: * @param component a JSF component
134: * @param attributeName the attribute name to be evaluated, e.g. "title"
135: * @param defaultValue the default value to be used when the attribute is null
136: * @return the bound value, or null if no value is bound
137: */
138: public static boolean getBooleanValue(UIComponent component,
139: String attributeName, boolean defaultValue) {
140: final Boolean value = (Boolean) getValue(component,
141: attributeName);
142: return value != null ? value : defaultValue;
143: }
144:
145: public static Object getValue(UIComponent component,
146: String attributeName) {
147: ValueExpression ve = component
148: .getValueExpression(attributeName);
149: if (ve != null) {
150: return ve.getValue(FacesContext.getCurrentInstance()
151: .getELContext());
152: }
153: return null;
154: }
155: }
|