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

History | View | Annotate | Download (15.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.geom.primitive.Envelope;
15

    
16
public interface SQLBuilder extends Visitable {
17

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

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

    
33
    public interface ColumnDescriptor {
34

    
35
        public String getName();
36

    
37
        public int getType();
38

    
39
        public int getSize();
40

    
41
        public int getPrecision();
42

    
43
        public int getScale();
44

    
45
        public boolean isPrimaryKey();
46

    
47
        public boolean isIndexed();
48

    
49
        public boolean isAutomatic();
50

    
51
        boolean allowNulls();
52

    
53
        public Object getDefaultValue();
54

    
55
        public int getGeometryType();
56

    
57
        public int getGeometrySubtype();
58

    
59
        public Object getGeometrySRSId();
60

    
61
        public boolean isGeometry();
62

    
63
        public DataStoreParameters getStoreParameters();
64

    
65
        public void setName(String name);
66

    
67
        public void setType(int type);
68

    
69
        public void setSize(int size);
70

    
71
        public void setPrecision(int precision);
72

    
73
        public void setScale(int scale);
74

    
75
        public void setIsPrimaryKey(boolean isPk);
76

    
77
        public void setIsAutomatic(boolean isAutomatic);
78

    
79
        public void setAllowNulls(boolean allowNulls);
80

    
81
        public void setDefaultValue(Object defaultValue);
82

    
83
        public void setGeometryType(int geom_type);
84

    
85
        public void setGeometrySubtype(int geom_subtype);
86

    
87
        public void setGeometrySRSId(Object geom_srsid);
88

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

    
94
    public interface StatementPart extends Value {
95

    
96
    }
97

    
98
    public interface Statement extends StatementPart {
99

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

    
107
    public interface TableNameBuilder extends StatementPart {
108

    
109
        public TableNameBuilder database(String name);
110

    
111
        public TableNameBuilder schema(String name);
112

    
113
        public TableNameBuilder name(String name);
114

    
115
        public String getDatabase();
116

    
117
        public String getSchema();
118

    
119
        public String getName();
120

    
121
        public boolean has_database();
122

    
123
        public boolean has_schema();
124

    
125
        public boolean has_name();
126
    }
127

    
128
    public interface CountBuilder extends StatementPart {
129

    
130
        public CountBuilder all();
131

    
132
        public CountBuilder column(Value value);
133

    
134
        public CountBuilder distinct();
135
    }
136

    
137
    public interface SelectColumnBuilder extends StatementPart {
138

    
139
        public SelectColumnBuilder name(String name);
140

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

    
143
        public SelectColumnBuilder value(Value value);
144

    
145
        public SelectColumnBuilder as(String alias);
146

    
147
        public SelectColumnBuilder as_geometry();
148

    
149
        public SelectColumnBuilder all();
150

    
151
        public String getName();
152

    
153
        public String getAlias();
154

    
155
        public Value getValue();
156
        
157
        public boolean isGeometry();
158
        
159
        public TableNameBuilder getTable();
160
        
161
        public boolean isAggregateFunction();
162
    }
163

    
164
    public interface InsertColumnBuilder extends StatementPart {
165

    
166
        public InsertColumnBuilder name(String name);
167

    
168
        public InsertColumnBuilder with_value(Value value);
169

    
170
        public String getName();
171

    
172
        public Value getValue();
173
    }
174

    
175
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
176

    
177
        @Override
178
        public UpdateColumnBuilder name(String name);
179

    
180
        @Override
181
        public UpdateColumnBuilder with_value(Value value);
182

    
183
        @Override
184
        public String getName();
185

    
186
        @Override
187
        public Value getValue();
188
    }
189

    
190
    public interface FromBuilder extends StatementPart {
191

    
192
        public TableNameBuilder table();
193

    
194
        public FromBuilder subquery(String subquery);
195

    
196
        public FromBuilder custom(String passthrough);
197
        
198
        public FromBuilder left_join(TableNameBuilder table, Value expression);
199
    }
200

    
201
    public interface OrderByBuilder extends StatementPart {
202
        
203
        public static int MODE_NULLS_FIRST = 0;
204
        public static int MODE_NULLS_LAST = 1;
205
        public static int MODE_NULLS_NOT_SPECIFIED = 2;
206
        
207
        public OrderByBuilder column(String name);
208
        
209
        public boolean isColumn(String name);
210
        
211
        public boolean isColumn(Value value);
212

    
213
//        @Deprecated
214
//        public OrderByBuilder column(Value name);
215

    
216
        public OrderByBuilder value(Value expression);
217

    
218
        public OrderByBuilder ascending(boolean asc);
219

    
220
        public OrderByBuilder ascending();
221

    
222
        public OrderByBuilder descending();
223
        
224
        public OrderByBuilder nulls(int mode);
225

    
226
        public OrderByBuilder custom(String order);
227
        
228
        public int getNullsMode();
229
    }
230

    
231
    public interface SelectBuilder extends Statement {
232

    
233
        public SelectColumnBuilder column();
234

    
235
        public SelectColumnBuilder column(String name);
236
        
237
        public SelectBuilder remove_all_columns();
238

    
239
        public FromBuilder from();
240

    
241
        public GeometryExpressionBuilder where();
242

    
243
        public OrderByBuilder order_by();
244

    
245
        public OrderByBuilder getOrderBy(String column);
246
        
247
        public OrderByBuilder getOrderBy(Value column);
248

    
249
        public SelectBuilder group_by(Value... column);
250

    
251
        public SelectBuilder distinct();
252

    
253
        public SelectBuilder limit(long limit);
254

    
255
        public SelectBuilder limit(Long limit);
256

    
257
        /**
258
         * Specifies an offset to be applied to the SQL statement. Only an
259
         * offset can be applied if an order has been specified. Otherwise an
260
         * IllegalStateException exception will be thrown when constructing the
261
         * SQL statement invoking the toString method.
262
         *
263
         * @param offset
264
         * @return this SelectBuilder
265
         */
266
        public SelectBuilder offset(long offset);
267

    
268
        public boolean has_column(String name);
269

    
270
        public boolean has_where();
271

    
272
        public boolean has_from();
273

    
274
        public boolean has_order_by();
275

    
276
        public boolean has_group_by();
277

    
278
        public boolean has_aggregate_functions();
279

    
280
        public boolean has_limit();
281

    
282
        public boolean has_offset();
283
        
284
        public void disable_check_order_and_offset();
285

    
286
        /**
287
         * Constructs the SQL statement. If the values associated with the SQL
288
         * statement are not valid an IllegalStateException exception is thrown.
289
         *
290
         * @return the SQL select statement.
291
         * @throws IllegalStateException if the values of select statement are
292
         * not valids.
293
         */
294
        @Override
295
        public String toString();
296
        
297
        public List<Value> getGroups();
298
        
299
        public List<SelectColumnBuilder> getColumns();
300
        
301
        public void remove_column(String columnName);
302

    
303
        public boolean isGroupBy(String name);
304

    
305
    }
306

    
307
    public interface UpdateBuilder extends Statement {
308

    
309
        public TableNameBuilder table();
310

    
311
        public UpdateColumnBuilder column();
312

    
313
        public GeometryExpressionBuilder where();
314

    
315
        public boolean has_where();
316
    }
317

    
318
    public interface InsertBuilder extends Statement {
319

    
320
        public TableNameBuilder table();
321

    
322
        public InsertColumnBuilder column();
323
    }
324

    
325
    public interface DeleteBuilder extends Statement {
326

    
327
        public TableNameBuilder table();
328

    
329
        public GeometryExpressionBuilder where();
330

    
331
        public boolean has_where();
332
    }
333

    
334
    public interface AlterTableBuilder extends Statement {
335

    
336
        public TableNameBuilder table();
337

    
338
        public AlterTableBuilder drop_column(String columnName);
339
        
340
        public AlterTableBuilder drop_primary_key(String columnName);
341

    
342
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
343

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

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

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

    
350
        public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad);
351

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

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

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

    
358
        public AlterTableBuilder rename_column(String source, String target);
359

    
360
        public boolean isEmpty();
361

    
362
        public List<String> toStrings();
363

    
364
        public List<String> toStrings(Formatter formatter);
365
    }
366

    
367
    public interface CreateTableBuilder extends Statement {
368

    
369
        public TableNameBuilder table();
370

    
371
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
372

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

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

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

    
379
        public ColumnDescriptor getColumnDescriptor(String columnName);
380

    
381
        public List<String> toStrings();
382

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

    
386
    public interface UpdateTableStatisticsBuilder extends Statement {
387

    
388
        public TableNameBuilder table();
389

    
390
        public List<String> toStrings();
391

    
392
        public List<String> toStrings(Formatter formatter);
393
    }
394

    
395
    public interface GrantRoleBuilder extends StatementPart {
396

    
397
        public GrantRoleBuilder privilege(Privilege privilege);
398

    
399
        public GrantRoleBuilder select();
400

    
401
        public GrantRoleBuilder insert();
402

    
403
        public GrantRoleBuilder delete();
404

    
405
        public GrantRoleBuilder truncate();
406

    
407
        public GrantRoleBuilder reference();
408

    
409
        public GrantRoleBuilder update();
410

    
411
        public GrantRoleBuilder trigger();
412

    
413
        public GrantRoleBuilder all();
414
    }
415

    
416
    public interface GrantBuilder extends Statement {
417

    
418
        public TableNameBuilder table();
419

    
420
        public GrantRoleBuilder role(String name);
421

    
422
        public List<String> toStrings();
423

    
424
        public List<String> toStrings(Formatter formatter);
425
    }
426

    
427
    public interface DropTableBuilder extends Statement {
428

    
429
        public TableNameBuilder table();
430

    
431
        public List<String> toStrings();
432

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

    
436
    public interface CreateIndexBuilder extends Statement {
437

    
438
        public CreateIndexBuilder if_not_exist();
439

    
440
        public CreateIndexBuilder unique();
441

    
442
        public CreateIndexBuilder name(String name);
443

    
444
        public CreateIndexBuilder name(String tableName, String columnName);
445

    
446
        public CreateIndexBuilder spatial();
447

    
448
        public CreateIndexBuilder column(String name);
449

    
450
        public TableNameBuilder table();
451

    
452
        public List<String> toStrings();
453

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

    
457
    public interface DropIndexBuilder extends Statement {
458

    
459
        public DropIndexBuilder if_not_exist();
460

    
461
        public DropIndexBuilder name(String name);
462
        
463
        public DropIndexBuilder name(String tableName, String columnName);
464

    
465
        public List<String> toStrings();
466

    
467
        public List<String> toStrings(Formatter formatter);
468
    }
469

    
470
    public String default_schema();
471

    
472
    public boolean support_schemas();
473

    
474
    public boolean has_spatial_functions();
475

    
476
    public GeometrySupportType geometry_support_type();
477

    
478
    public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype);
479

    
480
    public Object sqlgeometrytype(int type, int subtype);
481

    
482
    public Object sqlgeometrydimension(int type, int subtype);
483

    
484
    public Object srs_id(IProjection projection);
485

    
486
    public String toString(Formatter formatter);
487

    
488
    public List<Variable> variables();
489

    
490
    public List<String> variables_names();
491

    
492
    public List<Parameter> parameters();
493

    
494
    public List<String> parameters_names();
495

    
496
    public TableNameBuilder table_name();
497

    
498
    public TableNameBuilder createTableNameBuilder();
499

    
500
    public SelectBuilder select();
501

    
502
    public UpdateBuilder update();
503

    
504
    public InsertBuilder insert();
505

    
506
    public DeleteBuilder delete();
507

    
508
    public AlterTableBuilder alter_table();
509

    
510
    public CreateTableBuilder create_table();
511

    
512
    public CreateIndexBuilder create_index();
513
    
514
    public DropIndexBuilder drop_index();
515

    
516
    public GrantBuilder grant();
517

    
518
    public DropTableBuilder drop_table();
519

    
520
    public UpdateTableStatisticsBuilder update_table_statistics();
521

    
522
    public CountBuilder count();
523

    
524
    public GeometryExpressionBuilder expression();
525

    
526
    public String as_identifier(String id);
527

    
528
    public String as_string(String s);
529

    
530
    public String as_string(byte[] s);
531

    
532
    public String as_string(boolean value);
533

    
534
    public String as_string(Number value);
535

    
536
    public String as_string(Object value);
537
    
538
    public Column column(String name);
539

    
540
    public Column column(TableNameBuilder table, String name);
541
    
542
    public void setProperties(Class classToApply, Object... values);
543
    
544
    public void setProperties(ExpressionBuilder.Visitable visitable, Class filter, final Object... values);
545
        
546
    public Formatter formatter();
547
    
548
    public boolean isAggregateFunction(String funcname);
549

    
550
    public int getMaxRecomendedSQLLength();
551
    
552
    public SelectBuilder createSelectBuilder();
553

    
554
}