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 @ 47785
History | View | Annotate | Download (18.1 KB)
1 | 47785 | jjdelcerro | package org.gvsig.fmap.dal; |
---|---|---|---|
2 | |||
3 | import java.util.List; |
||
4 | import org.cresques.cts.IProjection; |
||
5 | import org.gvsig.expressionevaluator.ExpressionBuilder; |
||
6 | import org.gvsig.expressionevaluator.ExpressionBuilder.Parameter; |
||
7 | import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
||
8 | import org.gvsig.expressionevaluator.ExpressionBuilder.Variable; |
||
9 | import org.gvsig.expressionevaluator.ExpressionBuilder.Visitable; |
||
10 | import org.gvsig.expressionevaluator.Formatter; |
||
11 | import org.gvsig.expressionevaluator.GeometryExpressionBuilder; |
||
12 | import org.gvsig.expressionevaluator.GeometryExpressionBuilderHelper.GeometrySupportType; |
||
13 | import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
||
14 | import org.gvsig.fmap.dal.feature.FeatureType; |
||
15 | import org.gvsig.fmap.geom.primitive.Envelope; |
||
16 | import org.gvsig.tools.util.Bitmask; |
||
17 | import org.gvsig.tools.util.IsEmpty; |
||
18 | |||
19 | public interface SQLBuilder extends Visitable { |
||
20 | |||
21 | public static final String PROP_FEATURE_TYPE = "FeatureType"; |
||
22 | public static final String PROP_TABLE = "Table"; |
||
23 | public static final String PROP_TABLENAME = "TableName"; |
||
24 | public static final String PROP_SYMBOLTABLE = "SymbolTable"; |
||
25 | public static final String PROP_JDBCHELPER = "JDBCHelper"; |
||
26 | public static final String PROP_QUERY = "Query"; |
||
27 | public static final String PROP_SQLBUILDER = "SQLBUILDER"; |
||
28 | public static final String PROP_ADD_TABLE_NAME_TO_COLUMNS = "ADD_TABLE_NAME"; |
||
29 | |||
30 | public static final String FEATURE_ATTRIBUTE_DESCRIPTOR = "FeatureAttributeDescriptor"; |
||
31 | |||
32 | public static final int DEFAULT_RECOMENDED_SQL_LENGTH = 2048; |
||
33 | |||
34 | public enum Privilege { |
||
35 | SELECT, |
||
36 | INSERT, |
||
37 | UPDATE, |
||
38 | DELETE, |
||
39 | TRUNCATE, |
||
40 | REFERENCE, |
||
41 | TRIGGER, |
||
42 | ALL |
||
43 | }; |
||
44 | |||
45 | public interface ColumnDescriptor { |
||
46 | |||
47 | public String getName(); |
||
48 | |||
49 | public int getType(); |
||
50 | |||
51 | public int getSize(); |
||
52 | |||
53 | public int getPrecision(); |
||
54 | |||
55 | public int getScale(); |
||
56 | |||
57 | public boolean isPrimaryKey(); |
||
58 | |||
59 | public boolean isIndexed(); |
||
60 | |||
61 | public boolean isAutomatic(); |
||
62 | |||
63 | boolean allowNulls();
|
||
64 | |||
65 | boolean allowIndexDuplicateds();
|
||
66 | |||
67 | public Object getDefaultValue(); |
||
68 | |||
69 | public int getGeometryType(); |
||
70 | |||
71 | public int getGeometrySubtype(); |
||
72 | |||
73 | public Object getGeometrySRSId(); |
||
74 | |||
75 | public boolean isGeometry(); |
||
76 | |||
77 | public DataStoreParameters getStoreParameters();
|
||
78 | |||
79 | public void setName(String name); |
||
80 | |||
81 | public void setType(int type); |
||
82 | |||
83 | public void setSize(int size); |
||
84 | |||
85 | public void setPrecision(int precision); |
||
86 | |||
87 | public void setScale(int scale); |
||
88 | |||
89 | public void setIsPrimaryKey(boolean isPk); |
||
90 | |||
91 | public void setIsAutomatic(boolean isAutomatic); |
||
92 | |||
93 | public void setAllowNulls(boolean allowNulls); |
||
94 | |||
95 | public void setAllowIndexDuplicateds(boolean allowIndexDuplicateds); |
||
96 | |||
97 | public void setDefaultValue(Object defaultValue); |
||
98 | |||
99 | public void setGeometryType(int geom_type); |
||
100 | |||
101 | public void setGeometrySubtype(int geom_subtype); |
||
102 | |||
103 | public void setGeometrySRSId(Object geom_srsid); |
||
104 | |||
105 | public Envelope getTableBBox();
|
||
106 | |||
107 | public void setTableBBox(Envelope bbox); |
||
108 | } |
||
109 | |||
110 | public interface StatementPart extends Value { |
||
111 | |||
112 | } |
||
113 | |||
114 | public interface Statement extends StatementPart { |
||
115 | |||
116 | } |
||
117 | |||
118 | public interface Column extends Variable { |
||
119 | public TableNameBuilder table();
|
||
120 | public TableNameBuilder table(TableNameBuilder table);
|
||
121 | } |
||
122 | |||
123 | public interface TableNameBuilder extends StatementPart, IsEmpty { |
||
124 | |||
125 | public TableNameBuilder database(String name); |
||
126 | |||
127 | public TableNameBuilder schema(String name); |
||
128 | |||
129 | public TableNameBuilder name(String name); |
||
130 | |||
131 | public String getDatabase(); |
||
132 | |||
133 | public String getSchema(); |
||
134 | |||
135 | public String getName(); |
||
136 | |||
137 | public boolean has_database(); |
||
138 | |||
139 | public boolean has_schema(); |
||
140 | |||
141 | public boolean has_name(); |
||
142 | |||
143 | public void setFeatureType(FeatureType featureType); |
||
144 | |||
145 | public FeatureType featureType();
|
||
146 | } |
||
147 | |||
148 | public interface CountBuilder extends StatementPart { |
||
149 | |||
150 | public CountBuilder all();
|
||
151 | |||
152 | public CountBuilder column(Value value);
|
||
153 | |||
154 | public CountBuilder distinct();
|
||
155 | } |
||
156 | |||
157 | public interface SelectColumnBuilder extends StatementPart { |
||
158 | |||
159 | public SelectColumnBuilder name(String name); |
||
160 | |||
161 | public SelectColumnBuilder name(TableNameBuilder table, String name); |
||
162 | |||
163 | public SelectColumnBuilder table(TableNameBuilder table);
|
||
164 | |||
165 | public SelectColumnBuilder value(Value value);
|
||
166 | |||
167 | public SelectColumnBuilder as(String alias); |
||
168 | |||
169 | public SelectColumnBuilder as_geometry();
|
||
170 | |||
171 | public SelectColumnBuilder all();
|
||
172 | |||
173 | public String getName(); |
||
174 | |||
175 | public String getAlias(); |
||
176 | |||
177 | public Value getValue();
|
||
178 | |||
179 | public boolean isGeometry(); |
||
180 | |||
181 | public TableNameBuilder getTable();
|
||
182 | |||
183 | public boolean isAggregateFunction(); |
||
184 | } |
||
185 | |||
186 | public interface InsertColumnBuilder extends StatementPart { |
||
187 | |||
188 | public InsertColumnBuilder name(String name); |
||
189 | |||
190 | public InsertColumnBuilder with_value(Value value);
|
||
191 | |||
192 | public String getName(); |
||
193 | |||
194 | public Value getValue();
|
||
195 | } |
||
196 | |||
197 | public interface UpdateColumnBuilder extends InsertColumnBuilder { |
||
198 | |||
199 | @Override
|
||
200 | public UpdateColumnBuilder name(String name); |
||
201 | |||
202 | @Override
|
||
203 | public UpdateColumnBuilder with_value(Value value);
|
||
204 | |||
205 | @Override
|
||
206 | public String getName(); |
||
207 | |||
208 | @Override
|
||
209 | public Value getValue();
|
||
210 | } |
||
211 | |||
212 | public interface FromBuilder extends StatementPart { |
||
213 | |||
214 | public TableNameBuilder table();
|
||
215 | |||
216 | public FromBuilder subquery(String subquery); |
||
217 | |||
218 | public FromBuilder custom(String passthrough); |
||
219 | |||
220 | public FromBuilder left_join(TableNameBuilder table, Value expression);
|
||
221 | |||
222 | public List<JoinBuilder> getJoins(); |
||
223 | } |
||
224 | |||
225 | public interface JoinBuilder extends StatementPart { |
||
226 | |||
227 | ExpressionBuilder.Value getCondition(); |
||
228 | |||
229 | SQLBuilder.TableNameBuilder getTable(); |
||
230 | |||
231 | String getType();
|
||
232 | |||
233 | } |
||
234 | |||
235 | |||
236 | public interface OrderByBuilder extends StatementPart { |
||
237 | |||
238 | public static int MODE_NULLS_FIRST = 0; |
||
239 | public static int MODE_NULLS_LAST = 1; |
||
240 | public static int MODE_NULLS_NOT_SPECIFIED = 2; |
||
241 | |||
242 | public OrderByBuilder column(String name); |
||
243 | |||
244 | public boolean isColumn(String name); |
||
245 | |||
246 | public boolean isColumn(Value value); |
||
247 | |||
248 | // @Deprecated
|
||
249 | // public OrderByBuilder column(Value name);
|
||
250 | |||
251 | public OrderByBuilder value(Value expression);
|
||
252 | |||
253 | public OrderByBuilder ascending(boolean asc); |
||
254 | |||
255 | public OrderByBuilder ascending();
|
||
256 | |||
257 | public OrderByBuilder descending();
|
||
258 | |||
259 | public OrderByBuilder nulls(int mode); |
||
260 | |||
261 | public OrderByBuilder custom(String order); |
||
262 | |||
263 | public int getNullsMode(); |
||
264 | } |
||
265 | |||
266 | public interface SelectBuilder extends Statement { |
||
267 | |||
268 | public SelectColumnBuilder column();
|
||
269 | |||
270 | public SelectColumnBuilder column(String name); |
||
271 | |||
272 | public SelectColumnBuilder column(SelectColumnBuilder column);
|
||
273 | |||
274 | public SelectBuilder remove_all_columns();
|
||
275 | |||
276 | public FromBuilder from();
|
||
277 | |||
278 | public GeometryExpressionBuilder where();
|
||
279 | |||
280 | public OrderByBuilder order_by();
|
||
281 | |||
282 | public OrderByBuilder getOrderBy(String column); |
||
283 | |||
284 | public OrderByBuilder getOrderBy(Value column);
|
||
285 | |||
286 | public SelectBuilder group_by(Value... column);
|
||
287 | |||
288 | public SelectBuilder distinct();
|
||
289 | |||
290 | public SelectBuilder limit(long limit); |
||
291 | |||
292 | public SelectBuilder limit(Long limit); |
||
293 | |||
294 | /**
|
||
295 | * Specifies an offset to be applied to the SQL statement. Only an
|
||
296 | * offset can be applied if an order has been specified. Otherwise an
|
||
297 | * IllegalStateException exception will be thrown when constructing the
|
||
298 | * SQL statement invoking the toString method.
|
||
299 | *
|
||
300 | * @param offset
|
||
301 | * @return this SelectBuilder
|
||
302 | */
|
||
303 | public SelectBuilder offset(long offset); |
||
304 | |||
305 | public boolean has_column(String name); |
||
306 | |||
307 | public boolean has_where(); |
||
308 | |||
309 | public boolean has_from(); |
||
310 | |||
311 | public boolean has_order_by(); |
||
312 | |||
313 | public boolean has_group_by(); |
||
314 | |||
315 | public boolean has_aggregate_functions(); |
||
316 | |||
317 | public boolean has_limit(); |
||
318 | |||
319 | public boolean has_offset(); |
||
320 | |||
321 | public void disable_check_order_and_offset(); |
||
322 | |||
323 | /**
|
||
324 | * Constructs the SQL statement. If the values associated with the SQL
|
||
325 | * statement are not valid an IllegalStateException exception is thrown.
|
||
326 | *
|
||
327 | * @return the SQL select statement.
|
||
328 | * @throws IllegalStateException if the values of select statement are
|
||
329 | * not valids.
|
||
330 | */
|
||
331 | @Override
|
||
332 | public String toString(); |
||
333 | |||
334 | public List<Value> getGroups(); |
||
335 | |||
336 | public List<SelectColumnBuilder> getColumns(); |
||
337 | |||
338 | public SelectColumnBuilder getColumn(String name); |
||
339 | |||
340 | public void remove_column(String columnName); |
||
341 | |||
342 | public boolean isGroupBy(String name); |
||
343 | |||
344 | } |
||
345 | |||
346 | public interface UpdateBuilder extends Statement { |
||
347 | |||
348 | public TableNameBuilder table();
|
||
349 | |||
350 | public UpdateColumnBuilder column();
|
||
351 | |||
352 | public GeometryExpressionBuilder where();
|
||
353 | |||
354 | public boolean has_where(); |
||
355 | } |
||
356 | |||
357 | public interface InsertBuilder extends Statement { |
||
358 | |||
359 | public TableNameBuilder table();
|
||
360 | |||
361 | public InsertColumnBuilder column();
|
||
362 | } |
||
363 | |||
364 | public interface MergeBuilder extends InsertBuilder { |
||
365 | |||
366 | public MergeBuilder key(String id); |
||
367 | } |
||
368 | |||
369 | public interface DeleteBuilder extends Statement { |
||
370 | |||
371 | public TableNameBuilder table();
|
||
372 | |||
373 | public GeometryExpressionBuilder where();
|
||
374 | |||
375 | public boolean has_where(); |
||
376 | } |
||
377 | |||
378 | public interface AlterTableBuilder extends Statement { |
||
379 | public static final int ALTER_COLUMN_ALL = 1; |
||
380 | public static final int ALTER_COLUMN_GEOMETRY = 2; |
||
381 | public static final int ALTER_COLUMN_SET_DEFAULT = 3; |
||
382 | public static final int ALTER_COLUMN_SET_NULL = 4; |
||
383 | public static final int ALTER_COLUMN_SET_DATA_TYPE = 5; |
||
384 | public static final int ALTER_COLUMN_ADD_PRIMARY_KEY = 6; |
||
385 | public static final int ALTER_COLUMN_DROP_PRIMARY_KEY = 7; |
||
386 | public static final int ALTER_COLUMN_CREATE_INDEX = 8; |
||
387 | public static final int ALTER_COLUMN_DROP_INDEX = 9; |
||
388 | public static final int ALTER_COLUMN_DROP_COLUMN = 10; |
||
389 | public static final int ALTER_COLUMN_ADD_COLUMN = 11; |
||
390 | |||
391 | public TableNameBuilder table();
|
||
392 | |||
393 | public AlterTableBuilder drop_column(String columnName); |
||
394 | |||
395 | public AlterTableBuilder drop_primary_key(String columnName); |
||
396 | |||
397 | public AlterTableBuilder add_column(FeatureAttributeDescriptor fad);
|
||
398 | |||
399 | public AlterTableBuilder add_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue, boolean allowIndexDuplicateds); |
||
400 | |||
401 | public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls); |
||
402 | |||
403 | public AlterTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls); |
||
404 | |||
405 | public AlterTableBuilder alter_column(Bitmask operation, FeatureAttributeDescriptor fad);
|
||
406 | |||
407 | public AlterTableBuilder alter_column(Bitmask operation, String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue, boolean allowIndexDuplicateds); |
||
408 | |||
409 | public AlterTableBuilder alter_geometry_column(Bitmask operation,String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls); |
||
410 | |||
411 | public AlterTableBuilder alter_geometry_column(Bitmask operation, String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls); |
||
412 | |||
413 | public AlterTableBuilder rename_column(String source, String target); |
||
414 | |||
415 | public boolean isEmpty(); |
||
416 | |||
417 | public List<String> toStrings(); |
||
418 | |||
419 | public List<String> toStrings(Formatter formatter); |
||
420 | } |
||
421 | |||
422 | public interface CreateTableBuilder extends Statement { |
||
423 | |||
424 | public TableNameBuilder table();
|
||
425 | |||
426 | public CreateTableBuilder add_column(FeatureAttributeDescriptor fad);
|
||
427 | |||
428 | public CreateTableBuilder add_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue); |
||
429 | |||
430 | public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, IProjection proj, boolean isIndexed, boolean allowNulls); |
||
431 | |||
432 | public CreateTableBuilder add_geometry_column(String columnName, int geom_type, int geom_subtype, Object srsdbcode, boolean isIndexed, boolean allowNulls); |
||
433 | |||
434 | public ColumnDescriptor getColumnDescriptor(String columnName); |
||
435 | |||
436 | public List<String> toStrings(); |
||
437 | |||
438 | public List<String> toStrings(Formatter formatter); |
||
439 | } |
||
440 | |||
441 | public interface UpdateTableStatisticsBuilder extends Statement { |
||
442 | |||
443 | public TableNameBuilder table();
|
||
444 | |||
445 | public List<String> toStrings(); |
||
446 | |||
447 | public List<String> toStrings(Formatter formatter); |
||
448 | } |
||
449 | |||
450 | public interface GrantRoleBuilder extends StatementPart { |
||
451 | |||
452 | public GrantRoleBuilder privilege(Privilege privilege);
|
||
453 | |||
454 | public GrantRoleBuilder select();
|
||
455 | |||
456 | public GrantRoleBuilder insert();
|
||
457 | |||
458 | public GrantRoleBuilder delete();
|
||
459 | |||
460 | public GrantRoleBuilder truncate();
|
||
461 | |||
462 | public GrantRoleBuilder reference();
|
||
463 | |||
464 | public GrantRoleBuilder update();
|
||
465 | |||
466 | public GrantRoleBuilder trigger();
|
||
467 | |||
468 | public GrantRoleBuilder all();
|
||
469 | } |
||
470 | |||
471 | public interface GrantBuilder extends Statement { |
||
472 | |||
473 | public TableNameBuilder table();
|
||
474 | |||
475 | public GrantRoleBuilder role(String name); |
||
476 | |||
477 | public List<String> toStrings(); |
||
478 | |||
479 | public List<String> toStrings(Formatter formatter); |
||
480 | } |
||
481 | |||
482 | public interface DropTableBuilder extends Statement { |
||
483 | |||
484 | public TableNameBuilder table();
|
||
485 | |||
486 | public List<String> toStrings(); |
||
487 | |||
488 | public List<String> toStrings(Formatter formatter); |
||
489 | } |
||
490 | |||
491 | public interface CreateIndexBuilder extends Statement { |
||
492 | |||
493 | public CreateIndexBuilder if_not_exist();
|
||
494 | |||
495 | public CreateIndexBuilder unique();
|
||
496 | |||
497 | public CreateIndexBuilder name(String name); |
||
498 | |||
499 | public CreateIndexBuilder name(String tableName, String columnName); |
||
500 | |||
501 | public CreateIndexBuilder spatial();
|
||
502 | |||
503 | public CreateIndexBuilder column(String name); |
||
504 | |||
505 | public TableNameBuilder table();
|
||
506 | |||
507 | public List<String> toStrings(); |
||
508 | |||
509 | public List<String> toStrings(Formatter formatter); |
||
510 | |||
511 | public void setFeatureType(FeatureType type); |
||
512 | } |
||
513 | |||
514 | public interface DropIndexBuilder extends Statement { |
||
515 | |||
516 | public DropIndexBuilder if_exist();
|
||
517 | |||
518 | public DropIndexBuilder name(String name); |
||
519 | |||
520 | public DropIndexBuilder name(String tableName, String columnName); |
||
521 | |||
522 | public List<String> toStrings(); |
||
523 | |||
524 | public List<String> toStrings(Formatter formatter); |
||
525 | } |
||
526 | |||
527 | public String default_schema(); |
||
528 | |||
529 | public boolean support_schemas(); |
||
530 | |||
531 | public boolean has_spatial_functions(); |
||
532 | |||
533 | public GeometrySupportType geometry_support_type();
|
||
534 | |||
535 | public String sqltype(int dataType, int size, int precision, int scale, int geomType, int geomSubtype); |
||
536 | |||
537 | public Object sqlgeometrytype(int type, int subtype); |
||
538 | |||
539 | public Object sqlgeometrydimension(int type, int subtype); |
||
540 | |||
541 | public Object srs_id(IProjection projection); |
||
542 | |||
543 | public String toString(Formatter formatter); |
||
544 | |||
545 | public List<Variable> variables(); |
||
546 | |||
547 | public List<String> variables_names(); |
||
548 | |||
549 | public List<Parameter> parameters(); |
||
550 | |||
551 | public List<String> parameters_names(); |
||
552 | |||
553 | public TableNameBuilder table_name();
|
||
554 | |||
555 | public TableNameBuilder createTableNameBuilder();
|
||
556 | |||
557 | public SelectColumnBuilder column();
|
||
558 | |||
559 | public SelectBuilder select();
|
||
560 | |||
561 | public UpdateBuilder update();
|
||
562 | |||
563 | public InsertBuilder insert();
|
||
564 | |||
565 | public MergeBuilder merge();
|
||
566 | |||
567 | public DeleteBuilder delete();
|
||
568 | |||
569 | public AlterTableBuilder alter_table();
|
||
570 | |||
571 | public CreateTableBuilder create_table();
|
||
572 | |||
573 | public CreateIndexBuilder create_index();
|
||
574 | |||
575 | public DropIndexBuilder drop_index();
|
||
576 | |||
577 | public GrantBuilder grant();
|
||
578 | |||
579 | public DropTableBuilder drop_table();
|
||
580 | |||
581 | public UpdateTableStatisticsBuilder update_table_statistics();
|
||
582 | |||
583 | public CountBuilder count();
|
||
584 | |||
585 | public GeometryExpressionBuilder expression();
|
||
586 | |||
587 | public String as_identifier(String id); |
||
588 | |||
589 | public String as_clob(String s); |
||
590 | |||
591 | public String as_string(String s); |
||
592 | |||
593 | public String as_string(byte[] s); |
||
594 | |||
595 | public String as_string(boolean value); |
||
596 | |||
597 | public String as_string(Number value); |
||
598 | |||
599 | public String as_string(Object value); |
||
600 | |||
601 | public Column column(String name); |
||
602 | |||
603 | public Column column(TableNameBuilder table, String name); |
||
604 | |||
605 | public Column column_from(Variable variable);
|
||
606 | |||
607 | public Column column_from(TableNameBuilder table, Variable variable);
|
||
608 | |||
609 | public void setProperties(Class classToApply, Object... values); |
||
610 | |||
611 | public void setProperties(ExpressionBuilder.Visitable visitable, Class filter, final Object... values); |
||
612 | |||
613 | public Formatter formatter(); |
||
614 | |||
615 | public boolean isAggregateFunction(String funcname); |
||
616 | |||
617 | public int getMaxRecomendedSQLLength(); |
||
618 | |||
619 | public SelectBuilder createSelectBuilder();
|
||
620 | |||
621 | public String getConstrainName(TableNameBuilder table, String columnName, String constrainType); |
||
622 | } |