Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.api / src / main / java / org / gvsig / fmap / dal / SQLBuilder.java @ 47785

History | View | Annotate | Download (18.1 KB)

1 47785 jjdelcerro
package org.gvsig.fmap.dal;
2
3
import java.util.List;
4
import org.cresques.cts.IProjection;
5
import org.gvsig.expressionevaluator.ExpressionBuilder;
6
import org.gvsig.expressionevaluator.ExpressionBuilder.Parameter;
7
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
8
import org.gvsig.expressionevaluator.ExpressionBuilder.Variable;
9
import org.gvsig.expressionevaluator.ExpressionBuilder.Visitable;
10
import org.gvsig.expressionevaluator.Formatter;
11
import org.gvsig.expressionevaluator.GeometryExpressionBuilder;
12
import org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.GeometrySupportType;
13
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
14
import org.gvsig.fmap.dal.feature.FeatureType;
15
import org.gvsig.fmap.geom.primitive.Envelope;
16
import org.gvsig.tools.util.Bitmask;
17
import org.gvsig.tools.util.IsEmpty;
18
19
public interface SQLBuilder extends Visitable {
20
21
    public static final String PROP_FEATURE_TYPE = "FeatureType";
22
    public static final String PROP_TABLE = "Table";
23
    public static final String PROP_TABLENAME = "TableName";
24
    public static final String PROP_SYMBOLTABLE = "SymbolTable";
25
    public static final String PROP_JDBCHELPER = "JDBCHelper";
26
    public static final String PROP_QUERY = "Query";
27
    public static final String PROP_SQLBUILDER = "SQLBUILDER";
28
    public static final String PROP_ADD_TABLE_NAME_TO_COLUMNS = "ADD_TABLE_NAME";
29
30
    public static final String FEATURE_ATTRIBUTE_DESCRIPTOR = "FeatureAttributeDescriptor";
31
32
    public static final int DEFAULT_RECOMENDED_SQL_LENGTH = 2048;
33
34
    public enum Privilege {
35
        SELECT,
36
        INSERT,
37
        UPDATE,
38
        DELETE,
39
        TRUNCATE,
40
        REFERENCE,
41
        TRIGGER,
42
        ALL
43
    };
44
45
    public interface ColumnDescriptor {
46
47
        public String getName();
48
49
        public int getType();
50
51
        public int getSize();
52
53
        public int getPrecision();
54
55
        public int getScale();
56
57
        public boolean isPrimaryKey();
58
59
        public boolean isIndexed();
60
61
        public boolean isAutomatic();
62
63
        boolean allowNulls();
64
65
        boolean allowIndexDuplicateds();
66
67
        public Object getDefaultValue();
68
69
        public int getGeometryType();
70
71
        public int getGeometrySubtype();
72
73
        public Object getGeometrySRSId();
74
75
        public boolean isGeometry();
76
77
        public DataStoreParameters getStoreParameters();
78
79
        public void setName(String name);
80
81
        public void setType(int type);
82
83
        public void setSize(int size);
84
85
        public void setPrecision(int precision);
86
87
        public void setScale(int scale);
88
89
        public void setIsPrimaryKey(boolean isPk);
90
91
        public void setIsAutomatic(boolean isAutomatic);
92
93
        public void setAllowNulls(boolean allowNulls);
94
95
        public void setAllowIndexDuplicateds(boolean allowIndexDuplicateds);
96
97
        public void setDefaultValue(Object defaultValue);
98
99
        public void setGeometryType(int geom_type);
100
101
        public void setGeometrySubtype(int geom_subtype);
102
103
        public void setGeometrySRSId(Object geom_srsid);
104
105
        public Envelope getTableBBox();
106
107
        public void setTableBBox(Envelope bbox);
108
    }
109
110
    public interface StatementPart extends Value {
111
112
    }
113
114
    public interface Statement extends StatementPart {
115
116
    }
117
118
    public interface Column extends Variable {
119
        public TableNameBuilder table();
120
        public TableNameBuilder table(TableNameBuilder table);
121
    }
122
123
    public interface TableNameBuilder extends StatementPart, IsEmpty {
124
125
        public TableNameBuilder database(String name);
126
127
        public TableNameBuilder schema(String name);
128
129
        public TableNameBuilder name(String name);
130
131
        public String getDatabase();
132
133
        public String getSchema();
134
135
        public String getName();
136
137
        public boolean has_database();
138
139
        public boolean has_schema();
140
141
        public boolean has_name();
142
143
        public void setFeatureType(FeatureType featureType);
144
145
        public FeatureType featureType();
146
    }
147
148
    public interface CountBuilder extends StatementPart {
149
150
        public CountBuilder all();
151
152
        public CountBuilder column(Value value);
153
154
        public CountBuilder distinct();
155
    }
156
157
    public interface SelectColumnBuilder extends StatementPart {
158
159
        public SelectColumnBuilder name(String name);
160
161
        public SelectColumnBuilder name(TableNameBuilder table, String name);
162
163
        public SelectColumnBuilder table(TableNameBuilder table);
164
165
        public SelectColumnBuilder value(Value value);
166
167
        public SelectColumnBuilder as(String alias);
168
169
        public SelectColumnBuilder as_geometry();
170
171
        public SelectColumnBuilder all();
172
173
        public String getName();
174
175
        public String getAlias();
176
177
        public Value getValue();
178
179
        public boolean isGeometry();
180
181
        public TableNameBuilder getTable();
182
183
        public boolean isAggregateFunction();
184
    }
185
186
    public interface InsertColumnBuilder extends StatementPart {
187
188
        public InsertColumnBuilder name(String name);
189
190
        public InsertColumnBuilder with_value(Value value);
191
192
        public String getName();
193
194
        public Value getValue();
195
    }
196
197
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
198
199
        @Override
200
        public UpdateColumnBuilder name(String name);
201
202
        @Override
203
        public UpdateColumnBuilder with_value(Value value);
204
205
        @Override
206
        public String getName();
207
208
        @Override
209
        public Value getValue();
210
    }
