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

History | View | Annotate | Download (14.3 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.Parameter;
6
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
7
import org.gvsig.expressionevaluator.ExpressionBuilder.Variable;
8
import org.gvsig.expressionevaluator.Formatter;
9
import org.gvsig.expressionevaluator.GeometryExpressionBuilder;
10
import org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.GeometrySupportType;
11
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
12
import org.gvsig.fmap.geom.Geometry;
13

    
14
public interface SQLBuilder {
15

    
16
    public static final String FEATURE_ATTRIBUTE_DESCRIPTOR = "FeatureAttributeDescriptor";
17

    
18
    public enum Privilege {
19
        SELECT,
20
        INSERT,
21
        UPDATE,
22
        DELETE,
23
        TRUNCATE,
24
        REFERENCE,
25
        TRIGGER,
26
        ALL
27
    };
28

    
29
    public interface ColumnDescriptor {
30

    
31
        public String getName();
32

    
33
        public int getType();
34

    
35
        public int getSize();
36

    
37
        public int getPrecision();
38

    
39
        public int getScale();
40

    
41
        public boolean isPrimaryKey();
42

    
43
        public boolean isIndexed();
44

    
45
        public boolean isAutomatic();
46

    
47
        boolean allowNulls();
48

    
49
        public Object getDefaultValue();
50

    
51
        public int getGeometryType();
52

    
53
        public int getGeometrySubtype();
54

    
55
        public Object getGeometrySRSId();
56

    
57
        public boolean isGeometry();
58

    
59
        public DataStoreParameters getStoreParameters();
60

    
61
        public void setName(String name);
62

    
63
        public void setType(int type);
64

    
65
        public void setSize(int size);
66

    
67
        public void setPrecision(int precision);
68

    
69
        public void setScale(int scale);
70

    
71
        public void setIsPrimaryKey(boolean isPk);
72

    
73
        public void setIsAutomatic(boolean isAutomatic);
74

    
75
        public void setAllowNulls(boolean allowNulls);
76

    
77
        public void setDefaultValue(Object defaultValue);
78

    
79
        public void setGeometryType(int geom_type);
80

    
81
        public void setGeometrySubtype(int geom_subtype);
82

    
83
        public void setGeometrySRSId(Object geom_srsid);
84
    }
85

    
86
    public interface StatementPart extends Value {
87

    
88
    }
89

    
90
    public interface Statement extends StatementPart {
91

    
92
    }
93
    
94
    public interface Column extends Variable {
95
        public TableNameBuilder table();
96
        public TableNameBuilder table(TableNameBuilder table);
97
    }
98

    
99
    public interface TableNameBuilder extends StatementPart {
100

    
101
        public TableNameBuilder database(String name);
102

    
103
        public TableNameBuilder schema(String name);
104

    
105
        public TableNameBuilder name(String name);
106

    
107
        public String getDatabase();
108

    
109
        public String getSchema();
110

    
111
        public String getName();
112

    
113
        public boolean has_database();
114

    
115
        public boolean has_schema();
116
    }
117

    
118
    public interface CountBuilder extends StatementPart {
119

    
120
        public CountBuilder all();
121

    
122
        public CountBuilder column(Value value);
123

    
124
        public CountBuilder distinct();
125
    }
126

    
127
    public interface SelectColumnBuilder extends StatementPart {
128

    
129
        public SelectColumnBuilder name(String name);
130

    
131
        public SelectColumnBuilder name(TableNameBuilder table, String name);
132

    
133
        public SelectColumnBuilder value(Value value);
134

    
135
        public SelectColumnBuilder as(String alias);
136

    
137
        public SelectColumnBuilder as_geometry();
138

    
139
        public SelectColumnBuilder all();
140

    
141
        public String getName();
142

    
143
        public String getAlias();
144

    
145
        public String getValue();
146
        
147
        public boolean isGeometry();
148
        
149
        public TableNameBuilder getTable();
150
    }
151

    
152
    public interface InsertColumnBuilder extends StatementPart {
153

    
154
        public InsertColumnBuilder name(String name);
155

    
156
        public InsertColumnBuilder with_value(Value value);
157

    
158
        public String getName();
159

    
160
        public Value getValue();
161
    }
162

    
163
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
164

    
165
        @Override
166
        public UpdateColumnBuilder name(String name);
167

    
168
        @Override
169
        public UpdateColumnBuilder with_value(Value value);
170

    
171
        @Override
172
        public String getName();
173

    
174
        @Override
175
        public Value getValue();
176
    }
177

    
178
    public interface FromBuilder extends StatementPart {
179

    
180
        public TableNameBuilder table();
181

    
182
        public FromBuilder subquery(String subquery);
183

    
184
        public FromBuilder custom(String passthrough);
185
        
186
        public FromBuilder left_join(TableNameBuilder table, Value expression);
187
    }
188

    
189
    public interface OrderByBuilder extends StatementPart {
190

    
191
        public OrderByBuilder column(String name);
192
        
193
        public boolean isColumn(String name);
194
        
195
        public boolean isColumn(Value value);
196

    
197
//        @Deprecated
198
//        public OrderByBuilder column(Value name);
199

    
200
        public OrderByBuilder value(Value expression);
201

    
202
        public OrderByBuilder ascending(boolean asc);
203

    
204
        public OrderByBuilder ascending();
205

    
206
        public OrderByBuilder descending();
207

    
208
        public OrderByBuilder custom(String order);
209
    }
210

    
211
    public interface SelectBuilder extends Statement {
212

    
213
        public SelectColumnBuilder column();
214
        
215
        public SelectBuilder remove_all_columns();
216

    
217
        public FromBuilder from();
218

    
219
        public GeometryExpressionBuilder where();
220

    
221
        public OrderByBuilder order_by();
222

    
223
        public OrderByBuilder getOrderBy(String column);
224
        
225
        public OrderByBuilder getOrderBy(Value column);
226

    
227
        public SelectBuilder group_by(Value... column);
228

    
229
        public SelectBuilder distinct();
230

    
231
        public SelectBuilder limit(long limit);
232

    
233
        public SelectBuilder limit(Long limit);
234

    
235
        /**
236
         * Specifies an offset to be applied to the SQL statement. Only an
237
         * offset can be applied if an order has been specified. Otherwise an
238
         * IllegalStateException exception will be thrown when constructing the
239
         * SQL statement invoking the toString method.
240
         *
241
         * @param offset
242
         * @return this SelectBuilder
243
         */
244
        public SelectBuilder offset(long offset);
245

    
246
        public boolean has_column(String name);
247

    
248
        public boolean has_where();
249

    
250
        public boolean has_from();
251

    
252
        public boolean has_order_by();
253

    
254
        public boolean has_group_by();
255

    
256
        public boolean has_limit();
257

    
258
        public boolean has_offset();
259
        
260
        public void disable_check_order_and_offset();
261

    
262
        /**
263
         * Constructs the SQL statement. If the values associated with the SQL
264
         * statement are not valid an IllegalStateException exception is thrown.
265
         *
266
         * @return the SQL select statement.
267
         * @throws IllegalStateException if the values of select statement are
268
         * not valids.
269
         */
270
        @Override
271
        public String toString();
272
        
273
        public List<Value> getGroups();
274
        
275
        public List<SelectColumnBuilder> getColumns();
276
        
277
        public void remove_column(String columnName);
278

    
279
    }
280

    
281
    public interface UpdateBuilder extends Statement {
282

    
283
        public TableNameBuilder table();
284

    
285
        public UpdateColumnBuilder column();
286

    
287
        public GeometryExpressionBuilder where();
288

    
289
        public boolean has_where();
290
    }
291

    
292
    public interface InsertBuilder extends Statement {
293

    
294
        public TableNameBuilder table();
295

    
296
        public InsertColumnBuilder column();
297
    }
298

    
299
    public interface DeleteBuilder extends Statement {
300

    
301
        public TableNameBuilder table();
302

    
303
        public GeometryExpressionBuilder where();
304

    
305
        public boolean has_where();
306
    }
307

    
308
    public interface AlterTableBuilder extends Statement {
309

    
310
        public TableNameBuilder table();
311

    
312
        public AlterTableBuilder drop_column(String columnName);
313
        
314
        public AlterTableBuilder drop_primary_key(String columnName);
315

    
316
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
317

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

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

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

    
324
        public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad);
325

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

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

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

    
332
        public AlterTableBuilder rename_column(String source, String target);
333

    
334
        public boolean isEmpty();
335

    
336
        public List<String> toStrings();
337

    
338
        public List<String> toStrings(Formatter formatter);
339
    }
