Revision 22512 trunk/extensions/extSymbology/src/org/gvsig/symbology/fmap/rendering/filter/operations/MultOperator.java
MultOperator.java | ||
---|---|---|
48 | 48 |
|
49 | 49 |
/** |
50 | 50 |
* Implements the funcionality of the multiplication operator |
51 |
*
|
|
51 |
* |
|
52 | 52 |
* @author Pepe Vidal Salvador - jose.vidal.salvador@iver.es |
53 | 53 |
* |
54 | 54 |
*/ |
55 |
public class MultOperator implements Expression{
|
|
55 |
public class MultOperator extends Operator{
|
|
56 | 56 |
|
57 |
|
|
58 |
|
|
57 | 59 |
private ArrayList<Expression> arguments = new ArrayList<Expression>(); |
58 | 60 |
|
59 | 61 |
public String getName() { |
60 | 62 |
return OperationTags.MULT_OP; |
61 | 63 |
} |
62 | 64 |
|
63 |
public Object evaluate(Hashtable<String, Value> symbol_table)throws ExpressionException { |
|
65 |
public MultOperator(Hashtable<String, Value> symbol_table) { |
|
66 |
super(symbol_table); |
|
67 |
} |
|
64 | 68 |
|
69 |
public Object evaluate()throws ExpressionException { |
|
70 |
|
|
65 | 71 |
Double doubleResult = null; |
66 | 72 |
Integer intResult = null; |
67 | 73 |
|
68 | 74 |
|
69 | 75 |
try { |
70 | 76 |
|
71 |
intResult = (Integer)((Expression)arguments.get(0)).evaluate(symbol_table);
|
|
77 |
intResult = (Integer)((Expression)arguments.get(0)).evaluate(); |
|
72 | 78 |
if (arguments.size() == 1) |
73 | 79 |
return intResult; |
74 | 80 |
|
75 | 81 |
for (int i = 1; i < arguments.size(); i++){ |
76 | 82 |
Expression function = (Expression)arguments.get(i); |
77 |
intResult *= ((Integer)function.evaluate(symbol_table));
|
|
83 |
intResult *= ((Integer)function.evaluate()); |
|
78 | 84 |
} |
79 | 85 |
|
80 | 86 |
return intResult; |
81 |
|
|
82 | 87 |
|
88 |
|
|
83 | 89 |
} catch (ClassCastException e) { |
84 |
|
|
85 |
doubleResult = new Double(((Expression)arguments.get(0)).evaluate(symbol_table).toString());
|
|
90 |
|
|
91 |
doubleResult = new Double(((Expression)arguments.get(0)).evaluate().toString()); |
|
86 | 92 |
if(arguments.size() == 1) |
87 | 93 |
return doubleResult; |
88 | 94 |
for (int i = 1; i < arguments.size(); i++){ |
89 | 95 |
Expression function = (Expression)arguments.get(i); |
90 |
doubleResult *= new Double(((Expression)function).evaluate(symbol_table).toString());
|
|
96 |
doubleResult *= new Double(((Expression)function).evaluate().toString()); |
|
91 | 97 |
} |
92 | 98 |
|
93 | 99 |
return doubleResult; |
... | ... | |
97 | 103 |
|
98 | 104 |
public void addArgument(int i, Expression arg) { |
99 | 105 |
arguments.add(i, arg); |
100 |
|
|
106 |
|
|
101 | 107 |
} |
102 | 108 |
|
103 | 109 |
public String getPattern() { |
104 | 110 |
return "("+Messages.getString(OperationTags.OPERAND) |
105 |
+ OperationTags.MULT_OP +Messages.getString(OperationTags.OPERAND)+ ")\n"+
|
|
111 |
+ OperationTags.MULT_OP +Messages.getString(OperationTags.OPERAND)+ ")\n"+ |
|
106 | 112 |
Messages.getString(OperationTags.OPERAND) +" = "+ |
107 |
Messages.getString(OperationTags.NUMERIC_VALUE);
|
|
113 |
Messages.getString(OperationTags.NUMERIC_VALUE); |
|
108 | 114 |
} |
109 |
|
|
115 |
|
|
110 | 116 |
public ArrayList<Expression> getArguments() { |
111 | 117 |
return arguments; |
112 | 118 |
} |
... | ... | |
115 | 121 |
this.arguments = arguments; |
116 | 122 |
} |
117 | 123 |
|
118 |
public void check(Hashtable<String, Value> symbol_table) throws ExpressionException {
|
|
119 |
|
|
124 |
public void check() throws ExpressionException { |
|
125 |
|
|
120 | 126 |
for (int i = 0; i < arguments.size(); i++) { |
121 | 127 |
if(!(arguments.get(i)instanceof NumericalConstant)) |
122 |
throw new ExpressionException(ExpressionException.CLASS_CASTING_EXCEPTION);
|
|
128 |
throw new ExpressionException(ExpressionException.CLASS_CASTING_EXCEPTION); |
|
123 | 129 |
} |
124 | 130 |
} |
125 | 131 |
} |
Also available in: Unified diff