211
212
    public interface FromBuilder extends StatementPart {
213
214
        public TableNameBuilder table();
215
216
        public FromBuilder subquery(String subquery);
217
218
        public FromBuilder custom(String passthrough);
219
220
        public FromBuilder left_join(TableNameBuilder table, Value expression);
221
222
        public List<JoinBuilder> getJoins();
223
    }
224
225
    public interface JoinBuilder extends StatementPart {
226
227
        ExpressionBuilder.Value getCondition();
228
229
        SQLBuilder.TableNameBuilder getTable();
230
231
        String getType();
232
233
    }
234
235
236
    public interface OrderByBuilder extends StatementPart {
237
238
        public static int MODE_NULLS_FIRST = 0;
239
        public static int MODE_NULLS_LAST = 1;
240
        public static int MODE_NULLS_NOT_SPECIFIED = 2;
241
242
        public OrderByBuilder column(String name);
243
244
        public boolean isColumn(String name);
245
246
        public boolean isColumn(Value value);
247
248
//        @Deprecated
249
//        public OrderByBuilder column(Value name);
250
251
        public OrderByBuilder value(Value expression);
252
253
        public OrderByBuilder ascending(boolean asc);
254
255
        public OrderByBuilder ascending();
256
257
        public OrderByBuilder descending();
258
259
        public OrderByBuilder nulls(int mode);
260
261
        public OrderByBuilder custom(String order);
262
263
        public int getNullsMode();
264
    }
265
266
    public interface SelectBuilder extends Statement {
267
268
        public SelectColumnBuilder column();
269
270
        public SelectColumnBuilder column(String name);
271
272
        public SelectColumnBuilder column(SelectColumnBuilder column);
273
274
        public SelectBuilder remove_all_columns();
275
276
        public FromBuilder from();
277
278
        public GeometryExpressionBuilder where();
279
280
        public OrderByBuilder order_by();
281
282
        public OrderByBuilder getOrderBy(String column);
283
284
        public OrderByBuilder getOrderBy(Value column);
285
286
        public SelectBuilder group_by(Value... column);
287
288
        public SelectBuilder distinct();
289
290
        public SelectBuilder limit(long limit);
291
292
        public SelectBuilder limit(Long limit);
293
294
        /**
295
         * Specifies an offset to be applied to the SQL statement. Only an
296
         * offset can be applied if an order has been specified. Otherwise an
297
         * IllegalStateException exception will be thrown when constructing the
298
         * SQL statement invoking the toString method.
299
         *
300
         * @param offset
301
         * @return this SelectBuilder
302
         */
303
        public SelectBuilder offset(long offset);
304
305
        public boolean has_column(String name);
306
307
        public boolean has_where();
308
309
        public boolean has_from();
310
311
        public boolean has_order_by();
312
313
        public boolean has_group_by();
314
315
        public boolean has_aggregate_functions();
316
317
        public boolean has_limit();
318
319
        public boolean has_offset();
320
321
        public void disable_check_order_and_offset();
322
323
        /**
324
         * Constructs the SQL statement. If the values associated with the SQL
325
         * statement are not valid an IllegalStateException exception is thrown.
326
         *
327
         * @return the SQL select statement.
328
         * @throws IllegalStateException if the values of select statement are
329
         * not valids.
330
         */
331
        @Override
332
        public String toString();
333
334
        public List<Value> getGroups();
335
336
        public List<SelectColumnBuilder> getColumns();
337
338
        public SelectColumnBuilder getColumn(String name);
339
340
        public void remove_column(String columnName);
341
342
        public boolean isGroupBy(String name);
343
344
    }
