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

History | View | Annotate | Download (14.6 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 OrderByBuilder column(String name);
196
        
197
        public boolean isColumn(String name);
198
        
199
        public boolean isColumn(Value value);
200

    
201
//        @Deprecated
202
//        public OrderByBuilder column(Value name);
203

    
204
        public OrderByBuilder value(Value expression);
205

    
206
        public OrderByBuilder ascending(boolean asc);
207

    
208
        public OrderByBuilder ascending();
209

    
210
        public OrderByBuilder descending();
211

    
212
        public OrderByBuilder custom(String order);
213
    }
214

    
215
    public interface SelectBuilder extends Statement {
216

    
217
        public SelectColumnBuilder column();
218
        
219
        public SelectBuilder remove_all_columns();
220

    
221
        public FromBuilder from();
222

    
223
        public GeometryExpressionBuilder where();
224

    
225
        public OrderByBuilder order_by();
226

    
227
        public OrderByBuilder getOrderBy(String column);
228
        
229
        public OrderByBuilder getOrderBy(Value column);
230

    
231
        public SelectBuilder group_by(Value... column);
232

    
233
        public SelectBuilder distinct();
234

    
235
        public SelectBuilder limit(long limit);
236

    
237
        public SelectBuilder limit(Long limit);
238

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

    
250
        public boolean has_column(String name);
251

    
252
        public boolean has_where();
253

    
254
        public boolean has_from();
255

    
256
        public boolean has_order_by();
257

    
258
        public boolean has_group_by();
259

    
260
        public boolean has_aggregate_functions();
261

    
262
        public boolean has_limit();
263

    
264
        public boolean has_offset();
265
        
266
        public void disable_check_order_and_offset();
267

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

    
285
    }
286

    
287
    public interface UpdateBuilder extends Statement {
288

    
289
        public TableNameBuilder table();
290

    
291
        public UpdateColumnBuilder column();
292

    
293
        public GeometryExpressionBuilder where();
294

    
295
        public boolean has_where();
296
    }
297

    
298
    public interface InsertBuilder extends Statement {
299

    
300
        public TableNameBuilder table();
301

    
302
        public InsertColumnBuilder column();
303
    }
304

    
305
    public interface DeleteBuilder extends Statement {
306

    
307
        public TableNameBuilder table();
308

    
309
        public GeometryExpressionBuilder where();
310

    
311
        public boolean has_where();
312
    }
313

    
314
    public interface AlterTableBuilder extends Statement {
315

    
316
        public TableNameBuilder table();
317

    
318
        public AlterTableBuilder drop_column(String columnName);
319
        
320
        public AlterTableBuilder drop_primary_key(String columnName);
321

    
322
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
323

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

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

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

    
330
        public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad);
331

    
332
        public AlterTableBuilder alter_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 alter_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
335

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

    
338
        public AlterTableBuilder rename_column(String source, String target);
339

    
340
        public boolean isEmpty();
341

    
342
        public List<String> toStrings();
343

    
344
        public List<String> toStrings(Formatter formatter);
345
    }
346

    
347
    public interface CreateTableBuilder extends Statement {
348

    
349
        public TableNameBuilder table();
350

    
351
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
352

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

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

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

    
359
        public ColumnDescriptor getColumnDescriptor(String columnName);
360

    
361
        public List<String> toStrings();
362

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

    
366
    public interface UpdateTableStatisticsBuilder extends Statement {
367

    
368
        public TableNameBuilder table();
369

    
370
        public List<String> toStrings();
371

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

    
375
    public interface GrantRoleBuilder extends StatementPart {
376

    
377
        public GrantRoleBuilder privilege(Privilege privilege);
378

    
379
        public GrantRoleBuilder select();
380

    
381
        public GrantRoleBuilder insert();
382

    
383
        public GrantRoleBuilder delete();
384

    
385
        public GrantRoleBuilder truncate();
386

    
387
        public GrantRoleBuilder reference();
388

    
389
        public GrantRoleBuilder update();
390

    
391
        public GrantRoleBuilder trigger();
392

    
393
        public GrantRoleBuilder all();
394
    }
395

    
396
    public interface GrantBuilder extends Statement {
397

    
398
        public TableNameBuilder table();
399

    
400
        public GrantRoleBuilder role(String name);
401

    
402
        public List<String> toStrings();
403

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

    
407
    public interface DropTableBuilder extends Statement {
408

    
409
        public TableNameBuilder table();
410

    
411
        public List<String> toStrings();
412

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

    
416
    public interface CreateIndexBuilder extends Statement {
417

    
418
        public CreateIndexBuilder if_not_exist();
419

    
420
        public CreateIndexBuilder unique();
421

    
422
        public CreateIndexBuilder name(String name);
423

    
424
        public CreateIndexBuilder name(String tableName, String columnName);
425

    
426
        public CreateIndexBuilder spatial();
427

    
428
        public CreateIndexBuilder column(String name);
429

    
430
        public TableNameBuilder table();
431

    
432
        public List<String> toStrings();
433

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

    
437
    public interface DropIndexBuilder extends Statement {
438

    
439
        public DropIndexBuilder if_not_exist();
440

    
441
        public DropIndexBuilder name(String name);
442
        
443
        public DropIndexBuilder name(String tableName, String columnName);
444

    
445
        public List<String> toStrings();
446

    
447
        public List<String> toStrings(Formatter formatter);
448
    }
449

    
450
    public String default_schema();
451

    
452
    public boolean support_schemas();
453

    
454
    public boolean has_spatial_functions();
455

    
456
    public GeometrySupportType geometry_support_type();
457

    
458
    public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype);
459

    
460
    public Object sqlgeometrytype(int type, int subtype);
461

    
462
    public Object sqlgeometrydimension(int type, int subtype);
463

    
464
    public Object srs_id(IProjection projection);
465

    
466
    public String toString(Formatter formatter);
467

    
468
    public List<Variable> variables();
469

    
470
    public List<String> variables_names();
471

    
472
    public List<Parameter> parameters();
473

    
474
    public List<String> parameters_names();
475

    
476
    public TableNameBuilder table_name();
477

    
478
    public TableNameBuilder createTableNameBuilder();
479

    
480
    public SelectBuilder select();
481

    
482
    public UpdateBuilder update();
483

    
484
    public InsertBuilder insert();
485

    
486
    public DeleteBuilder delete();
487

    
488
    public AlterTableBuilder alter_table();
489

    
490
    public CreateTableBuilder create_table();
491

    
492
    public CreateIndexBuilder create_index();
493
    
494
    public DropIndexBuilder drop_index();
495

    
496
    public GrantBuilder grant();
497

    
498
    public DropTableBuilder drop_table();
499

    
500
    public UpdateTableStatisticsBuilder update_table_statistics();
501

    
502
    public CountBuilder count();
503

    
504
    public GeometryExpressionBuilder expression();
505

    
506
    public String as_identifier(String id);
507

    
508
    public String as_string(String s);
509

    
510
    public String as_string(byte[] s);
511

    
512
    public String as_string(boolean value);
513

    
514
    public String as_string(Number value);
515

    
516
    public String as_string(Object value);
517
    
518
    public Column column(String name);
519

    
520
    public Column column(TableNameBuilder table, String name);
521
    
522
    public void setProperties(Class classToApply, Object... values);
523
        
524
    public Formatter formatter();
525
    
526
    public boolean isAggregateFunction(String funcname);
527

    
528
    public int getMaxRecomendedSQLLength();
529
}