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

History | View | Annotate | Download (14.8 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 static final int DEFAULT_RECOMENDED_SQL_LENGTH = 2048;
19

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

    
31
    public interface ColumnDescriptor {
32

    
33
        public String getName();
34

    
35
        public int getType();
36

    
37
        public int getSize();
38

    
39
        public int getPrecision();
40

    
41
        public int getScale();
42

    
43
        public boolean isPrimaryKey();
44

    
45
        public boolean isIndexed();
46

    
47
        public boolean isAutomatic();
48

    
49
        boolean allowNulls();
50

    
51
        public Object getDefaultValue();
52

    
53
        public int getGeometryType();
54

    
55
        public int getGeometrySubtype();
56

    
57
        public Object getGeometrySRSId();
58

    
59
        public boolean isGeometry();
60

    
61
        public DataStoreParameters getStoreParameters();
62

    
63
        public void setName(String name);
64

    
65
        public void setType(int type);
66

    
67
        public void setSize(int size);
68

    
69
        public void setPrecision(int precision);
70

    
71
        public void setScale(int scale);
72

    
73
        public void setIsPrimaryKey(boolean isPk);
74

    
75
        public void setIsAutomatic(boolean isAutomatic);
76

    
77
        public void setAllowNulls(boolean allowNulls);
78

    
79
        public void setDefaultValue(Object defaultValue);
80

    
81
        public void setGeometryType(int geom_type);
82

    
83
        public void setGeometrySubtype(int geom_subtype);
84

    
85
        public void setGeometrySRSId(Object geom_srsid);
86
    }
87

    
88
    public interface StatementPart extends Value {
89

    
90
    }
91

    
92
    public interface Statement extends StatementPart {
93

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

    
101
    public interface TableNameBuilder extends StatementPart {
102

    
103
        public TableNameBuilder database(String name);
104

    
105
        public TableNameBuilder schema(String name);
106

    
107
        public TableNameBuilder name(String name);
108

    
109
        public String getDatabase();
110

    
111
        public String getSchema();
112

    
113
        public String getName();
114

    
115
        public boolean has_database();
116

    
117
        public boolean has_schema();
118
    }
119

    
120
    public interface CountBuilder extends StatementPart {
121

    
122
        public CountBuilder all();
123

    
124
        public CountBuilder column(Value value);
125

    
126
        public CountBuilder distinct();
127
    }
128

    
129
    public interface SelectColumnBuilder extends StatementPart {
130

    
131
        public SelectColumnBuilder name(String name);
132

    
133
        public SelectColumnBuilder name(TableNameBuilder table, String name);
134

    
135
        public SelectColumnBuilder value(Value value);
136

    
137
        public SelectColumnBuilder as(String alias);
138

    
139
        public SelectColumnBuilder as_geometry();
140

    
141
        public SelectColumnBuilder all();
142

    
143
        public String getName();
144

    
145
        public String getAlias();
146

    
147
        public String getValue();
148
        
149
        public boolean isGeometry();
150
        
151
        public TableNameBuilder getTable();
152
        
153
        public boolean isAggregateFunction();
154
    }
155

    
156
    public interface InsertColumnBuilder extends StatementPart {
157

    
158
        public InsertColumnBuilder name(String name);
159

    
160
        public InsertColumnBuilder with_value(Value value);
161

    
162
        public String getName();
163

    
164
        public Value getValue();
165
    }
166

    
167
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
168

    
169
        @Override
170
        public UpdateColumnBuilder name(String name);
171

    
172
        @Override
173
        public UpdateColumnBuilder with_value(Value value);
174

    
175
        @Override
176
        public String getName();
177

    
178
        @Override
179
        public Value getValue();
180
    }
181

    
182
    public interface FromBuilder extends StatementPart {
183

    
184
        public TableNameBuilder table();
185

    
186
        public FromBuilder subquery(String subquery);
187

    
188
        public FromBuilder custom(String passthrough);
189
        
190
        public FromBuilder left_join(TableNameBuilder table, Value expression);
191
    }
192

    
193
    public interface OrderByBuilder extends StatementPart {
194
        
195
        public static int MODE_NULLS_FIRST = 0;
196
        public static int MODE_NULLS_LAST = 1;
197
        public static int MODE_NULLS_NOT_SPECIFIED = 2;
198
        
199
        public OrderByBuilder column(String name);
200
        
201
        public boolean isColumn(String name);
202
        
203
        public boolean isColumn(Value value);
204

    
205
//        @Deprecated
206
//        public OrderByBuilder column(Value name);
207

    
208
        public OrderByBuilder value(Value expression);
209

    
210
        public OrderByBuilder ascending(boolean asc);
211

    
212
        public OrderByBuilder ascending();
213

    
214
        public OrderByBuilder descending();
215
        
216
        public OrderByBuilder nulls(int mode);
217

    
218
        public OrderByBuilder custom(String order);
219
        
220
        public int getNullsMode();
221
    }
222

    
223
    public interface SelectBuilder extends Statement {
224

    
225
        public SelectColumnBuilder column();
226
        
227
        public SelectBuilder remove_all_columns();
228

    
229
        public FromBuilder from();
230

    
231
        public GeometryExpressionBuilder where();
232

    
233
        public OrderByBuilder order_by();
234

    
235
        public OrderByBuilder getOrderBy(String column);
236
        
237
        public OrderByBuilder getOrderBy(Value column);
238

    
239
        public SelectBuilder group_by(Value... column);
240

    
241
        public SelectBuilder distinct();
242

    
243
        public SelectBuilder limit(long limit);
244

    
245
        public SelectBuilder limit(Long limit);
246

    
247
        /**
248
         * Specifies an offset to be applied to the SQL statement. Only an
249
         * offset can be applied if an order has been specified. Otherwise an
250
         * IllegalStateException exception will be thrown when constructing the
251
         * SQL statement invoking the toString method.
252
         *
253
         * @param offset
254
         * @return this SelectBuilder
255
         */
256
        public SelectBuilder offset(long offset);
257

    
258
        public boolean has_column(String name);
259

    
260
        public boolean has_where();
261

    
262
        public boolean has_from();
263

    
264
        public boolean has_order_by();
265

    
266
        public boolean has_group_by();
267

    
268
        public boolean has_aggregate_functions();
269

    
270
        public boolean has_limit();
271

    
272
        public boolean has_offset();
273
        
274
        public void disable_check_order_and_offset();
275

    
276
        /**
277
         * Constructs the SQL statement. If the values associated with the SQL
278
         * statement are not valid an IllegalStateException exception is thrown.
279
         *
280
         * @return the SQL select statement.
281
         * @throws IllegalStateException if the values of select statement are
282
         * not valids.
283
         */
284
        @Override
285
        public String toString();
286
        
287
        public List<Value> getGroups();
288
        
289
        public List<SelectColumnBuilder> getColumns();
290
        
291
        public void remove_column(String columnName);
292

    
293
    }
294

    
295
    public interface UpdateBuilder extends Statement {
296

    
297
        public TableNameBuilder table();
298

    
299
        public UpdateColumnBuilder column();
300

    
301
        public GeometryExpressionBuilder where();
302

    
303
        public boolean has_where();
304
    }
305

    
306
    public interface InsertBuilder extends Statement {
307

    
308
        public TableNameBuilder table();
309

    
310
        public InsertColumnBuilder column();
311
    }
312

    
313
    public interface DeleteBuilder extends Statement {
314

    
315
        public TableNameBuilder table();
316

    
317
        public GeometryExpressionBuilder where();
318

    
319
        public boolean has_where();
320
    }
321

    
322
    public interface AlterTableBuilder extends Statement {
323

    
324
        public TableNameBuilder table();
325

    
326
        public AlterTableBuilder drop_column(String columnName);
327
        
328
        public AlterTableBuilder drop_primary_key(String columnName);
329

    
330
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
331

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

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

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

    
338
        public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad);
339

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

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

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

    
346
        public AlterTableBuilder rename_column(String source, String target);
347

    
348
        public boolean isEmpty();
349

    
350
        public List<String> toStrings();
351

    
352
        public List<String> toStrings(Formatter formatter);
353
    }