345
346
    public interface UpdateBuilder extends Statement {
347
348
        public TableNameBuilder table();
349
350
        public UpdateColumnBuilder column();
351
352
        public GeometryExpressionBuilder where();
353
354
        public boolean has_where();
355
    }
356
357
    public interface InsertBuilder extends Statement {
358
359
        public TableNameBuilder table();
360
361
        public InsertColumnBuilder column();
362
    }
363
364
    public interface MergeBuilder extends InsertBuilder {
365
366
        public MergeBuilder key(String id);
367
    }
368
369
    public interface DeleteBuilder extends Statement {
370
371
        public TableNameBuilder table();
372
373
        public GeometryExpressionBuilder where();
374
375
        public boolean has_where();
376
    }
377
378
    public interface AlterTableBuilder extends Statement {
379
        public static final int ALTER_COLUMN_ALL = 1;
380
        public static final int ALTER_COLUMN_GEOMETRY = 2;
381
        public static final int ALTER_COLUMN_SET_DEFAULT = 3;
382
        public static final int ALTER_COLUMN_SET_NULL = 4;
383
        public static final int ALTER_COLUMN_SET_DATA_TYPE = 5;
384
        public static final int ALTER_COLUMN_ADD_PRIMARY_KEY = 6;
385
        public static final int ALTER_COLUMN_DROP_PRIMARY_KEY = 7;
386
        public static final int ALTER_COLUMN_CREATE_INDEX = 8;
387
        public static final int ALTER_COLUMN_DROP_INDEX = 9;
388
        public static final int ALTER_COLUMN_DROP_COLUMN = 10;
389
        public static final int ALTER_COLUMN_ADD_COLUMN = 11;
390
391
        public TableNameBuilder table();
392
393
        public AlterTableBuilder drop_column(String columnName);
394
395
        public AlterTableBuilder drop_primary_key(String columnName);
396
397
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
398
399
        public AlterTableBuilder add_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue, boolean allowIndexDuplicateds);
400
401
        public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
402
403
        public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
404
405
        public AlterTableBuilder alter_column(Bitmask operation, FeatureAttributeDescriptor fad);
406
407
        public AlterTableBuilder alter_column(Bitmask operation, String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue, boolean allowIndexDuplicateds);
