Revision 22512 trunk/extensions/extSymbology/src/org/gvsig/symbology/fmap/rendering/filter/operations/AddOperator.java

View differences:

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