340

    
341
    public interface CreateTableBuilder extends Statement {
342

    
343
        public TableNameBuilder table();
344

    
345
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
346

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

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

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

    
353
        public ColumnDescriptor getColumnDescriptor(String columnName);
354

    
355
        public List<String> toStrings();
356

    
357
        public List<String> toStrings(Formatter formatter);
358
    }
359

    
360
    public interface UpdateTableStatisticsBuilder extends Statement {
361

    
362
        public TableNameBuilder table();
363

    
364
        public List<String> toStrings();
365

    
366
        public List<String> toStrings(Formatter formatter);
367
    }
368

    
369
    public interface GrantRoleBuilder extends StatementPart {
370

    
371
        public GrantRoleBuilder privilege(Privilege privilege);
372

    
373
        public GrantRoleBuilder select();
374

    
375
        public GrantRoleBuilder insert();
376

    
377
        public GrantRoleBuilder delete();
378

    
379
        public GrantRoleBuilder truncate();
380

    
381
        public GrantRoleBuilder reference();
382

    
383
        public GrantRoleBuilder update();
384

    
385
        public GrantRoleBuilder trigger();
386

    
387
        public GrantRoleBuilder all();
388
    }
389

    
390
    public interface GrantBuilder extends Statement {
391

    
392
        public TableNameBuilder table();
393

    
394
        public GrantRoleBuilder role(String name);
395

    
396
        public List<String> toStrings();
397

    
398
        public List<String> toStrings(Formatter formatter);
399
    }