408
409
        public AlterTableBuilder alter_geometry_column(Bitmask operation,String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
410
411
        public AlterTableBuilder alter_geometry_column(Bitmask operation, String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
412
413
        public AlterTableBuilder rename_column(String source, String target);
414
415
        public boolean isEmpty();
416
417
        public List<String> toStrings();
418
419
        public List<String> toStrings(Formatter formatter);
420
    }
421
422
    public interface CreateTableBuilder extends Statement {
423
424
        public TableNameBuilder table();
425
426
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
427
428
        public CreateTableBuilder add_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
429
430
        public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
431
432
        public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
433
434
        public ColumnDescriptor getColumnDescriptor(String columnName);
435
436
        public List<String> toStrings();
437
438
        public List<String> toStrings(Formatter formatter);
439
    }
440
441
    public interface UpdateTableStatisticsBuilder extends Statement {
442
443
        public TableNameBuilder table();
444
445
        public List<String> toStrings();
446
447
        public List<String> toStrings(Formatter formatter);
448
    }
449
450
    public interface GrantRoleBuilder extends StatementPart {
451
452
        public GrantRoleBuilder privilege(Privilege privilege);
453
454
        public GrantRoleBuilder select();
455
456
        public GrantRoleBuilder insert();
457
458
        public GrantRoleBuilder delete();
459
460
        public GrantRoleBuilder truncate();
461
462
        public GrantRoleBuilder reference();
463
464
        public GrantRoleBuilder update();
465
466
        public GrantRoleBuilder trigger();
467
468
        public GrantRoleBuilder all();
469
    }
470
471
    public interface GrantBuilder extends Statement {
472
473
        public TableNameBuilder table();
474
475
        public GrantRoleBuilder role(String name);
476
477
        public List<String> toStrings();
478
479
        public List<String> toStrings(Formatter formatter);
480
    }
481
482
    public interface DropTableBuilder extends Statement {
483
484
        public TableNameBuilder table();
485
486
        public List<String> toStrings();
487
488
        public List<String> toStrings(Formatter formatter);
489
    }
490
491
    public interface CreateIndexBuilder extends Statement {
492
493
        public CreateIndexBuilder if_not_exist();
494
495
        public CreateIndexBuilder unique();
496
497
        public CreateIndexBuilder name(String name);
498
499
        public CreateIndexBuilder name(String tableName, String columnName);
500
501
        public CreateIndexBuilder spatial();
502
503
        public CreateIndexBuilder column(String name);
504
505
        public TableNameBuilder table();
506
507
        public List<String> toStrings();
508
509
        public List<String> toStrings(Formatter formatter);
510
511
        public void setFeatureType(FeatureType type);
512
    }
513
514
    public interface DropIndexBuilder extends Statement {
515
516
        public DropIndexBuilder if_exist();
517
518
        public DropIndexBuilder name(String name);
519
520
        public DropIndexBuilder name(String tableName, String columnName);
521
522
        public List<String> toStrings();
523
524
        public List<String> toStrings(Formatter formatter);
525
    }
526
527
    public String default_schema();
528
529
    public boolean support_schemas();
530
531
    public boolean has_spatial_functions();
532
533
    public GeometrySupportType geometry_support_type();
534
535
    public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype);
536
537
    public Object sqlgeometrytype(int type, int subtype);
538
539
    public Object sqlgeometrydimension(int type, int subtype);
540
541
    public Object srs_id(IProjection projection);
542
543
    public String toString(Formatter formatter);
544
545
    public List<Variable> variables();
546
547
    public List<String> variables_names();
548
549
    public List<Parameter> parameters();
550
551
    public List<String> parameters_names();
552
553
    public TableNameBuilder table_name();
554
555
    public TableNameBuilder createTableNameBuilder();
556
557
    public SelectColumnBuilder column();
558
559
    public SelectBuilder select();
560
561
    public UpdateBuilder update();
562
563
    public InsertBuilder insert();
564
565
    public MergeBuilder merge();
566
567
    public DeleteBuilder delete();
568
569
    public AlterTableBuilder alter_table();
570
571
    public CreateTableBuilder create_table();
572
573
    public CreateIndexBuilder create_index();
574
575
    public DropIndexBuilder drop_index();
576
577
    public GrantBuilder grant();
578
579
    public DropTableBuilder drop_table();
580
581
    public UpdateTableStatisticsBuilder update_table_statistics();
582
583
    public CountBuilder count();
584
585
    public GeometryExpressionBuilder expression();
586
587
    public String as_identifier(String id);
588
589
    public String as_clob(String s);
590
591
    public String as_string(String s);
592
593
    public String as_string(byte[] s);
594
595
    public String as_string(boolean value);
596
597
    public String as_string(Number value);
598
599
    public String as_string(Object value);
600
601
    public Column column(String name);
602
603
    public Column column(TableNameBuilder table, String name);
604
605
    public Column column_from(Variable variable);
606
607
    public Column column_from(TableNameBuilder table, Variable variable);
608
609
    public void setProperties(Class classToApply, Object... values);
610
611
    public void setProperties(ExpressionBuilder.Visitable visitable, Class filter, final Object... values);
612
613
    public Formatter formatter();
614
615
    public boolean isAggregateFunction(String funcname);
616
617
    public int getMaxRecomendedSQLLength();
618
619
    public SelectBuilder createSelectBuilder();
620
621
    public String getConstrainName(TableNameBuilder table, String columnName, String constrainType);
622
}