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

History | View | Annotate | Download (16 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.geom.primitive.Envelope;
15
import org.gvsig.tools.util.IsEmpty;
16

    
17
public interface SQLBuilder extends Visitable {
18

    
19
    public static final String FEATURE_ATTRIBUTE_DESCRIPTOR = "FeatureAttributeDescriptor";
20
    
21
    public static final int DEFAULT_RECOMENDED_SQL_LENGTH = 2048;
22

    
23
    public enum Privilege {
24
        SELECT,
25
        INSERT,
26
        UPDATE,
27
        DELETE,
28
        TRUNCATE,
29
        REFERENCE,
30
        TRIGGER,
31
        ALL
32
    };
33

    
34
    public interface ColumnDescriptor {
35

    
36
        public String getName();
37

    
38
        public int getType();
39

    
40
        public int getSize();
41

    
42
        public int getPrecision();
43

    
44
        public int getScale();
45

    
46
        public boolean isPrimaryKey();
47

    
48
        public boolean isIndexed();
49

    
50
        public boolean isAutomatic();
51

    
52
        boolean allowNulls();
53

    
54
        public Object getDefaultValue();
55

    
56
        public int getGeometryType();
57

    
58
        public int getGeometrySubtype();
59

    
60
        public Object getGeometrySRSId();
61

    
62
        public boolean isGeometry();
63

    
64
        public DataStoreParameters getStoreParameters();
65

    
66
        public void setName(String name);
67

    
68
        public void setType(int type);
69

    
70
        public void setSize(int size);
71

    
72
        public void setPrecision(int precision);
73

    
74
        public void setScale(int scale);
75

    
76
        public void setIsPrimaryKey(boolean isPk);
77

    
78
        public void setIsAutomatic(boolean isAutomatic);
79

    
80
        public void setAllowNulls(boolean allowNulls);
81

    
82
        public void setDefaultValue(Object defaultValue);
83

    
84
        public void setGeometryType(int geom_type);
85

    
86
        public void setGeometrySubtype(int geom_subtype);
87

    
88
        public void setGeometrySRSId(Object geom_srsid);
89

    
90
        public Envelope getTableBBox();
91
        
92
        public void setTableBBox(Envelope bbox);
93
    }
94

    
95
    public interface StatementPart extends Value {
96

    
97
    }
98

    
99
    public interface Statement extends StatementPart {
100

    
101
    }
102
    
103
    public interface Column extends Variable {
104
        public TableNameBuilder table();
105
        public TableNameBuilder table(TableNameBuilder table);
106
    }
107

    
108
    public interface TableNameBuilder extends StatementPart, IsEmpty {
109

    
110
        public TableNameBuilder database(String name);
111

    
112
        public TableNameBuilder schema(String name);
113

    
114
        public TableNameBuilder name(String name);
115

    
116
        public String getDatabase();
117

    
118
        public String getSchema();
119

    
120
        public String getName();
121

    
122
        public boolean has_database();
123

    
124
        public boolean has_schema();
125

    
126
        public boolean has_name();
127
    }
128

    
129
    public interface CountBuilder extends StatementPart {
130

    
131
        public CountBuilder all();
132

    
133
        public CountBuilder column(Value value);
134

    
135
        public CountBuilder distinct();
136
    }
137

    
138
    public interface SelectColumnBuilder extends StatementPart {
139

    
140
        public SelectColumnBuilder name(String name);
141

    
142
        public SelectColumnBuilder name(TableNameBuilder table, String name);
143

    
144
        public SelectColumnBuilder table(TableNameBuilder table);
145
        
146
        public SelectColumnBuilder value(Value value);
147

    
148
        public SelectColumnBuilder as(String alias);
149

    
150
        public SelectColumnBuilder as_geometry();
151

    
152
        public SelectColumnBuilder all();
153

    
154
        public String getName();
155

    
156
        public String getAlias();
157

    
158
        public Value getValue();
159
        
160
        public boolean isGeometry();
161
        
162
        public TableNameBuilder getTable();
163
        
164
        public boolean isAggregateFunction();
165
    }
166

    
167
    public interface InsertColumnBuilder extends StatementPart {
168

    
169
        public InsertColumnBuilder name(String name);
170

    
171
        public InsertColumnBuilder with_value(Value value);
172

    
173
        public String getName();
174

    
175
        public Value getValue();
176
    }
177

    
178
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
179

    
180
        @Override
181
        public UpdateColumnBuilder name(String name);
182

    
183
        @Override
184
        public UpdateColumnBuilder with_value(Value value);
185

    
186
        @Override
187
        public String getName();
188

    
189
        @Override
190
        public Value getValue();
191
    }
192

    
193
    public interface FromBuilder extends StatementPart {
194

    
195
        public TableNameBuilder table();
196

    
197
        public FromBuilder subquery(String subquery);
198

    
199
        public FromBuilder custom(String passthrough);
200
        
201
        public FromBuilder left_join(TableNameBuilder table, Value expression);
202
        
203
        public List<JoinBuilder> getJoins();
204
    }
205
    
206
    public interface JoinBuilder extends StatementPart {
207

    
208
        ExpressionBuilder.Value getCondition();
209

    
210
        SQLBuilder.TableNameBuilder getTable();
211

    
212
        String getType();
213

    
214
    }
215

    
216

    
217
    public interface OrderByBuilder extends StatementPart {
218
        
219
        public static int MODE_NULLS_FIRST = 0;
220
        public static int MODE_NULLS_LAST = 1;
221
        public static int MODE_NULLS_NOT_SPECIFIED = 2;
222
        
223
        public OrderByBuilder column(String name);
224
        
225
        public boolean isColumn(String name);
226
        
227
        public boolean isColumn(Value value);
228

    
229
//        @Deprecated
230
//        public OrderByBuilder column(Value name);
231

    
232
        public OrderByBuilder value(Value expression);
233

    
234
        public OrderByBuilder ascending(boolean asc);
235

    
236
        public OrderByBuilder ascending();
237

    
238
        public OrderByBuilder descending();
239
        
240
        public OrderByBuilder nulls(int mode);
241

    
242
        public OrderByBuilder custom(String order);
243
        
244
        public int getNullsMode();
245
    }
246

    
247
    public interface SelectBuilder extends Statement {
248

    
249
        public SelectColumnBuilder column();
250

    
251
        public SelectColumnBuilder column(String name);
252
        
253
        public SelectColumnBuilder column(SelectColumnBuilder column);
254
        
255
        public SelectBuilder remove_all_columns();
256

    
257
        public FromBuilder from();
258

    
259
        public GeometryExpressionBuilder where();
260

    
261
        public OrderByBuilder order_by();
262

    
263
        public OrderByBuilder getOrderBy(String column);
264
        
265
        public OrderByBuilder getOrderBy(Value column);
266

    
267
        public SelectBuilder group_by(Value... column);
268

    
269
        public SelectBuilder distinct();
270

    
271
        public SelectBuilder limit(long limit);
272

    
273
        public SelectBuilder limit(Long limit);
274

    
275
        /**
276
         * Specifies an offset to be applied to the SQL statement. Only an
277
         * offset can be applied if an order has been specified. Otherwise an
278
         * IllegalStateException exception will be thrown when constructing the
279
         * SQL statement invoking the toString method.
280
         *
281
         * @param offset
282
         * @return this SelectBuilder
283
         */
284
        public SelectBuilder offset(long offset);
285

    
286
        public boolean has_column(String name);
287

    
288
        public boolean has_where();
289

    
290
        public boolean has_from();
291

    
292
        public boolean has_order_by();
293

    
294
        public boolean has_group_by();
295

    
296
        public boolean has_aggregate_functions();
297

    
298
        public boolean has_limit();
299

    
300
        public boolean has_offset();
301
        
302
        public void disable_check_order_and_offset();
303

    
304
        /**
305
         * Constructs the SQL statement. If the values associated with the SQL
306
         * statement are not valid an IllegalStateException exception is thrown.
307
         *
308
         * @return the SQL select statement.
309
         * @throws IllegalStateException if the values of select statement are
310
         * not valids.
311
         */
312
        @Override
313
        public String toString();
314
        
315
        public List<Value> getGroups();
316
        
317
        public List<SelectColumnBuilder> getColumns();
318
        
319
        public SelectColumnBuilder getColumn(String name);
320
        
321
        public void remove_column(String columnName);
322

    
323
        public boolean isGroupBy(String name);
324

    
325
    }
326

    
327
    public interface UpdateBuilder extends Statement {
328

    
329
        public TableNameBuilder table();
330

    
331
        public UpdateColumnBuilder column();
332

    
333
        public GeometryExpressionBuilder where();
334

    
335
        public boolean has_where();
336
    }
337

    
338
    public interface InsertBuilder extends Statement {
339

    
340
        public TableNameBuilder table();
341

    
342
        public InsertColumnBuilder column();
343
    }
344

    
345
    public interface DeleteBuilder extends Statement {
346

    
347
        public TableNameBuilder table();
348

    
349
        public GeometryExpressionBuilder where();
350

    
351
        public boolean has_where();
352
    }
353

    
354
    public interface AlterTableBuilder extends Statement {
355

    
356
        public TableNameBuilder table();
357

    
358
        public AlterTableBuilder drop_column(String columnName);
359
        
360
        public AlterTableBuilder drop_primary_key(String columnName);
361

    
362
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
363

    
364
        public AlterTableBuilder add_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
365

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

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

    
370
        public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad);
371

    
372
        public AlterTableBuilder alter_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
373

    
374
        public AlterTableBuilder alter_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
375

    
376
        public AlterTableBuilder alter_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
377

    
378
        public AlterTableBuilder rename_column(String source, String target);
379

    
380
        public boolean isEmpty();
381

    
382
        public List<String> toStrings();
383

    
384
        public List<String> toStrings(Formatter formatter);
385
    }