354

    
355
    public interface CreateTableBuilder extends Statement {
356

    
357
        public TableNameBuilder table();
358

    
359
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
360

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

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

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

    
367
        public ColumnDescriptor getColumnDescriptor(String columnName);
368

    
369
        public List<String> toStrings();
370

    
371
        public List<String> toStrings(Formatter formatter);
372
    }
373

    
374
    public interface UpdateTableStatisticsBuilder extends Statement {
375

    
376
        public TableNameBuilder table();
377

    
378
        public List<String> toStrings();
379

    
380
        public List<String> toStrings(Formatter formatter);
381
    }
382

    
383
    public interface GrantRoleBuilder extends StatementPart {
384

    
385
        public GrantRoleBuilder privilege(Privilege privilege);
386

    
387
        public GrantRoleBuilder select();
388

    
389
        public GrantRoleBuilder insert();
390

    
391
        public GrantRoleBuilder delete();
392

    
393
        public GrantRoleBuilder truncate();
394

    
395
        public GrantRoleBuilder reference();
396

    
397
        public GrantRoleBuilder update();
398

    
399
        public GrantRoleBuilder trigger();
400

    
401
        public GrantRoleBuilder all();
402
    }
403

    
404
    public interface GrantBuilder extends Statement {
405

    
406
        public TableNameBuilder table();
407

    
408
        public GrantRoleBuilder role(String name);
409

    
410
        public List<String> toStrings();
411

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

    
415
    public interface DropTableBuilder extends Statement {
416

    
417
        public TableNameBuilder table();
418

    
419
        public List<String> toStrings();
420

    
421
        public List<String> toStrings(Formatter formatter);
422
    }
423

    
424
    public interface CreateIndexBuilder extends Statement {
425

    
426
        public CreateIndexBuilder if_not_exist();
427

    
428
        public CreateIndexBuilder unique();
429

    
430
        public CreateIndexBuilder name(String name);
431

    
432
        public CreateIndexBuilder name(String tableName, String columnName);
433

    
434
        public CreateIndexBuilder spatial();
435

    
436
        public CreateIndexBuilder column(String name);
437

    
438
        public TableNameBuilder table();
439

    
440
        public List<String> toStrings();
441

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

    
445
    public interface DropIndexBuilder extends Statement {
446

    
447
        public DropIndexBuilder if_not_exist();
448

    
449
        public DropIndexBuilder name(String name);
450
        
451
        public DropIndexBuilder name(String tableName, String columnName);
452

    
453
        public List<String> toStrings();
454

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

    
458
    public String default_schema();
459

    
460
    public boolean support_schemas();
461

    
462
    public boolean has_spatial_functions();
463

    
464
    public GeometrySupportType geometry_support_type();
465

    
466
    public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype);
467

    
468
    public Object sqlgeometrytype(int type, int subtype);
469

    
470
    public Object sqlgeometrydimension(int type, int subtype);
471

    
472
    public Object srs_id(IProjection projection);
473

    
474
    public String toString(Formatter formatter);
475

    
476
    public List<Variable> variables();
477

    
478
    public List<String> variables_names();
479

    
480
    public List<Parameter> parameters();
481

    
482
    public List<String> parameters_names();
483

    
484
    public TableNameBuilder table_name();
485

    
486
    public TableNameBuilder createTableNameBuilder();
487

    
488
    public SelectBuilder select();
489

    
490
    public UpdateBuilder update();
491

    
492
    public InsertBuilder insert();
493

    
494
    public DeleteBuilder delete();
495

    
496
    public AlterTableBuilder alter_table();
497

    
498
    public CreateTableBuilder create_table();
499

    
500
    public CreateIndexBuilder create_index();
501
    
502
    public DropIndexBuilder drop_index();
503

    
504
    public GrantBuilder grant();
505

    
506
    public DropTableBuilder drop_table();
507

    
508
    public UpdateTableStatisticsBuilder update_table_statistics();
509

    
510
    public CountBuilder count();
511

    
512
    public GeometryExpressionBuilder expression();
513

    
514
    public String as_identifier(String id);
515

    
516
    public String as_string(String s);
517

    
518
    public String as_string(byte[] s);
519

    
520
    public String as_string(boolean value);
521

    
522
    public String as_string(Number value);
523

    
524
    public String as_string(Object value);
525
    
526
    public Column column(String name);
527

    
528
    public Column column(TableNameBuilder table, String name);
529
    
530
    public void setProperties(Class classToApply, Object... values);
531
        
532
    public Formatter formatter();
533
    
534
    public boolean isAggregateFunction(String funcname);
535

    
536
    public int getMaxRecomendedSQLLength();
537
}