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