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

History | View | Annotate | Download (17.4 KB)

1
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

    
144
    public interface CountBuilder extends StatementPart {
145

    
146
        public CountBuilder all();
147

    
148
        public CountBuilder column(Value value);
149

    
150
        public CountBuilder distinct();
151
    }
152

    
153
    public interface SelectColumnBuilder extends StatementPart {
154

    
155
        public SelectColumnBuilder name(String name);
156

    
157
        public SelectColumnBuilder name(TableNameBuilder table, String name);
158

    
159
        public SelectColumnBuilder table(TableNameBuilder table);
160
        
161
        public SelectColumnBuilder value(Value value);
162

    
163
        public SelectColumnBuilder as(String alias);
164

    
165
        public SelectColumnBuilder as_geometry();
166

    
167
        public SelectColumnBuilder all();
168

    
169
        public String getName();
170

    
171
        public String getAlias();
172

    
173
        public Value getValue();
174
        
175
        public boolean isGeometry();
176
        
177
        public TableNameBuilder getTable();
178
        
179
        public boolean isAggregateFunction();
180
    }
181

    
182
    public interface InsertColumnBuilder extends StatementPart {
183

    
184
        public InsertColumnBuilder name(String name);
185

    
186
        public InsertColumnBuilder with_value(Value value);
187

    
188
        public String getName();
189

    
190
        public Value getValue();
191
    }
192

    
193
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
194

    
195
        @Override
196
        public UpdateColumnBuilder name(String name);
197

    
198
        @Override
199
        public UpdateColumnBuilder with_value(Value value);
200

    
201
        @Override
202
        public String getName();
203

    
204
        @Override
205
        public Value getValue();
206
    }
207

    
208
    public interface FromBuilder extends StatementPart {
209

    
210
        public TableNameBuilder table();
211

    
212
        public FromBuilder subquery(String subquery);
213

    
214
        public FromBuilder custom(String passthrough);
215
        
216
        public FromBuilder left_join(TableNameBuilder table, Value expression);
217
        
218
        public List<JoinBuilder> getJoins();
219
    }
220
    
221
    public interface JoinBuilder extends StatementPart {
222

    
223
        ExpressionBuilder.Value getCondition();
224

    
225
        SQLBuilder.TableNameBuilder getTable();
226

    
227
        String getType();
228

    
229
    }
230

    
231

    
232
    public interface OrderByBuilder extends StatementPart {
233
        
234
        public static int MODE_NULLS_FIRST = 0;
235
        public static int MODE_NULLS_LAST = 1;
236
        public static int MODE_NULLS_NOT_SPECIFIED = 2;
237
        
238
        public OrderByBuilder column(String name);
239
        
240
        public boolean isColumn(String name);
241
        
242
        public boolean isColumn(Value value);
243

    
244
//        @Deprecated
245
//        public OrderByBuilder column(Value name);
246

    
247
        public OrderByBuilder value(Value expression);
248

    
249
        public OrderByBuilder ascending(boolean asc);
250

    
251
        public OrderByBuilder ascending();
252

    
253
        public OrderByBuilder descending();
254
        
255
        public OrderByBuilder nulls(int mode);
256

    
257
        public OrderByBuilder custom(String order);
258
        
259
        public int getNullsMode();
260
    }
261

    
262
    public interface SelectBuilder extends Statement {
263

    
264
        public SelectColumnBuilder column();
265

    
266
        public SelectColumnBuilder column(String name);
267
        
268
        public SelectColumnBuilder column(SelectColumnBuilder column);
269
        
270
        public SelectBuilder remove_all_columns();
271

    
272
        public FromBuilder from();
273

    
274
        public GeometryExpressionBuilder where();
275

    
276
        public OrderByBuilder order_by();
277

    
278
        public OrderByBuilder getOrderBy(String column);
279
        
280
        public OrderByBuilder getOrderBy(Value column);
281

    
282
        public SelectBuilder group_by(Value... column);
283

    
284
        public SelectBuilder distinct();
285

    
286
        public SelectBuilder limit(long limit);
287

    
288
        public SelectBuilder limit(Long limit);
289

    
290
        /**
291
         * Specifies an offset to be applied to the SQL statement. Only an
292
         * offset can be applied if an order has been specified. Otherwise an
293
         * IllegalStateException exception will be thrown when constructing the
294
         * SQL statement invoking the toString method.
295
         *
296
         * @param offset
297
         * @return this SelectBuilder
298
         */
299
        public SelectBuilder offset(long offset);
300

    
301
        public boolean has_column(String name);
302

    
303
        public boolean has_where();
304

    
305
        public boolean has_from();
306

    
307
        public boolean has_order_by();
308

    
309
        public boolean has_group_by();
310

    
311
        public boolean has_aggregate_functions();
312

    
313
        public boolean has_limit();
314

    
315
        public boolean has_offset();
316
        
317
        public void disable_check_order_and_offset();
318

    
319
        /**
320
         * Constructs the SQL statement. If the values associated with the SQL
321
         * statement are not valid an IllegalStateException exception is thrown.
322
         *
323
         * @return the SQL select statement.
324
         * @throws IllegalStateException if the values of select statement are
325
         * not valids.
326
         */
327
        @Override
328
        public String toString();
329
        
330
        public List<Value> getGroups();
331
        
332
        public List<SelectColumnBuilder> getColumns();
333
        
334
        public SelectColumnBuilder getColumn(String name);
335
        
336
        public void remove_column(String columnName);
337

    
338
        public boolean isGroupBy(String name);
339

    
340
    }
