001: /*
002: Mdarad-Toolobox is a collection of tools for Architected RAD
003: (Rapid Application Development) based on an MDA approach.
004: The toolbox contains frameworks and generators for many environments
005: (JAVA, J2EE, Hibernate, .NET, C++, etc.) which allow to generate
006: applications from a design Model
007: Copyright (C) 2004-2005 Elapse Technologies Inc.
008:
009: This library is free software; you can redistribute it and/or
010: modify it under the terms of the GNU General Public
011: License as published by the Free Software Foundation; either
012: version 2.1 of the License, or (at your option) any later version.
013:
014: This library is distributed in the hope that it will be useful,
015: but WITHOUT ANY WARRANTY; without even the implied warranty of
016: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: General Public License for more details.
018:
019: You should have received a copy of the GNU General Public
020: License along with this library; if not, write to the Free Software
021: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
022: */
023: package org.mdarad.framework.util.struts.criteria;
024:
025: import java.util.Locale;
026:
027: import org.mdarad.framework.expr.Operator;
028: import org.mdarad.framework.expr.OperatorTypes;
029:
030: /**
031: * This classe representes a criterion that is used with "numeric" properties.
032: * It defines the operators used with a numeric criterion.
033: * @author Philippe Brouillette
034: * @version 1.0
035: */
036: public class NumericCriterion extends FormCriterionWithOperator {
037:
038: /**
039: * Constructor that takes all the needed properties to
040: * initialize a numeric criterion.
041: * @param name name of the criterion, this name is used as a key
042: * in the criterion map
043: * @param associatedEntity class type associated to this criterion
044: * @param property property used for the query criterion
045: * @param bundleName bundle name
046: * @param locale locale information
047: * @see FormCriterion#FormCriterion(String, CriterionProperty, String, Locale) FormCriterion
048: */
049: public NumericCriterion(String name, Class associatedEntity,
050: CriterionProperty property, String bundleName, Locale locale) {
051: super (name, associatedEntity, property, bundleName, locale);
052: }
053:
054: /**
055: * Constructor that takes all the properties to initialize a search
056: * criterion.
057: * @param name name of the criterion. This name must be unique
058: * as it is a key in a map.
059: * @param associatedEntity class type associated to this criterion
060: * @param property property used for the query criterion
061: * @param bundleName bundle name
062: * @param locale locale information
063: * @param isDynamic boolean that indicates if the criterion is dynamic
064: * @see FormCriterion#FormCriterion(String, CriterionProperty, String, Locale) FormCriterion
065: */
066: public NumericCriterion(String name, Class associatedEntity,
067: CriterionProperty property, String bundleName,
068: Locale locale, boolean isDynamic) {
069: super (name, associatedEntity, property, bundleName, locale,
070: isDynamic);
071: }
072:
073: /**
074: * Constructor that clones a query criterion. This constructor is used
075: * to instanciate a criterion in a search form when the form
076: * contains dynamic criteria.
077: * @param criterion query criterion that must be of
078: * type <code>NumericCriterion</code>
079: * @see FormCriterion#FormCriterion(FormCriterion) FormCriterion
080: */
081: public NumericCriterion(NumericCriterion criterion) {
082: super (criterion);
083: }
084:
085: /**
086: * Method that assigns the value of the criterion as a String. This method
087: * is needed for the user interface which uses only string values.
088: * @param value value to be assigned
089: * @see FormCriterion#setPropertyValue(java.lang.String)
090: */
091: public void setPropertyValue(String value) {
092: if (value != null) {
093: try {
094: setValue(new Integer(value));
095: } catch (NumberFormatException nfe) {
096: // do nothing because the value is not an integer
097: }
098: }
099: }
100:
101: /**
102: * Method that returns the value as a string. In this case, it converts
103: * from Integer to String.
104: * @see FormCriterion#getPropertyValue()
105: */
106: public String getPropertyValue() {
107: if (getValue() != null) {
108: return getValue().toString();
109: }
110:
111: return "";
112: }
113:
114: /**
115: * Method that returns the object type of the criterion value. In this
116: * case it returns a Integer object.
117: *
118: * @see FormCriterion#getObjectType()
119: */
120: public Class getObjectType() {
121: return Integer.class;
122: }
123:
124: /**
125: * Returns the list of operators that can be used with this criterion. The operator
126: * must be instanciated as {@link Operator Operator}.
127: * @return array of operators
128: */
129: public Operator[] getOperators() {
130:
131: return new Operator[] {
132: new Operator("operator.numeric.equal.label",
133: OperatorTypes.EQUAL, getBundle(), getLocale()),
134: new Operator("operator.numeric.lowerThan.label",
135: OperatorTypes.LOWER_THAN, getBundle(),
136: getLocale()),
137: new Operator("operator.numeric.higherThan.label",
138: OperatorTypes.GREATER_THAN, getBundle(),
139: getLocale()),
140: new Operator("operator.numeric.lowerThanOrEqual.label",
141: OperatorTypes.LOWER_THAN_OR_EQUAL, getBundle(),
142: getLocale()),
143: new Operator(
144: "operator.numeric.higherThanOrEqual.label",
145: OperatorTypes.GREATER_THAN_OR_EQUAL,
146: getBundle(), getLocale()) };
147: }
148:
149: /**
150: * Method that returns the displaying pattern.
151: *
152: * @see FormCriterion#getFormPattern()
153: */
154: public CriterionFormPattern getFormPattern() {
155: return CriterionFormPatterns.OPERATOR_INPUT;
156: }
157: }
|