400

    
401
    public interface DropTableBuilder extends Statement {
402

    
403
        public TableNameBuilder table();
404

    
405
        public List<String> toStrings();
406

    
407
        public List<String> toStrings(Formatter formatter);
408
    }
409

    
410
    public interface CreateIndexBuilder extends Statement {
411

    
412
        public CreateIndexBuilder if_not_exist();
413

    
414
        public CreateIndexBuilder unique();
415

    
416
        public CreateIndexBuilder name(String name);
417

    
418
        public CreateIndexBuilder name(String tableName, String columnName);
419

    
420
        public CreateIndexBuilder spatial();
421

    
422
        public CreateIndexBuilder column(String name);
423

    
424
        public TableNameBuilder table();
425

    
426
        public List<String> toStrings();
427

    
428
        public List<String> toStrings(Formatter formatter);
429
    }
430

    
431
    public interface DropIndexBuilder extends Statement {
432

    
433
        public DropIndexBuilder if_not_exist();
434

    
435
        public DropIndexBuilder name(String name);
436
        
437
        public DropIndexBuilder name(String tableName, String columnName);
438

    
439
        public List<String> toStrings();
440

    
441
        public List<String> toStrings(Formatter formatter);
442
    }
443

    
444
    public String default_schema();
445

    
446
    public boolean support_schemas();
447

    
448
    public boolean has_spatial_functions();
449

    
450
    public GeometrySupportType geometry_support_type();
451

    
452
    public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype);
453

    
454
    public Object sqlgeometrytype(int type, int subtype);
455

    
456
    public Object sqlgeometrydimension(int type, int subtype);
457

    
458
    public Object srs_id(IProjection projection);
459

    
460
    public String toString(Formatter formatter);
461

    
462
    public List<Variable> variables();
463

    
464
    public List<String> variables_names();
465

    
466
    public List<Parameter> parameters();
467

    
468
    public List<String> parameters_names();
469

    
470
    public TableNameBuilder table_name();
471

    
472
    public TableNameBuilder createTableNameBuilder();
473

    
474
    public SelectBuilder select();
475

    
476
    public UpdateBuilder update();
477

    
478
    public InsertBuilder insert();
479

    
480
    public DeleteBuilder delete();
481

    
482
    public AlterTableBuilder alter_table();
483

    
484
    public CreateTableBuilder create_table();
485

    
486
    public CreateIndexBuilder create_index();
487
    
488
    public DropIndexBuilder drop_index();
489

    
490
    public GrantBuilder grant();
491

    
492
    public DropTableBuilder drop_table();
493

    
494
    public UpdateTableStatisticsBuilder update_table_statistics();
495

    
496
    public CountBuilder count();
497

    
498
    public GeometryExpressionBuilder expression();
499

    
500
    public String as_identifier(String id);
501

    
502
    public String as_string(String s);
503

    
504
    public String as_string(byte[] s);
505

    
506
    public String as_string(boolean value);
507

    
508
    public String as_string(Number value);
509

    
510
    public String as_string(Object value);
511
    
512
    public Column column(String name);
513

    
514
    public Column column(TableNameBuilder table, String name);
515
    
516
    public void setProperties(Class classToApply, Object... values);
517
        
518
        public Formatter formatter();
519
    
520
}