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

View differences:

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