plugins/base1/se.lu.onk/trunk/QPackage/src/qpackage/calculator/Variable.java

Code
Comments
Other
Rev Date Author Line
66 09 Feb 06 enell 1 /*
66 09 Feb 06 enell 2  * Created on 27-May-2004
66 09 Feb 06 enell 3  * 
66 09 Feb 06 enell 4  * Variable.java is a part of WeightedMerge
66 09 Feb 06 enell 5  * 
66 09 Feb 06 enell 6  * Copyright (C) 2004 Johan Enell, Dept Oncology, Lund University
66 09 Feb 06 enell 7  * 
66 09 Feb 06 enell 8  * This program is free software; you can redistribute it and/or modify it under
66 09 Feb 06 enell 9  * the terms of the GNU General Public License as published by the Free Software
66 09 Feb 06 enell 10  * Foundation; either version 2 of the License, or (at your option) any later
66 09 Feb 06 enell 11  * version.
66 09 Feb 06 enell 12  * 
66 09 Feb 06 enell 13  * This program is distributed in the hope that it will be useful, but WITHOUT
66 09 Feb 06 enell 14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
66 09 Feb 06 enell 15  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
66 09 Feb 06 enell 16  * details.
66 09 Feb 06 enell 17  * 
66 09 Feb 06 enell 18  * You should have received a copy of the GNU General Public License along with
66 09 Feb 06 enell 19  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
66 09 Feb 06 enell 20  * Place - Suite 330, Boston, MA 02111-1307, USA.
66 09 Feb 06 enell 21  */
67 10 Feb 06 enell 22 package qpackage.calculator;
66 09 Feb 06 enell 23
66 09 Feb 06 enell 24 import java.util.HashMap;
66 09 Feb 06 enell 25 import java.util.HashSet;
66 09 Feb 06 enell 26
66 09 Feb 06 enell 27 /**
66 09 Feb 06 enell 28  * A Variable is a dynamic Operand. When it is constucted it receives a name and
66 09 Feb 06 enell 29  * it's value is set to <code>Float.NaN</code>.
66 09 Feb 06 enell 30  * 
66 09 Feb 06 enell 31  * @author Johan Enell, johan.enell@onk.lu.se, Dept Oncology, Lund University,
66 09 Feb 06 enell 32  *         S-221 85 Lund, Sweden
66 09 Feb 06 enell 33  */
66 09 Feb 06 enell 34 public class Variable extends Operand
66 09 Feb 06 enell 35 {
66 09 Feb 06 enell 36
66 09 Feb 06 enell 37   /**
66 09 Feb 06 enell 38    * The name of this Variable.
66 09 Feb 06 enell 39    */
66 09 Feb 06 enell 40   private String name;
66 09 Feb 06 enell 41
66 09 Feb 06 enell 42   /**
66 09 Feb 06 enell 43    * Constructs a new Variable object with it's name set to value and it's
66 09 Feb 06 enell 44    * value to Float.NaN. To set the value on this Variable use the
66 09 Feb 06 enell 45    * <code>setVariable(Variable variable, float value)</code> method.
66 09 Feb 06 enell 46    * 
66 09 Feb 06 enell 47    * @param value
66 09 Feb 06 enell 48    */
66 09 Feb 06 enell 49   protected Variable(String value)
66 09 Feb 06 enell 50   {
66 09 Feb 06 enell 51     super(value);
66 09 Feb 06 enell 52     name = value;
66 09 Feb 06 enell 53     this.value = Float.NaN;
66 09 Feb 06 enell 54   }
66 09 Feb 06 enell 55
66 09 Feb 06 enell 56   /*
66 09 Feb 06 enell 57    * (non-Javadoc)
66 09 Feb 06 enell 58    * 
66 09 Feb 06 enell 59    * @see calc.Token#setVariable(calc.Variable, float)
66 09 Feb 06 enell 60    */
66 09 Feb 06 enell 61   @Override
66 09 Feb 06 enell 62   protected void setVariable(Variable variable, float value)
66 09 Feb 06 enell 63   {
66 09 Feb 06 enell 64     if (this.equals(variable)) this.value = value;
66 09 Feb 06 enell 65   }
66 09 Feb 06 enell 66
66 09 Feb 06 enell 67   /*
66 09 Feb 06 enell 68    * (non-Javadoc)
66 09 Feb 06 enell 69    * 
66 09 Feb 06 enell 70    * @see calc.Token#getVariables()
66 09 Feb 06 enell 71    */
66 09 Feb 06 enell 72   @Override
66 09 Feb 06 enell 73   protected HashSet<Variable> getVariables()
66 09 Feb 06 enell 74   {
66 09 Feb 06 enell 75     HashSet<Variable> ret = new HashSet<Variable>();
66 09 Feb 06 enell 76     ret.add(this);
66 09 Feb 06 enell 77     return ret;
66 09 Feb 06 enell 78   }
66 09 Feb 06 enell 79
66 09 Feb 06 enell 80   /*
66 09 Feb 06 enell 81    * (non-Javadoc)
66 09 Feb 06 enell 82    * 
66 09 Feb 06 enell 83    * @see calc.Token#getValue()
66 09 Feb 06 enell 84    */
66 09 Feb 06 enell 85   @Override
66 09 Feb 06 enell 86   protected float getValue()
66 09 Feb 06 enell 87   {
66 09 Feb 06 enell 88     return value;
66 09 Feb 06 enell 89   }
66 09 Feb 06 enell 90
66 09 Feb 06 enell 91   /**
66 09 Feb 06 enell 92    * Gets the name of this Variable.
66 09 Feb 06 enell 93    * 
66 09 Feb 06 enell 94    * @return the name of this Variable.
66 09 Feb 06 enell 95    */
66 09 Feb 06 enell 96   public String getName()
66 09 Feb 06 enell 97   {
66 09 Feb 06 enell 98     return name;
66 09 Feb 06 enell 99   }
66 09 Feb 06 enell 100
66 09 Feb 06 enell 101   /**
66 09 Feb 06 enell 102    * Returns a string representation of this Variable. The string
66 09 Feb 06 enell 103    * representation of an Variable is the name.
66 09 Feb 06 enell 104    * 
66 09 Feb 06 enell 105    * @return a string representation of this Variable.
66 09 Feb 06 enell 106    * 
66 09 Feb 06 enell 107    * @see java.lang.Object#toString()
66 09 Feb 06 enell 108    */
66 09 Feb 06 enell 109   @Override
66 09 Feb 06 enell 110   public String toString()
66 09 Feb 06 enell 111   {
66 09 Feb 06 enell 112     return this.name;
66 09 Feb 06 enell 113   }
66 09 Feb 06 enell 114
66 09 Feb 06 enell 115   /**
66 09 Feb 06 enell 116    * Compares the specified object with this Variable for equality. Returnes
66 09 Feb 06 enell 117    * <code>true</code> if the specified object is also a Variable and the
66 09 Feb 06 enell 118    * name of the two objects are equal.
66 09 Feb 06 enell 119    * 
66 09 Feb 06 enell 120    * @return <code>true</code> if the specified object is equal to this
66 09 Feb 06 enell 121    *         Variable.
66 09 Feb 06 enell 122    * 
66 09 Feb 06 enell 123    * @see java.lang.Object#equals(java.lang.Object)
66 09 Feb 06 enell 124    */
66 09 Feb 06 enell 125   @Override
66 09 Feb 06 enell 126   public boolean equals(Object obj)
66 09 Feb 06 enell 127   {
66 09 Feb 06 enell 128     if (obj instanceof Variable) return this.getName().equals(((Variable) obj).getName());
66 09 Feb 06 enell 129     return super.equals(obj);
66 09 Feb 06 enell 130   }
66 09 Feb 06 enell 131
66 09 Feb 06 enell 132   /**
66 09 Feb 06 enell 133    * Returns the hash code value for this Variable. The hash code is defined
66 09 Feb 06 enell 134    * as the hash code for the name as it is specifid in String.hashCode().
66 09 Feb 06 enell 135    * This ensures that <code>v1.equals(v2)</code> implies that
66 09 Feb 06 enell 136    * <code>v1.hashCode() == v2.hashCode()</code> for any two Variables
66 09 Feb 06 enell 137    * <code>v1</code> and <code>v2</code>, as required by the general
66 09 Feb 06 enell 138    * contract of Object.hashCode.
66 09 Feb 06 enell 139    * 
66 09 Feb 06 enell 140    * @return the hash code value of this Operand.
66 09 Feb 06 enell 141    * 
66 09 Feb 06 enell 142    * @see java.lang.Object#hashCode()
66 09 Feb 06 enell 143    * @see java.lang.String#hashCode()
66 09 Feb 06 enell 144    */
66 09 Feb 06 enell 145   @Override
66 09 Feb 06 enell 146   public int hashCode()
66 09 Feb 06 enell 147   {
66 09 Feb 06 enell 148     return name.hashCode();
66 09 Feb 06 enell 149   }
66 09 Feb 06 enell 150
66 09 Feb 06 enell 151   /*
66 09 Feb 06 enell 152    * (non-Javadoc)
66 09 Feb 06 enell 153    * 
66 09 Feb 06 enell 154    * @see calc.Token#getValue(java.util.HashMap)
66 09 Feb 06 enell 155    */
66 09 Feb 06 enell 156   @Override
66 09 Feb 06 enell 157   protected float getValue(HashMap variables)
66 09 Feb 06 enell 158   {
66 09 Feb 06 enell 159     Double value = (Double) variables.get(this);
66 09 Feb 06 enell 160     if (value != null) this.value = value.floatValue();
66 09 Feb 06 enell 161     else this.value = Float.NaN;
66 09 Feb 06 enell 162
66 09 Feb 06 enell 163     return this.value;
66 09 Feb 06 enell 164   }
66 09 Feb 06 enell 165 }