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

History | View | Annotate | Download (15.6 KB)

1 43020 jjdelcerro
package org.gvsig.fmap.dal;
2
3
import java.util.List;
4 43114 jjdelcerro
import org.cresques.cts.IProjection;
5 44042 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionBuilder;
6
import org.gvsig.expressionevaluator.ExpressionBuilder.Config;
7
import org.gvsig.expressionevaluator.ExpressionBuilder.Function;
8
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
9
import org.gvsig.expressionevaluator.ExpressionBuilder.Visitable;
10 43739 jjdelcerro
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11 43020 jjdelcerro
12
public interface SQLBuilder extends ExpressionBuilder {
13
14
    public enum Privilege {
15
        SELECT,
16
        INSERT,
17
        UPDATE,
18
        DELETE,
19
        TRUNCATE,
20
        REFERENCE,
21
        TRIGGER,
22
        ALL
23
    };
24
25
    public interface Statement extends Visitable {
26
27
    }
28
29
    public interface SQLConfig extends Config {
30
        public final static String default_schema = "default_schema";
31
32
        public final static String allowAutomaticValues = "allowAutomaticValues";
33
34 44042 jjdelcerro
        public final static String Find_SRID = "Find_SRID";
35 43020 jjdelcerro
        public final static String ST_ExtentAggregate = "ST_ExtentAggregate";
36
        public final static String ST_UnionAggregate = "ST_UnionAggregate";
37
        public final static String count = "count";
38
        public final static String count_distinct = "count_distinct";
39
40
        public final static String type_boolean = "type_boolean";
41
        public final static String type_byte = "type_byte";
42
        public final static String type_bytearray = "type_bytearray";
43
        public final static String type_geometry = "type_geometry";
44
        public final static String type_char = "type_char";
45
        public final static String type_date = "type_date";
46
        public final static String type_double = "type_double";
47
        public final static String type_numeric_p = "type_numeric_p";
48
        public final static String type_numeric_ps = "type_numeric_ps";
49
        public final static String type_bigdecimal = "type_bigdecimal";
50
        public final static String type_float = "type_float";
51
        public final static String type_int = "type_int";
52
        public final static String type_long = "type_long";
53
        public final static String type_string = "type_string";
54
        public final static String type_string_p = "type_string_p";
55
        public final static String type_time = "type_time";
56
        public final static String type_timestamp = "type_timestamp";
57
        public final static String type_version = "type_version";
58
        public final static String type_URI = "type_URI";
59
        public final static String type_URL = "type_URL";
60
        public final static String type_FILE = "type_FILE";
61
        public final static String type_FOLDER = "type_FOLDER";
62
63
        public final static String DELETE_FROM_table_WHERE_expresion = "DELETE_FROM_table_WHERE_expresion";
64
        public final static String DELETE_FROM_table = "DELETE_FROM_table";
65
        public final static String INSERT_INTO_table_columns_VALUES_values = "INSERT_INTO_table_columns_VALUES_values";
66
        public final static String UPDATE_TABLE_STATISTICS_table = "UPDATE_TABLE_STATISTICS_table";
67
        public final static String DROP_TABLE_table = "DROP_TABLE_table";
68
        public final static String DELETE_GEOMETRY_COLUMN_FROM_TABLE_schema_table = "DELETE_GEOMETRY_COLUMN_FROM_TABLE_schema_table";
69
        public final static String DELETE_GEOMETRY_COLUMN_FROM_TABLE_table = "DELETE_GEOMETRY_COLUMN_FROM_TABLE_table";
70
        public final static String UPDATE_table_SET_columnsAndValues_WHERE_expresion = "UPDATE_table_SET_columnsAndValues_WHERE_expresion";
71
        public final static String UPDATE_table_SET_columnsAndValues = "UPDATE_table_SET_columnsAndValues";
72
        public final static String GRANT_privileges_ON_table_TO_role = "GRANT_privileges_ON_table_TO_role";
73 43687 jjdelcerro
//        public final static String CREATE_INDEX_name_ON_table_column = "CREATE_INDEX_name_ON_table_column";
74
//        public final static String CREATE_INDEX_name_ON_table_USING_GIST_column = "CREATE_INDEX_name_ON_table_USING_GIST_column";
75 43355 jjdelcerro
76 43020 jjdelcerro
    }
77
78 44042 jjdelcerro
    public interface ColumnDescriptor {
79
        public String getName();
80
        public int getType();
81
        public int getSize();
82
        public int getPrecision();
83
        public boolean isPrimaryKey();
84
        public boolean isIndexed();
85
        public boolean isAutomatic();
86
        boolean allowNulls();
87
        public Object getDefaultValue();
88
        public int getGeometryType();
89
        public int getGeometrySubtype();
90
        public Object getGeometrySRSId();
91
        public boolean isGeometry();
92
93
        public DataStoreParameters getStoreParameters();
94
95
        public void setName(String name);
96
        public void setType(int type);
97
        public void setSize(int size);
98
        public void setPrecision(int precision);
99
        public void setIsPrimaryKey(boolean isPk);
100
        public void setIsAutomatic(boolean isAutomatic);
101
        public void setAllowNulls(boolean allowNulls);
102
        public void setDefaultValue(Object defaultValue);
103
        public void setGeometryType(int geom_type);
104
        public void setGeometrySubtype(int geom_subtype);
105
        public void setGeometrySRSId(Object geom_srsid);
106
    }
107
108
    public interface Column extends Variable {
109
        public ColumnDescriptor getDescriptor();
110
    }
111
112 43020 jjdelcerro
    public interface TableNameBuilder extends Visitable {
113
        public TableNameBuilder database(String name);
114
        public TableNameBuilder schema(String name);
115
        public TableNameBuilder name(String name);
116
        public String getDatabase();
117
        public String getSchema();
118
        public String getName();
119
        public boolean has_database();
120
        public boolean has_schema();
121
    }
122 43114 jjdelcerro
123
    public interface ColumnDescriptorBuilder {
124
        public String getName();
125
        public int getType();
126
        public int getSize();
127
        public int getPrecision();
128
        public boolean isPrimaryKey();
129 43355 jjdelcerro
        public boolean isIndexed();
130 43114 jjdelcerro
        public boolean isAutomatic();
131
        boolean allowNulls();
132
        public Object getDefaultValue();
133
        public int getGeometryType();
134
        public int getGeometrySubtype();
135 43687 jjdelcerro
        public Object getGeometrySRSId();
136 43114 jjdelcerro
        public boolean isGeometry();
137
138
        public void setName(String name);
139
        public void setType(int type);
140
        public void setSize(int size);
141
        public void setPrecision(int precision);
142
        public void setIsPrimaryKey(boolean isPk);
143
        public void setIsAutomatic(boolean isAutomatic);
144
        public void setAllowNulls(boolean allowNulls);
145
        public void setDefaultValue(Object defaultValue);
146
        public void setGeometryType(int geom_type);
147
        public void setGeometrySubtype(int geom_subtype);
148 43687 jjdelcerro
        public void setGeometrySRSId(Object geom_srsid);
149 43114 jjdelcerro
    }
150 43020 jjdelcerro
151
    public interface CountBuilder extends Value {
152
        public CountBuilder all();
153
        public CountBuilder column(Value value);
154
        public CountBuilder distinct();
155
    }
156
157
    public interface SelectColumnBuilder extends Visitable {
158
        public SelectColumnBuilder name(String name);
159
        public SelectColumnBuilder value(Value value);
160
        public SelectColumnBuilder as(String alias);
161
        public SelectColumnBuilder as_geometry();
162
        public SelectColumnBuilder all();
163
        public String getName();
164
        public String getAlias();
165
        public String getValue();
166
    }
167
168
    public interface InsertColumnBuilder extends Visitable {
169
        public InsertColumnBuilder name(String name);
170
        public InsertColumnBuilder with_value(Value value);
171
        public String getName();
172
        public Value getValue();
173
    }
174
175
    public interface UpdateColumnBuilder extends InsertColumnBuilder {
176
        @Override
177
        public UpdateColumnBuilder name(String name);
178
        @Override
179
        public UpdateColumnBuilder with_value(Value value);
180
        @Override
181
        public String getName();
182
        @Override
183
        public Value getValue();
184
    }
185
186
    public interface FromBuilder extends Visitable {
187
        public TableNameBuilder table();
188
        public FromBuilder subquery(String subquery);
189
        public FromBuilder custom(String passthrough);
190
    }
191
192
    public interface OrderByBuilder extends Visitable {
193
        public OrderByBuilder column(String name);
194
        public OrderByBuilder ascending(boolean asc);
195
        public OrderByBuilder ascending();
196
        public OrderByBuilder descending();
197
        public OrderByBuilder custom(String order);
198
    }
199
200
    public interface SelectBuilder extends Statement {
201
        public SelectColumnBuilder column();
202
        public FromBuilder from();
203
        public ExpressionBuilder where();
204
        public OrderByBuilder order_by();
205
        public SelectBuilder distinct();
206
        public SelectBuilder limit(long limit);
207 44058 jjdelcerro
        public SelectBuilder limit(Long limit);
208 43093 jjdelcerro
209
        /**
210
         * Specifies an offset to be applied to the SQL statement.
211
         * Only an offset can be applied if an order has been specified.
212
         * Otherwise an IllegalStateException exception will be thrown when
213
         * constructing the SQL statement invoking the toString method.
214
         *
215
         * @param offset
216
         * @return this SelectBuilder
217
         */
218 43020 jjdelcerro
        public SelectBuilder offset(long offset);
219 43093 jjdelcerro
220 43020 jjdelcerro
        public boolean has_column(String name);
221
        public boolean has_where();
222
        public boolean has_from();
223
        public boolean has_order_by();
224
        public boolean has_limit();
225
        public boolean has_offset();
226 43093 jjdelcerro
227
        /**
228
         * Constructs the SQL statement.
229
         * If the values associated with the SQL statement are not valid
230
         * an IllegalStateException exception is thrown.
231
         *
232
         * @return the SQL select statement.
233
         * @throws IllegalStateException if the values of select statement are not valids.
234
         */
235
        @Override
236
        public String toString();
237
238 43020 jjdelcerro
    }
239
240
    public interface UpdateBuilder extends Statement {
241
        public TableNameBuilder table();
242
        public UpdateColumnBuilder column();
243
        public ExpressionBuilder where();
244
        public boolean has_where();
245
    }
246
247
    public interface InsertBuilder extends Statement {
248
        public TableNameBuilder table();
249
        public InsertColumnBuilder column();
250
    }
251
252
    public interface DeleteBuilder extends Statement {
253
        public TableNameBuilder table();
254
        public ExpressionBuilder where();
255
        public boolean has_where();
256
    }
257
258
    public interface AlterTableBuilder extends Statement {
259
        public TableNameBuilder table();
260
        public AlterTableBuilder drop_column(String columnName);
261 43739 jjdelcerro
        public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
262
        public AlterTableBuilder add_column(String columnName, int type, int type_p, int type_s, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
263 43650 jjdelcerro
        public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
264 43687 jjdelcerro
        public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
265 43739 jjdelcerro
        public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad);
266 43355 jjdelcerro
        public AlterTableBuilder alter_column(String columnName, int type, int type_p, int type_s, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
267 43650 jjdelcerro
        public AlterTableBuilder alter_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
268 43687 jjdelcerro
        public AlterTableBuilder alter_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
269 43020 jjdelcerro
        public AlterTableBuilder rename_column(String source, String target);
270 43687 jjdelcerro
        public boolean isEmpty();
271 43020 jjdelcerro
        public List<String> toStrings();
272
    }
273
274
    public interface CreateTableBuilder extends Statement {
275
        public TableNameBuilder table();
276 43739 jjdelcerro
        public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
277 43355 jjdelcerro
        public CreateTableBuilder add_column(String columnName, int type, int type_p, int type_s, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue);
278
        public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls);
279 43687 jjdelcerro
        public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls);
280 43739 jjdelcerro
        public ColumnDescriptor getColumnDescriptor(String columnName);
281 43020 jjdelcerro
        public List<String> toStrings();
282
    }
