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.Collection;
026: import java.util.Locale;
027:
028: import org.mdarad.framework.expr.Criterion;
029: import org.mdarad.framework.expr.OperatorTypes;
030:
031: /**
032: * This class represents a search criterion that presents a list of values to the user.
033: * To use this criterion, you need to set a {@link List List} of {@link CriterionListElement CriterionListElement}
034: * to the criterion. This list will be displayed as the selection of values.
035: * @author Philippe Brouillette
036: * @version 1.0
037: */
038: public class ListCriterion extends FormCriterion {
039:
040: /**
041: * Constructor that takes all the properties to initialize a search
042: * criterion. By default, the criterion is dynamic.
043: * @param name name of the criterion. This name must be unique
044: * as it is a key in a map.
045: * @param associatedEntity class type associated to this criterion
046: * @param property property used for the query criterion
047: * @param bundleName bundle name
048: * @param locale locale information
049: * @see FormCriterion#FormCriterion(String, CriterionProperty, String, Locale) FormCriterion
050: */
051: public ListCriterion(String name, Class associatedEntity,
052: CriterionProperty property, String bundleName, Locale locale) {
053: super (name, associatedEntity, property, bundleName, locale);
054: }
055:
056: /**
057: * Constructor that clones a query criterion. This constructor is used
058: * to instanciate a criterion in a search form when the form
059: * contains dynamic criteria.
060: * @param criterion query criterion that must be of
061: * type <code>ListCriterion</code>
062: * @see FormCriterion#FormCriterion(FormCriterion) FormCriterion
063: */
064: public ListCriterion(ListCriterion criterion) {
065: super (criterion);
066: setList(criterion.getList());
067: }
068:
069: /**
070: * Method that assigns the value of the criterion as a String. This method
071: * is needed for the user interface which uses only string values.
072: * @param value value to be assigned
073: * @see FormCriterion#setPropertyValue(java.lang.String)
074: */
075: public void setPropertyValue(String value) {
076: if (value != null) {
077: setValue(value);
078: }
079: }
080:
081: /**
082: * Method that returns the object type of the criterion value. In this
083: * case it returns a String object.
084: *
085: * @see FormCriterion#getObjectType()
086: */
087: public Class getObjectType() {
088: return String.class;
089: }
090:
091: /**
092: * Method that returns the criterion from the expression
093: * framework. ({@link Criterion})
094: * <p><b>NOTE:</b> The implementation must take care of the type
095: * of operator that is used to determine the criterion to use.
096: * @return the criterion
097: */
098: public Criterion getExprCriterion() {
099: Criterion crit = new Criterion(getAssociatedEntity(),
100: getProperty().getName(), OperatorTypes.EQUAL,
101: getValue());
102:
103: return crit;
104: }
105:
106: /**
107: * Property that keeps the list of allowable values
108: * associated to the criterion.
109: */
110: private Collection criterionElements;
111:
112: /**
113: * Method that adds a new allowable value to the list of elements.
114: * @param element element of the list. Must be of type
115: * {@link CriterionListElement CriterionListElement}
116: */
117: public void addCriterionElement(CriterionListElement element) {
118: if (element != null) {
119: criterionElements.add(element);
120: }
121: }
122:
123: /**
124: * Method that returns the list of allowables elements of the
125: * list.
126: * @return a {@link java.util.Collection Collection}
127: */
128: public Collection getList() {
129: return criterionElements;
130: }
131:
132: /**
133: * Method that sets the list of allowable elements.
134: * The list must contains objects of the
135: * {@link CriterionListElement CriterionListElement}
136: * class type
137: * @param list list of {@link CriterionListElement}
138: */
139: public void setList(Collection list) {
140: this .criterionElements = list;
141: }
142:
143: /**
144: * Method that returns the displaying pattern.
145: *
146: * @see FormCriterion#getFormPattern()
147: */
148: public CriterionFormPattern getFormPattern() {
149: return CriterionFormPatterns.NO_OPERATOR_LIST;
150: }
151:
152: /**
153: * Property that keeps the link of the onchange action in
154: * javascript. Patch to allow a on change action of a criterion.
155: */
156: private String onChangeAction = "";
157:
158: public String getOnChangeAction() {
159: return onChangeAction;
160: }
161:
162: public void setOnChangeAction(String onChangeAction) {
163: this.onChangeAction = onChangeAction;
164: }
165: }
|