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

History | View | Annotate | Download (12.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

    
13
public interface SQLBuilder {
14

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

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

    
28
    public interface ColumnDescriptor {
29

    
30
        public String getName();
31

    
32
        public int getType();
33

    
34
        public int getSize();
35

    
36
        public int getPrecision();
37

    
38
        public boolean isPrimaryKey();
39

    
40
        public boolean isIndexed();
41

    
42
        public boolean isAutomatic();
43

    
44
        boolean allowNulls();
45

    
46
        public Object getDefaultValue();
47

    
48
        public int getGeometryType();
49

    
50
        public int getGeometrySubtype();
51

    
52
        public Object getGeometrySRSId();
53

    
54
        public boolean isGeometry();
55

    
56
        public DataStoreParameters getStoreParameters();
57

    
58
        public void setName(String name);
59

    
60
        public void setType(int type);
61

    
62
        public void setSize(int size);
63

    
64
        public void setPrecision(int precision);
65

    
66
        public void setIsPrimaryKey(boolean isPk);
67

    
68
        public void setIsAutomatic(boolean isAutomatic);
69

    
70
        public void setAllowNulls(boolean allowNulls);
71

    
72
        public void setDefaultValue(Object defaultValue);
73

    
74
        public void setGeometryType(int geom_type);
75

    
76
        public void setGeometrySubtype(int geom_subtype);
77

    
78
        public void setGeometrySRSId(Object geom_srsid);
79
    }
80

    
81
    public interface StatementPart extends Value {
82

    
83
    }
84

    
85
    public interface Statement extends StatementPart {
86

    
87
    }
88
    
89
    public interface Column extends Variable {
90
        public TableNameBuilder table();
91
        public TableNameBuilder table(TableNameBuilder table);
92
    }
93

    
94
    public interface TableNameBuilder extends StatementPart {
95

    
96
        public TableNameBuilder database(String name);
97

    
98
        public TableNameBuilder schema(String name);
99

    
100
        public TableNameBuilder name(String name);
101

    
102
        public String getDatabase();
103

    
104
        public String getSchema();
105

    
106
        public String getName();
107

    
108
        public boolean has_database();
109

    
110
        public boolean has_schema();
111
    }
112

    
113
    public interface CountBuilder extends StatementPart {
114

    
115
        public CountBuilder all();
116

    
117
        public CountBuilder column(Value value);
118

    
119
        public CountBuilder distinct();
120
    }
121

    
122
    public interface SelectColumnBuilder extends StatementPart {
123

    
124
        public SelectColumnBuilder name(String name);
125

    
126
        public SelectColumnBuilder name(TableNameBuilder table, String name);
127

    
128
        public SelectColumnBuilder value(Value value);
129

    
130
        public SelectColumnBuilder as(String alias);
131

    
132
        public SelectColumnBuilder as_geometry();
133

    
134
        public SelectColumnBuilder all();
135

    
136
        public String getName();
137

    
138
        public String getAlias();
139

    
140
        public String getValue();
141
    }
142

    
143
    public interface InsertColumnBuilder extends StatementPart {
144

    
145
        public InsertColumnBuilder name(String name);
146

    
147
        public InsertColumnBuilder with_value(Value value);
148

    
149
        public String getName();
150

    
151
        public Value getValue();
152
    }
153

    
154
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
155

    
156
        @Override
157
        public UpdateColumnBuilder name(String name);
158

    
159
        @Override
160
        public UpdateColumnBuilder with_value(Value value);
161

    
162
        @Override
163
        public String getName();
164

    
165
        @Override
166
        public Value getValue();
167
    }
168

    
169
    public interface FromBuilder extends StatementPart {
170

    
171
        public TableNameBuilder table();
172

    
173
        public FromBuilder subquery(String subquery);
174

    
175
        public FromBuilder custom(String passthrough);
176
        
177
        public FromBuilder left_join(TableNameBuilder table, Value expression);
178
    }
179

    
180
    public interface OrderByBuilder extends StatementPart {
181

    
182
        public OrderByBuilder column(String name);
183

    
184
        public OrderByBuilder ascending(boolean asc);
185

    
186
        public OrderByBuilder ascending();
187

    
188
        public OrderByBuilder descending();
189

    
190
        public OrderByBuilder custom(String order);
191
    }
192

    
193
    public interface SelectBuilder extends Statement {
194

    
195
        public SelectColumnBuilder column();
196
        
197
        public SelectBuilder remove_all_columns();
198

    
199
        public FromBuilder from();
200

    
201
        public GeometryExpressionBuilder where();
202

    
203
        public OrderByBuilder order_by();
204

    
205
        public SelectBuilder group_by(Variable... column);
206

    
207
        public SelectBuilder distinct();
208

    
209
        public SelectBuilder limit(long limit);
210

    
211
        public SelectBuilder limit(Long limit);
212

    
213
        /**
214
         * Specifies an offset to be applied to the SQL statement. Only an
215
         * offset can be applied if an order has been specified. Otherwise an
216
         * IllegalStateException exception will be thrown when constructing the
217
         * SQL statement invoking the toString method.
218
         *
219
         * @param offset
220
         * @return this SelectBuilder
221
         */
222
        public SelectBuilder offset(long offset);
223

    
224
        public boolean has_column(String name);
225

    
226
        public boolean has_where();
227

    
228
        public boolean has_from();
229

    
230
        public boolean has_order_by();
231

    
232
        public boolean has_group_by();
233

    
234
        public boolean has_limit();
235

    
236
        public boolean has_offset();
237

    
238
        /**
239
         * Constructs the SQL statement. If the values associated with the SQL
240
         * statement are not valid an IllegalStateException exception is thrown.
241
         *
242
         * @return the SQL select statement.
243
         * @throws IllegalStateException if the values of select statement are
244
         * not valids.
245
         */
246
        @Override
247
        public String toString();
248

    
249
    }
250

    
251
    public interface UpdateBuilder extends Statement {
252

    
253
        public TableNameBuilder table();
254

    
255
        public UpdateColumnBuilder column();
256

    
257
        public GeometryExpressionBuilder where();
258

    
259
        public boolean has_where();
260
    }
261

    
262
    public interface InsertBuilder extends Statement {
263

    
264
        public TableNameBuilder table();
265

    
266
        public InsertColumnBuilder column();
267
    }
268

    
269
    public interface DeleteBuilder extends Statement {
270

    
271
        public TableNameBuilder table();
272

    
273
        public GeometryExpressionBuilder where();
274

    
275
        public boolean has_where();
276
    }
277

    
278
    public interface AlterTableBuilder extends Statement {
279

    
280
        public TableNameBuilder table();
281

    
282
        public AlterTableBuilder drop_column(String columnName);
283

    
284
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
285

    
286
        public AlterTableBuilder add_column(String columnName, int type, int type_p, int type_s, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
287

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

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

    
292
        public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad);
293

    
294
        public AlterTableBuilder alter_column(String columnName, int type, int type_p, int type_s, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
295

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

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

    
300
        public AlterTableBuilder rename_column(String source, String target);
301

    
302
        public boolean isEmpty();
303

    
304
        public List<String> toStrings();
305

    
306
        public List<String> toStrings(Formatter formatter);
307
    }
308

    
309
    public interface CreateTableBuilder extends Statement {
310

    
311
        public TableNameBuilder table();
312

    
313
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
314

    
315
        public CreateTableBuilder add_column(String columnName, int type, int type_p, int type_s, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
316

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

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

    
321
        public ColumnDescriptor getColumnDescriptor(String columnName);
322

    
323
        public List<String> toStrings();
324

    
325
        public List<String> toStrings(Formatter formatter);
326
    }
327

    
328
    public interface UpdateTableStatisticsBuilder extends Statement {
329

    
330
        public TableNameBuilder table();
331

    
332
        public List<String> toStrings();
333

    
334
        public List<String> toStrings(Formatter formatter);
335
    }
336

    
337
    public interface GrantRoleBuilder extends StatementPart {
338

    
339
        public GrantRoleBuilder privilege(Privilege privilege);
340

    
341
        public GrantRoleBuilder select();
342

    
343
        public GrantRoleBuilder insert();
344

    
345
        public GrantRoleBuilder delete();
346

    
347
        public GrantRoleBuilder truncate();
348

    
349
        public GrantRoleBuilder reference();
350

    
351
        public GrantRoleBuilder update();
352

    
353
        public GrantRoleBuilder trigger();
354

    
355
        public GrantRoleBuilder all();
356
    }
357

    
358
    public interface GrantBuilder extends Statement {
359

    
360
        public TableNameBuilder table();
361

    
362
        public GrantRoleBuilder role(String name);
363

    
364
        public List<String> toStrings();
365

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

    
369
    public interface DropTableBuilder extends Statement {
370

    
371
        public TableNameBuilder table();
372

    
373
        public List<String> toStrings();
374

    
375
        public List<String> toStrings(Formatter formatter);
376
    }
377

    
378
    public interface CreateIndexBuilder extends Statement {
379

    
380
        public CreateIndexBuilder if_not_exist();
381

    
382
        public CreateIndexBuilder unique();
383

    
384
        public CreateIndexBuilder name(String name);
385

    
386
        public CreateIndexBuilder spatial();
387

    
388
        public CreateIndexBuilder column(String name);
389

    
390
        public TableNameBuilder table();
391

    
392
        public List<String> toStrings();
393

    
394
        public List<String> toStrings(Formatter formatter);
395
    }
396

    
397
    public String default_schema();
398

    
399
    public boolean support_schemas();
400

    
401
    public boolean has_spatial_functions();
402

    
403
    public GeometrySupportType geometry_support_type();
404

    
405
    public String sqltype(int dataType, int p, int s, int geomType, int geomSubtype);
406

    
407
    public Object sqlgeometrytype(int type, int subtype);
408

    
409
    public Object sqlgeometrydimension(int type, int subtype);
410

    
411
    public Object srs_id(IProjection projection);
412

    
413
    public String toString(Formatter formatter);
414

    
415
    public List<Variable> variables();
416

    
417
    public List<String> variables_names();
418

    
419
    public List<Parameter> parameters();
420

    
421
    public List<String> parameters_names();
422

    
423
    public TableNameBuilder table_name();
424

    
425
    public TableNameBuilder createTableNameBuilder();
426

    
427
    public SelectBuilder select();
428

    
429
    public UpdateBuilder update();
430

    
431
    public InsertBuilder insert();
432

    
433
    public DeleteBuilder delete();
434

    
435
    public AlterTableBuilder alter_table();
436

    
437
    public CreateTableBuilder create_table();
438

    
439
    public CreateIndexBuilder create_index();
440

    
441
    public GrantBuilder grant();
442

    
443
    public DropTableBuilder drop_table();
444

    
445
    public UpdateTableStatisticsBuilder update_table_statistics();
446

    
447
    public CountBuilder count();
448

    
449
    public GeometryExpressionBuilder expression();
450

    
451
    public String as_identifier(String id);
452

    
453
    public String as_string(String s);
454

    
455
    public String as_string(byte[] s);
456

    
457
    public String as_string(boolean value);
458

    
459
    public String as_string(Number value);
460

    
461
    public String as_string(Object value);
462
    
463
    public Column column(String name);
464

    
465
    public Column column(TableNameBuilder table, String name);
466
    
467
    public void setProperties(Class classToApply, Object... values);
468

    
469
}