Revision 44769 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.geometry/org.gvsig.expressionevaluator.geometry.lib/org.gvsig.expressionevaluator.geometry.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultGeometryExpressionBuilderHelper.java

View differences:

DefaultGeometryExpressionBuilderHelper.java
7 7
import org.gvsig.fmap.geom.Geometry;
8 8
import org.gvsig.fmap.geom.primitive.Envelope;
9 9

  
10
import static org.gvsig.expressionevaluator.ExpressionBuilder.PARAMETER_TYPE_VARIABLE;
11 10
import org.gvsig.expressionevaluator.ExpressionBuilder.AbstractValue;
12 11
import org.gvsig.expressionevaluator.ExpressionBuilder.Constant;
13 12
import org.gvsig.expressionevaluator.ExpressionBuilder.Function;
14 13
import static org.gvsig.expressionevaluator.ExpressionBuilder.PARAMETER_TYPE_CONSTANT;
14
import static org.gvsig.expressionevaluator.ExpressionBuilder.PARAMETER_TYPE_VARIABLE;
15 15
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
16 16
import org.gvsig.expressionevaluator.ExpressionBuilder.Visitor;
17 17
import org.gvsig.expressionevaluator.ExpressionBuilder.VisitorFilter;
18 18
import org.gvsig.expressionevaluator.Formatter;
19
import org.gvsig.expressionevaluator.impl.DefaultExpressionBuilder.FunctionBase;
20
import org.gvsig.expressionevaluator.impl.DefaultExpressionBuilder.ParameterBase;
21 19
import org.gvsig.fmap.geom.GeometryUtils;
22 20
import org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper;
23 21
import static org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.PARAMETER_TYPE_GEOMETRY;
......
45 43
    private static final String FORMAT_ST_GEOMFROMEWKB = "ST_GeomFromEWKB(({0}), ({1}))";
46 44
    private static final String FORMAT_ST_SIMPLIFY = "ST_Simplify(({0}), ({1}))";
47 45

  
48
    public static class GeometryParameterBase 
49
            extends ParameterBase 
46
    public class GeometryParameterBase 
47
            extends AbstractValue 
50 48
            implements GeometryParameter {
51 49

  
52 50
        protected Value srs;
53 51
        protected GeometryExpressionBuilderHelper builder;
54

  
52
        protected String name;
53
        protected Object value;
54
        protected int type;
55 55
        /*
56 56
        Para un parametro de tipo Geometria, el srs sera siempre un Constant
57 57
        excepto cuando se le asigne una geometria contante al parametro y esta
......
61 61
        Si se quiere que el SRS sea un Parameter, se construira como tal.
62 62
        */
63 63
        public GeometryParameterBase(GeometryExpressionBuilderHelper builder) {
64
            super();
64
            this.type = PARAMETER_TYPE_CONSTANT;
65
            this.name = null;
66
            this.value = null;
65 67
            this.builder = builder;
66 68
        }
67 69

  
......
122 124
            return (Geometry) this.value;
123 125
        }
124 126

  
127

  
125 128
        @Override
126
        public GeometryParameter name(String value) {
127
            return (GeometryParameter) super.name(value);
129
        public GeometryParameter as_constant() {
130
            this.type = PARAMETER_TYPE_CONSTANT;
131
            if (this.value == null && this.name != null) {
132
                this.value = this.name;
133
            }
134
            return this;
128 135
        }
129 136

  
130 137
        @Override
131 138
        public GeometryParameter as_variable() {
132
            return (GeometryParameter) super.as_variable();
139
            this.type = PARAMETER_TYPE_VARIABLE;
140
            if (this.value != null && this.name == null) {
141
                this.name = (String) this.value;
142
            }
143
            return this;
133 144
        }
145

  
146
        @Override
147
        public GeometryParameter name(String name) {
148
            this.type = PARAMETER_TYPE_VARIABLE;
149
            this.name = name;
150
            return this;
151
        }
134 152
        
135 153
        @Override
154
        public String name() {
155
            switch (this.type) {
156
                case PARAMETER_TYPE_VARIABLE:
157
                    return this.name;
158
                case PARAMETER_TYPE_CONSTANT:
159
                    if (this.value == null) {
160
                        return null;
161
                    }
162
                    return this.value.toString();
163
                default:
164
                    if (this.name != null) {
165
                        return this.name;
166
                    }
167
                    if (this.value != null) {
168
                        return this.value.toString();
169
                    }
170
                    return null;
171
            }
172
        }
173

  
174
        @Override
175
        public int type() {
176
            return this.type;
177
        }
178

  
179
        @Override
180
        public boolean is_constant() {
181
            return this.type == PARAMETER_TYPE_CONSTANT;
182
        }
183

  
184
        @Override
185
        public boolean is_variable() {
186
            return this.type == PARAMETER_TYPE_VARIABLE;
187
        }
188

  
189
        @Override
136 190
        public GeometryParameter as_geometry_variable() {
137 191
            this.type = PARAMETER_TYPE_GEOMETRY;
138 192
            if (this.value == null && this.name != null) {
......
147 201
        }
148 202

  
149 203
        @Override
150
        public GeometryParameter as_constant() {
151
            return (GeometryParameter) super.as_constant();
152
        }
153

  
154
        @Override
155
        public String name() {
156
            if( this.type == PARAMETER_TYPE_VARIABLE ) {
157
                return this.name;
158
            }
159
            return super.name();
160
        }
161

  
162
        @Override
163 204
        public Object value() {
164 205
            try {
165 206
                switch (this.type) {
......
188 229
                throw new RuntimeException("Can't get value from parameter.", ex);
189 230
            }
190 231
        }
232
        
233
        @Override
234
        public String toString() {
235
          return this.toString(this.builder.builder().formatter()); 
236
        }
191 237

  
192 238
        @Override
193 239
        public String toString(Formatter<Value> formatter) {
......
310 356
        }
311 357

  
312 358
        @Override
359
        public String toString() {
360
          return this.toString(builder.builder().formatter()); 
361
        }
362

  
363
        @Override
313 364
        public String toString(Formatter<Value> formatter) {
314 365
            if( formatter!=null && formatter.canApply(this) ) {
315 366
                return formatter.format(this);
......
368 419
        }
369 420

  
370 421
        @Override
422
        public String toString() {
423
          return this.toString(this.builder.builder().formatter()); 
424
        }
425

  
426
        @Override
371 427
        public String toString(Formatter<Value> formatter) {
372 428
            if( formatter!=null && formatter.canApply(this) ) {
373 429
                return formatter.format(this);
......
474 530
    }
475 531

  
476 532
    public Function builtin_function(String name, String format, Value... values) {
477
        FunctionBase func = new FunctionBase(name, format);
478
        for (Value theValue : values) {
479
            func.parameter(theValue);
480
        }
533
        Function func = this.builder.function(name, values);
534
        func.format(format);
481 535
        return func;
482 536
    }    
483 537
    
484 538
    public Function function(String name, Value... values) {
485
        FunctionBase func = new FunctionBase(name);
486
        for (Value theValue : values) {
487
            func.parameter(theValue);
488
        }
539
        Function func = this.builder.function(name, values);
489 540
        return func;
490 541
    }    
491 542
    

Also available in: Unified diff