283
284
    public interface UpdateTableStatisticsBuilder extends Statement {
285
        public TableNameBuilder table();
286
        public List<String> toStrings();
287
    }
288
289
    public interface GrantRoleBuilder {
290
        public GrantRoleBuilder privilege(Privilege privilege);
291
        public GrantRoleBuilder select();
292
        public GrantRoleBuilder insert();
293
        public GrantRoleBuilder delete();
294
        public GrantRoleBuilder truncate();
295
        public GrantRoleBuilder reference();
296
        public GrantRoleBuilder update();
297
        public GrantRoleBuilder trigger();
298
        public GrantRoleBuilder all();
299
    }
300
301
    public interface GrantBuilder extends Statement {
302
        public TableNameBuilder table();
303
        public GrantRoleBuilder role(String name);
304
        public List<String> toStrings();
305
    }
306
307
    public interface DropTableBuilder extends Statement {
308
        public TableNameBuilder table();
309
        public List<String> toStrings();
310
    }
311 43687 jjdelcerro
312
    public interface CreateIndexBuilder extends Statement {
313
        public CreateIndexBuilder if_not_exist();
314
        public CreateIndexBuilder unique();
315
        public CreateIndexBuilder name(String name);
316
        public CreateIndexBuilder spatial();
317
        public CreateIndexBuilder column(String name);
318
        public TableNameBuilder table();
319
        public List<String> toStrings();
320
    }
