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
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