341

    
342
    public interface UpdateBuilder extends Statement {
343

    
344
        public TableNameBuilder table();
345

    
346
        public UpdateColumnBuilder column();
347

    
348
        public GeometryExpressionBuilder where();
349

    
350
        public boolean has_where();
351
    }
352

    
353
    public interface InsertBuilder extends Statement {
354

    
355
        public TableNameBuilder table();
356

    
357
        public InsertColumnBuilder column();
358
    }
359

    
360
    public interface MergeBuilder extends InsertBuilder {
361
        
362
        public MergeBuilder key(String id);
363
    }
364
    
365
    public interface DeleteBuilder extends Statement {
366

    
367
        public TableNameBuilder table();
368

    
369
        public GeometryExpressionBuilder where();
370

    
371
        public boolean has_where();
372
    }
373

    
374
    public interface AlterTableBuilder extends Statement {
375
        public static final int ALTER_COLUMN_ALL = 1;
376
        public static final int ALTER_COLUMN_GEOMETRY = 2;
377
        public static final int ALTER_COLUMN_SET_DEFAULT = 3;
378
        public static final int ALTER_COLUMN_SET_NULL = 4;
379
        public static final int ALTER_COLUMN_SET_DATA_TYPE = 5;
380
        public static final int ALTER_COLUMN_ADD_PRIMARY_KEY = 6;
381
        public static final int ALTER_COLUMN_DROP_PRIMARY_KEY = 7;
382
        public static final int ALTER_COLUMN_CREATE_INDEX = 8;
383
        public static final int ALTER_COLUMN_DROP_INDEX = 9;
384
        public static final int ALTER_COLUMN_DROP_COLUMN = 10;
385
        public static final int ALTER_COLUMN_ADD_COLUMN = 11;
386

    
387
        public TableNameBuilder table();
388

    
389
        public AlterTableBuilder drop_column(String columnName);
390
        
391
        public AlterTableBuilder drop_primary_key(String columnName);
392

    
393
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
394

    
395
        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);
396

    
397
        public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
398

    
399
        public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
400

    
401
        public AlterTableBuilder alter_column(Bitmask operation, FeatureAttributeDescriptor fad);
402

    
403
        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);
