Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.api / src / main / java / org / gvsig / expressionevaluator / ExpressionBuilder.java @ 44147

History | View | Annotate | Download (12.4 KB)

1
package org.gvsig.expressionevaluator;
2

    
3
import java.util.List;
4
import org.cresques.cts.IProjection;
5
import org.gvsig.fmap.geom.Geometry;
6
import org.gvsig.fmap.geom.primitive.Envelope;
7

    
8
public interface ExpressionBuilder {
9

    
10
    public enum GeometrySupportType {
11
        WKT,
12
        WKB,
13
        EWKB,
14
        NATIVE
15
    }
16

    
17
    public enum ParameterType {
18
        Variable,
19
        Constant,
20
        Geometry
21
    }
22

    
23
    public interface VisitorFilter {
24
        boolean accept(Visitable visitable);
25
    }
26

    
27
     public interface Visitor {
28
        public void visit(Visitable value);
29
    }
30

    
31
    public interface Visitable {
32
        public void accept(Visitor visitor, VisitorFilter filter);
33
    }
34
    
35
    public interface Config {
36
        public final static String has_spatial_functions = "has_spatial_functions";
37
        public final static String support_schemas = "support_schemas";
38
        public final static String quote_for_identifiers = "quote_for_identifiers";
39
        public final static String quote_for_strings = "quote_for_strings";
40
        public final static String geometry_type_support = "geometry_type_support";
41
        public final static String constant_true = "constant_true";
42
        public final static String constant_false = "constant_false";
43
        public final static String group = "group";
44
        public final static String attribute_crs = "crs";
45
        
46
        public final static String ST_SRID = "ST_SRID";
47
        public final static String ST_AsText = "ST_AsText";
48
        public final static String ST_AsBinary = "ST_AsBinary";
49
        public final static String ST_AsEWKB = "ST_AsEWKB";
50
        public final static String ST_Contains = "ST_Contains";
51
        public final static String ST_Crosses = "ST_Crosses";
52
        public final static String ST_Disjoint = "ST_Disjoint";
53
        public final static String ST_Equals = "ST_Equals";
54
        public final static String ST_IsClosed = "ST_IsClosed";
55
        public final static String ST_Overlaps = "ST_Overlaps";
56
        public final static String ST_Touches = "ST_Touches";
57
        public final static String ST_Within = "ST_Within";
58
        public final static String ST_Intersects = "ST_Intersects";
59
        public final static String ST_Envelope = "ST_Envelope";
60
        public final static String ST_GeomFromText = "ST_GeomFromText";
61
        public final static String ST_GeomFromWKB = "ST_GeomFromWKB";
62
        public final static String ST_GeomFromEWKB = "ST_GeomFromEWKB";
63
        public final static String ST_Simplify = "ST_Simplify";        
64
        
65
        public final static String lcase = "lcase";
66
        public final static String ucase = "ucase";
67
        public final static String iif = "iif";
68
        public final static String ifnull = "ifnull";
69
        
70
        public final static String isNull = "isNull";
71
        public final static String notIsNull = "notIsNull";
72
        public final static String operator_not = "operator_not";
73
     
74
        public final static String operator_AND = "operator_AND";
75
        public final static String operator_OR = "operator_OR";
76
        public final static String operator_EQ = "operator_EQ";
77
        public final static String operator_NE = "operator_NE";
78
        public final static String operator_GT = "operator_GT";
79
        public final static String operator_GE = "operator_GE";
80
        public final static String operator_LT = "operator_LT";
81
        public final static String operator_LE = "operator_LE";
82
        public final static String operator_LIKE = "operator_LIKE";
83
        public final static String operator_ILIKE = "operator_ILIKE";
84
        
85
        public final static String operator_add = "operator_add";
86
        public final static String operator_subst = "operator_subst";
87
        public final static String operator_mult = "operator_mult";
88
        public final static String operator_div = "operator_div";
89
        public final static String operator_concat = "operator_concat";
90

    
91

    
92
        public GeometrySupportType getGeometryTypeSupport();
93
        public boolean has_spatial_functions();
94
        public boolean has_functionality(String functionality);
95
        public void remove_functionality(String functionality);
96
        
97
        public boolean getBoolean(String name);
98
        public String getString(String name);
99
        public Object get(String name);
100
        public void set(String name, Object value);
101
    }
102
    
103
    public interface Value extends Visitable {
104

    
105
    }
106

    
107
    public interface Group extends Value {
108
        public Value getValue();
109
    }
110

    
111
    public interface Constant extends Value {
112
        public Object getValue();
113
    }
114

    
115
    public interface Custom extends Value {
116
        public Object getValue();
117
        public Custom add(Variable variable);
118
        public Custom add(Parameter parameter);
119
    }
120

    
121
    public interface GeometryValue extends Value {
122
        public Geometry getGeometry();
123
        public IProjection getSRS();
124
    }
125
    
126
    public interface Variable extends Value, Comparable<Variable> {
127
        public String getName();
128
    }
129

    
130
    public interface Parameter extends Value {
131
        public Parameter as_constant();
132
        public Parameter as_variable();        
133
        public Parameter as_geometry_variable();
134
        public Parameter srs(Value srs);
135
        public Parameter srs(IProjection srs);
136
        public String getName();
137
        public Object getValue();
138
        public Parameter value(Object value);
139
        public Parameter name(String value);
140
        public ParameterType getType();
141
        public Value getSRS();
142
        public boolean is_constant();
143
        public boolean is_variable();
144
        public boolean is_geometry_variable();        
145
    }
146
    
147
    public interface Parameters extends List<Parameter> {
148
        public Parameter get(String name);
149
    }
150

    
151
    public interface Function extends Value {
152
        public String getName();
153
        public List<Value> parameters();
154
        public Function parameter(Value parameter);
155
    }
156

    
157
    public interface BinaryOperator extends Value {
158
        public String getName();
159
        public Value getLeft();
160
        public Value getRight();
161
        public BinaryOperator setLeft(Value operand);
162
        public BinaryOperator setRight(Value operand);
163
    }
164
    
165
    public void accept(Visitor visitor, VisitorFilter filter);
166

    
167
    public List<Variable> getVariables();
168
    
169
    public Parameters getParameters();
170
    
171
    public boolean has_spatial_functions();
172
    
173
    public GeometrySupportType geometry_support_type();
174

    
175
    public String identifier(String name);
176

    
177
    public String bytearray(byte[] data);
178
    
179
    public String bytearray_hex(byte[] data);
180

    
181
    public String bytearray_0x(byte[] data);
182

    
183
    public String bytearray_x(byte[] data);
184

    
185
    public String string(String s);
186
   
187
    public Object getSRSId(IProjection projection);
188
    
189
    public Config getConfig();
190

    
191
    public Value getValue();
192
    
193
    public ExpressionBuilder setValue(Value value);
194
    
195
    public Variable variable(String name);
196
    
197
    public Variable column(String name); // Alias for variable(name)
198

    
199
    public Parameter parameter(String name);
200

    
201
    public Parameter parameter();
202

    
203
    public Constant constant(Object value);
204
    
205
    public Group group(Value group);
206

    
207
    public GeometryValue geometry(Geometry geom, IProjection projection);
208

    
209
    public GeometryValue geometry(Geometry geom);
210

    
211
    public GeometryValue envelope(Envelope envelope, IProjection projection);
212

    
213
    public GeometryValue envelope(Envelope envelope);
214

    
215
    public Custom custom(Object value);
216
    
217
    public Function function(String name, Value... values);
218

    
219
    public Constant srs(IProjection projection);
220

    
221
    public Function getAsGeometry(Value value);
222

    
223
    
224
    public Function not(Value value);
225

    
226
    public Function notIsNull(Value value);
227
    
228
    public Function isNull(Value value);
229

    
230
    public Function ST_SRID(Value geom);
231
    
232
    public Function ST_AsText(Value geom);
233

    
234
    public Function ST_AsBinary(Value geom);
235

    
236
    public Function ST_AsEWKB(Value geom);
237

    
238
    public Function ST_Envelope(Value geom);
239

    
240
    public Function ST_GeomFromText(Value geom, Value crs);
241
    
242
    public Function ST_GeomFromWKB(Value geom, Value crs);
243
            
244
    public Function ST_GeomFromEWKB(Value geom, Value crs);
245

    
246
    public Function ST_Simplify(Value geom, Value tolerance);
247

    
248
    public Function ST_Equals(Value geom1, Value geom2);
249

    
250
    public Function ST_Intersects(Value geom1, Value geom2);
251

    
252
    public Function ST_Contains(Value geom1, Value geom2);
253

    
254
    public Function ST_Disjoint(Value geom1, Value geom2);
255

    
256
    public Function ST_Crosses(Value geom1, Value geom2);
257

    
258
    public Function ST_IsClosed(Value geom1);
259

    
260
    public Function ST_Overlaps(Value geom1, Value geom2);
261

    
262
    public Function ST_Touches(Value geom1, Value geom2);
263

    
264
    public Function ST_Within(Value geom1, Value geom2);
265

    
266
    public Function lcase(Value s);
267
    
268
    public Function ucase(Value s);
269

    
270
    public BinaryOperator and(Value op1, Value op2);
271

    
272
    public BinaryOperator or(Value op1, Value op2);
273

    
274
    public BinaryOperator eq(Value op1, Value op2);
275
    
276
    public BinaryOperator ne(Value op1, Value op2);
277
    
278
    public BinaryOperator gt(Value op1, Value op2);
279
    
280
    public BinaryOperator ge(Value op1, Value op2);
281

    
282
    public BinaryOperator lt(Value op1, Value op2);
283
    
284
    public BinaryOperator le(Value op1, Value op2);
285

    
286
    public BinaryOperator like(Value op1, Value op2);
287

    
288
    public BinaryOperator ilike(Value op1, Value op2);
289

    
290
    public BinaryOperator add(Value op1, Value op2);
291

    
292
    public BinaryOperator subst(Value op1, Value op2);
293

    
294
    public BinaryOperator mult(Value op1, Value op2);
295

    
296
    public BinaryOperator div(Value op1, Value op2);
297

    
298
    public BinaryOperator concat(Value op1, Value op2);
299

    
300
    public ExpressionBuilder set(Value value);
301

    
302
    public ExpressionBuilder and(Value value);
303

    
304
    public ExpressionBuilder or(Value value);
305

    
306
    public Function iif(Value condition, Value iftrue, Value iffalse);
307
    
308
    public Function ifnull(Value value, Value iftrue, Value iffalse);
309

    
310
    public ExpressionBuilder createExpressionBuilder();
311
   
312
    public Function left(Value str, Value size);
313
    
314
    public Function right(Value str, Value len);
315
    
316
    public Function locate(Value search, Value str, Value start) ;
317
    
318
    public Function position(Value search, Value str);
319
    
320
    public Function lpad(Value str, Value len, Value padstr) ;
321
    
322
    public Function rpad(Value str, Value len, Value padstr);
323
    
324
    public Function ltrim(Value str);
325
    
326
    public Function rtrim(Value str);
327
    
328
    public Function trim(Value str);
329
    
330
    public Function repeat(Value str, Value size);
331
    
332
    public Function replace(Value str, Value search, Value replstr);
333
    
334
    public Function ascii(Value str);
335
    
336
    public Function lenght(Value str);
337

    
338
    public Function instr(Value str, Value search, Value start);
339
    
340
    public Function lower(Value str);
341
    
342
    public Function upper(Value str);
343
    
344
    public Function space(Value size);
345
    
346
    public Function substring(Value str, Value start, Value len);
347
    
348
    public Function acos(Value num);
349
    
350
    public Function asin(Value num);
351
    
352
    public Function atan(Value num);
353
    
354
    public Function cos(Value num);
355
    
356
    public Function cosh(Value num);
357
    
358
    public Function cot(Value num);
359
    
360
    public Function bitand(Value num1, Value num2);
361
    
362
    public Function bitor(Value num1, Value num2);
363
    
364
    public Function bitxor(Value num1, Value num2);
365
    
366
    public Function ceil(Value num);
367
    
368
    public Function degrees(Value num);
369
    
370
    public Function exp(Value num);
371
    
372
    public Function floor(Value num);
373
    
374
    public Function log(Value num);
375
    
376
    public Function log10(Value num);
377
    
378
    public Function pi(Value num);
379
    
380
    public Function power(Value num);
381
    
382
    public Function radians(Value num);
383
    
384
    public Function rand(Value num);
385
    
386
    public Function round(Value num);
387
    
388
    public Function sqrt(Value num);
389
    
390
    public Function sign(Value num);
391
    
392
    public Function sin(Value num);
393
    
394
    public Function sinh(Value num);
395
    
396
    public Function tan(Value num);
397
    
398
    public Function tanh(Value num);
399
    
400
    public Function zero();
401
    
402
    public Function chr(Value num);
403
}