321 43020 jjdelcerro
322 44042 jjdelcerro
    @Override
323
    public Column column(String name);
324
325
    public Column column(FeatureAttributeDescriptor fad);
326
327
    @Override
328
    public List<Variable> getVariables();
329
330 43020 jjdelcerro
    public String default_schema();
331 43355 jjdelcerro
332
    public boolean supportSchemas();
333 43020 jjdelcerro
334 43650 jjdelcerro
    @Deprecated
335 43020 jjdelcerro
    public String sqltype(int dataType, int p, int s);
336 43114 jjdelcerro
337 43650 jjdelcerro
    public String sqltype(int dataType, int p, int s, int geomType, int geomSubtype);
338
339 43114 jjdelcerro
    public Object sqlgeometrytype(int type, int subtype);
340 43020 jjdelcerro
341 43114 jjdelcerro
    public Object sqlgeometrydimension(int type, int subtype);
342
343 43020 jjdelcerro
    public SelectBuilder select();
344
345
    public UpdateBuilder update();
346
347
    public InsertBuilder insert();
348
349
    public DeleteBuilder delete();
350
351
    public AlterTableBuilder alter_table();
352
353
    public CreateTableBuilder create_table();
354 43687 jjdelcerro
355
    public CreateIndexBuilder create_index();
356 43020 jjdelcerro
357
    public GrantBuilder grant();
358
359
    public DropTableBuilder drop_table();
360
361
    public UpdateTableStatisticsBuilder update_table_statistics();
362
363
    public CountBuilder count();
364
365
    public Function ST_ExtentAggregate(Value geom);
366
367
    public Function ST_UnionAggregate(Value geom);
368 44042 jjdelcerro
369
    public Function Find_SRID(Value schema, Value table, Value column);
370
371
372 43020 jjdelcerro
}