404

    
405
        public AlterTableBuilder alter_geometry_column(Bitmask operation,String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
406

    
407
        public AlterTableBuilder alter_geometry_column(Bitmask operation, String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
408

    
409
        public AlterTableBuilder rename_column(String source, String target);
410

    
411
        public boolean isEmpty();
412

    
413
        public List<String> toStrings();
414

    
415
        public List<String> toStrings(Formatter formatter);
416
    }
417

    
418
    public interface CreateTableBuilder extends Statement {
419

    
420
        public TableNameBuilder table();
421

    
422
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
423

    
424
        public CreateTableBuilder add_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
425

    
426
        public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
427

    
428
        public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
429

    
430
        public ColumnDescriptor getColumnDescriptor(String columnName);
431

    
432
        public List<String> toStrings();
433

    
434
        public List<String> toStrings(Formatter formatter);
435
    }
436

    
437
    public interface UpdateTableStatisticsBuilder extends Statement {
438

    
439
        public TableNameBuilder table();
440

    
441
        public List<String> toStrings();
442

    
443
        public List<String> toStrings(Formatter formatter);
444
    }
445

    
446
    public interface GrantRoleBuilder extends StatementPart {
447

    
448
        public GrantRoleBuilder privilege(Privilege privilege);
449

    
450
        public GrantRoleBuilder select();
451

    
452
        public GrantRoleBuilder insert();
453

    
454
        public GrantRoleBuilder delete();
455

    
456
        public GrantRoleBuilder truncate();
457

    
458
        public GrantRoleBuilder reference();
459

    
460
        public GrantRoleBuilder update();
461

    
462
        public GrantRoleBuilder trigger();
463

    
464
        public GrantRoleBuilder all();
465
    }
466

    
467
    public interface GrantBuilder extends Statement {
468

    
469
        public TableNameBuilder table();
470

    
471
        public GrantRoleBuilder role(String name);
472

    
473
        public List<String> toStrings();
474

    
475
        public List<String> toStrings(Formatter formatter);
476
    }
477

    
478
    public interface DropTableBuilder extends Statement {
479

    
480
        public TableNameBuilder table();
481

    
482
        public List<String> toStrings();
483

    
484
        public List<String> toStrings(Formatter formatter);
485
    }
486

    
487
    public interface CreateIndexBuilder extends Statement {
488

    
489
        public CreateIndexBuilder if_not_exist();
490

    
491
        public CreateIndexBuilder unique();
492

    
493
        public CreateIndexBuilder name(String name);
494

    
495
        public CreateIndexBuilder name(String tableName, String columnName);
496

    
497
        public CreateIndexBuilder spatial();
498

    
499
        public CreateIndexBuilder column(String name);
500

    
501
        public TableNameBuilder table();
502

    
503
        public List<String> toStrings();
504

    
505
        public List<String> toStrings(Formatter formatter);
506

    
507
        public void setFeatureType(FeatureType type);
508
    }
509

    
510
    public interface DropIndexBuilder extends Statement {
511

    
512
        public DropIndexBuilder if_exist();
513

    
514
        public DropIndexBuilder name(String name);
515
        
516
        public DropIndexBuilder name(String tableName, String columnName);
517

    
518
        public List<String> toStrings();
519

    
520
        public List<String> toStrings(Formatter formatter);
521
    }
522

    
523
    public String default_schema();
524

    
525
    public boolean support_schemas();
526

    
527
    public boolean has_spatial_functions();
528

    
529
    public GeometrySupportType geometry_support_type();
530

    
531
    public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype);
532

    
533
    public Object sqlgeometrytype(int type, int subtype);
534

    
535
    public Object sqlgeometrydimension(int type, int subtype);
536

    
537
    public Object srs_id(IProjection projection);
538

    
539
    public String toString(Formatter formatter);
540

    
541
    public List<Variable> variables();
542

    
543
    public List<String> variables_names();
544

    
545
    public List<Parameter> parameters();
546

    
547
    public List<String> parameters_names();
548

    
549
    public TableNameBuilder table_name();
550

    
551
    public TableNameBuilder createTableNameBuilder();
552

    
553
    public SelectColumnBuilder column();
554
    
555
    public SelectBuilder select();
556

    
557
    public UpdateBuilder update();
558

    
559
    public InsertBuilder insert();
560

    
561
    public MergeBuilder merge();
562

    
563
    public DeleteBuilder delete();
564

    
565
    public AlterTableBuilder alter_table();
566

    
567
    public CreateTableBuilder create_table();
568

    
569
    public CreateIndexBuilder create_index();
570
    
571
    public DropIndexBuilder drop_index();
572

    
573
    public GrantBuilder grant();
574

    
575
    public DropTableBuilder drop_table();
576

    
577
    public UpdateTableStatisticsBuilder update_table_statistics();
578

    
579
    public CountBuilder count();
580

    
581
    public GeometryExpressionBuilder expression();
582

    
583
    public String as_identifier(String id);
584

    
585
    public String as_clob(String s);
586
    
587
    public String as_string(String s);
588

    
589
    public String as_string(byte[] s);
590

    
591
    public String as_string(boolean value);
592

    
593
    public String as_string(Number value);
594

    
595
    public String as_string(Object value);
596
    
597
    public Column column(String name);
598

    
599
    public Column column(TableNameBuilder table, String name);
600
    
601
    public Column column_from(Variable variable);
602

    
603
    public Column column_from(TableNameBuilder table, Variable variable);    
604
    
605
    public void setProperties(Class classToApply, Object... values);
606
    
607
    public void setProperties(ExpressionBuilder.Visitable visitable, Class filter, final Object... values);
608
        
609
    public Formatter formatter();
610
    
611
    public boolean isAggregateFunction(String funcname);
612

    
613
    public int getMaxRecomendedSQLLength();
614
    
615
    public SelectBuilder createSelectBuilder();
616

    
617
    public String getConstrainName(TableNameBuilder table, String columnName, String constrainType);
618
}