386

    
387
    public interface CreateTableBuilder extends Statement {
388

    
389
        public TableNameBuilder table();
390

    
391
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
392

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

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

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

    
399
        public ColumnDescriptor getColumnDescriptor(String columnName);
400

    
401
        public List<String> toStrings();
402

    
403
        public List<String> toStrings(Formatter formatter);
404
    }
405

    
406
    public interface UpdateTableStatisticsBuilder extends Statement {
407

    
408
        public TableNameBuilder table();
409

    
410
        public List<String> toStrings();
411

    
412
        public List<String> toStrings(Formatter formatter);
413
    }
414

    
415
    public interface GrantRoleBuilder extends StatementPart {
416

    
417
        public GrantRoleBuilder privilege(Privilege privilege);
418

    
419
        public GrantRoleBuilder select();
420

    
421
        public GrantRoleBuilder insert();
422

    
423
        public GrantRoleBuilder delete();
424

    
425
        public GrantRoleBuilder truncate();
426

    
427
        public GrantRoleBuilder reference();
428

    
429
        public GrantRoleBuilder update();
430

    
431
        public GrantRoleBuilder trigger();
432

    
433
        public GrantRoleBuilder all();
434
    }
435

    
436
    public interface GrantBuilder extends Statement {
437

    
438
        public TableNameBuilder table();
439

    
440
        public GrantRoleBuilder role(String name);
441

    
442
        public List<String> toStrings();
443

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

    
447
    public interface DropTableBuilder extends Statement {
448

    
449
        public TableNameBuilder table();
450

    
451
        public List<String> toStrings();
452

    
453
        public List<String> toStrings(Formatter formatter);
454
    }
455

    
456
    public interface CreateIndexBuilder extends Statement {
457

    
458
        public CreateIndexBuilder if_not_exist();
459

    
460
        public CreateIndexBuilder unique();
461

    
462
        public CreateIndexBuilder name(String name);
463

    
464
        public CreateIndexBuilder name(String tableName, String columnName);
465

    
466
        public CreateIndexBuilder spatial();
467

    
468
        public CreateIndexBuilder column(String name);
469

    
470
        public TableNameBuilder table();
471

    
472
        public List<String> toStrings();
473

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

    
477
    public interface DropIndexBuilder extends Statement {
478

    
479
        public DropIndexBuilder if_not_exist();
480

    
481
        public DropIndexBuilder name(String name);
482
        
483
        public DropIndexBuilder name(String tableName, String columnName);
484

    
485
        public List<String> toStrings();
486

    
487
        public List<String> toStrings(Formatter formatter);
488
    }
489

    
490
    public String default_schema();
491

    
492
    public boolean support_schemas();
493

    
494
    public boolean has_spatial_functions();
495

    
496
    public GeometrySupportType geometry_support_type();
497

    
498
    public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype);
499

    
500
    public Object sqlgeometrytype(int type, int subtype);
501

    
502
    public Object sqlgeometrydimension(int type, int subtype);
503

    
504
    public Object srs_id(IProjection projection);
505

    
506
    public String toString(Formatter formatter);
507

    
508
    public List<Variable> variables();
509

    
510
    public List<String> variables_names();
511

    
512
    public List<Parameter> parameters();
513

    
514
    public List<String> parameters_names();
515

    
516
    public TableNameBuilder table_name();
517

    
518
    public TableNameBuilder createTableNameBuilder();
519

    
520
    public SelectColumnBuilder column();
521
    
522
    public SelectBuilder select();
523

    
524
    public UpdateBuilder update();
525

    
526
    public InsertBuilder insert();
527

    
528
    public DeleteBuilder delete();
529

    
530
    public AlterTableBuilder alter_table();
531

    
532
    public CreateTableBuilder create_table();
533

    
534
    public CreateIndexBuilder create_index();
535
    
536
    public DropIndexBuilder drop_index();
537

    
538
    public GrantBuilder grant();
539

    
540
    public DropTableBuilder drop_table();
541

    
542
    public UpdateTableStatisticsBuilder update_table_statistics();
543

    
544
    public CountBuilder count();
545

    
546
    public GeometryExpressionBuilder expression();
547

    
548
    public String as_identifier(String id);
549

    
550
    public String as_string(String s);
551

    
552
    public String as_string(byte[] s);
553

    
554
    public String as_string(boolean value);
555

    
556
    public String as_string(Number value);
557

    
558
    public String as_string(Object value);
559
    
560
    public Column column(String name);
561

    
562
    public Column column(TableNameBuilder table, String name);
563
    
564
    public void setProperties(Class classToApply, Object... values);
565
    
566
    public void setProperties(ExpressionBuilder.Visitable visitable, Class filter, final Object... values);
567
        
568
    public Formatter formatter();
569
    
570
    public boolean isAggregateFunction(String funcname);
571

    
572
    public int getMaxRecomendedSQLLength();
573
    
574
    public SelectBuilder createSelectBuilder();
575

    
576
}