【Java开源代码栏目提醒】:以下是网学会员为您推荐的Java开源代码-ComparisonRule.java,希望本篇文章对您学习有所帮助。
package busrules;
import busrules.*;
import java.util.Hashtable;
/**
* Using the specified operator, this rule
* tests the value in the hashtable using its
* value as a key, versus the constant.
*
* <COMPARISONRULE OPERATOR="" CONSTANT="" KEY="">
*/
public class ComparisonRule implements Rule
{
/*Test against numbers*/
public static final int NUMERIC_EQ =0;
public static final int NUMERIC_NE =1;
public static final int NUMERIC_GT =2;
public static final int NUMERIC_LT =3;
public static final int NUMERIC_GE =4;
public static final int NUMERIC_LE =5;
/*Tests against strings*/
public static final int STRING_EQ =10;
public static final int STRING_NE =11;
public static final int STRING_GT =12;
public static final int STRING_LT =13;
public static final int STRING_GE =14;
public static final int STRING_LE =15;
protected int operator;
protected String constant;
protected String value;
public void setOperator(int op)
{
operator = op;
}
public void setConstant(String s)
{
constant = s;
}
public void setValueKey(String s)
{
value = s;
}
public boolean isValidFor(Hashtable data)
{
boolean valid = false;
String str1,str2;
if((data.get(value) != null)
&&(constant != null))
{
switch(operator)
{
case ComparisonRule.NUMERIC_EQ:
if(doubleValueFor(null,constant)
== doubleValueFor(data,value))
{
valid = true;
}
break;
case ComparisonRule.NUMERIC_NE:
if(doubleValueFor(null,constant)
!= doubleValueFor(data,value))
{
valid = true;
}
break;
case ComparisonRule.NUMERIC_GT:
if(doubleValueFor(null,constant)
< doubleValueFor(data,value))
{
valid = true;
}
break;
case ComparisonRule.NUMERIC_LT:
if(doubleValueFor(null,constant)
> doubleValueFor(data,value))
{
valid = true;
}
break;
case ComparisonRule.NUMERIC_GE:
if(doubleValueFor(null,constant)
<= doubleValueFor(data,value))
{
valid = true;
}
break;
case ComparisonRule.NUMERIC_LE:
if(doubleValueFor(null,constant)
>= doubleValueFor(data,value))
{
valid = true;
}
break;
case ComparisonRule.STRING_EQ:
str1 = constant;
str2 = stringValueFor(data,value);
if(str1.equals(str2))
{
valid = true;
}
break;
case ComparisonRule.STRING_NE:
str1 = constant;
str2 = stringValueFor(data,value);
if(!str1.equals(str2))
{
valid = true;
}
break;
case ComparisonRule.STRING_GT:
str1 = stringValueFor(data,value);
str2 = constant;
if(str1.compareTo(str2)>0)
{
valid = true;
}
break;
case ComparisonRule.STRING_LT:
str1 = stringValueFor(data,value);
str2 = constant;
if(str1.compareTo(str2)<0)
{
valid = true;
}
break;
case ComparisonRule.STRING_GE:
str1 = stringValueFor(data,value);
str2 = constant;
if(str1.compareTo(str2)>=0)
{
valid = true;
}
break;
case ComparisonRule.STRING_LE:
str1 = stringValueFor(data,value);
str2 = constant;
if(str1.compareTo(str2)<=0)
{
valid = true;
}
break;
}
}
return valid;
}
public double validityFor(Hashtable data)
{
return (isValidFor(data)) ? 1.0 : 0.0;
}
public int intValueFor(Hashtable data,String varName)
{
String value = stringValueFor(data,varName);
int retVal = 0;
if(value != null)
{
try
{
retVal = Integer.parseInt(value);
}
catch(Exception exp)
{
retVal = 0;
}
}
return retVal;
}
public double doubleValueFor(Hashtable data,String varName)
{
String value = stringValueFor(data,varName);
double retVal = 0.0;
if(value != null)
{
try
{
retVal = Double.valueOf(value).doubleValue();
}
catch(Exception exp)
{
retVal = 0.0;
}
}
return retVal;
}
public String stringValueFor(Hashtable data,String varName)
{
Object val;
String retVal = null;
if(data != null) val = data.get(varName);
else val = varName;
if(val != null) retVal = val.toString();
return retVal;
}
}
上一篇:
Comparison.java
下一篇:
遥远的牵挂