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.Currency;
026: import java.util.Locale;
027:
028: import org.dataisland.primitives.datatype.Money;
029:
030: /**
031: * This classe representes a criterion that is used with "date" properties.
032: * It defines the operators used with a numeric criterion.
033: * @author Philippe Brouillette
034: * @version 1.0
035: */
036: public class MoneyCriterion extends NumericCriterion {
037:
038: /**
039: * Constructor that takes all the needed properties to
040: * initialize a date 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 MoneyCriterion(String name, Class associatedEntity,
050: CriterionProperty property, String bundleName, Locale locale) {
051: super (name, associatedEntity, property, bundleName, locale);
052: }
053:
054: /**
055: * Constructor that clones a query criterion. This constructor is used
056: * to instanciate a criterion in a search form when the form
057: * contains dynamic criteria.
058: * @param criterion query criterion that must be of
059: * type <code>DateCriterion</code>
060: * @see FormCriterion#FormCriterion(FormCriterion) FormCriterion
061: */
062: public MoneyCriterion(MoneyCriterion criterion) {
063: super (criterion);
064: }
065:
066: /**
067: * Method that assigns the value of the criterion as a String. This method
068: * is needed for the user interface which uses only string values.
069: * @param value value to be assigned
070: * @see FormCriterion#setPropertyValue(java.lang.String)
071: */
072: public void setPropertyValue(String value) {
073: if (value != null && value.trim().length() > 0) {
074: //TODO: More intelligent system for money
075: String[] values = value.split(" ");
076:
077: Money money = new Money();
078: Double amount = new Double(0.0d);
079:
080: //If values are found, otherwise use default
081: Currency currency = Currency.getInstance(Locale
082: .getDefault());
083: if (values.length == 2) {
084: amount = new Double(values[0]);
085: currency = Currency.getInstance(values[1]);
086: } else if (value.trim().length() != 0) {
087: amount = new Double(value);
088: }
089: money.setAmount(amount);
090: money.setCurrency(currency);
091: setValue(money);
092: }
093: }
094:
095: /**
096: * Method that returns the value as a string.
097: * @see FormCriterion#getPropertyValue()
098: */
099: public String getPropertyValue() {
100: if (getValue() != null) {
101: Money money = (Money) getValue();
102: return money.getAmount() + " " + money.getCurrency();
103: }
104:
105: return "";
106: }
107:
108: /**
109: * Method that returns the object type of the criterion value.
110: *
111: * @see FormCriterion#getObjectType()
112: */
113: public Class getObjectType() {
114: return Money.class;
115: }
116: }
|