2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.md.sal.dom.xsql;
10 import java.io.DataInputStream;
11 import java.io.DataOutputStream;
12 import java.io.FileOutputStream;
13 import java.io.InputStream;
14 import java.io.ObjectInputStream;
15 import java.io.ObjectOutputStream;
16 import java.io.Serializable;
17 import java.lang.reflect.InvocationHandler;
18 import java.lang.reflect.Method;
19 import java.lang.reflect.ParameterizedType;
20 import java.lang.reflect.Proxy;
21 import java.lang.reflect.Type;
22 import java.sql.Connection;
23 import java.sql.DatabaseMetaData;
24 import java.sql.ResultSet;
25 import java.sql.RowIdLifetime;
26 import java.sql.SQLException;
27 import java.util.ArrayList;
28 import java.util.HashMap;
29 import java.util.HashSet;
30 import java.util.List;
33 import org.opendaylight.yangtools.yang.model.api.Module;
34 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
36 * @author Sharon Aicler(saichler@gmail.com)
38 public class XSQLBluePrint implements DatabaseMetaData, Serializable {
40 private static final long serialVersionUID = 1L;
42 public static final String CACHE_FILE_NAME = "./BluePrintCache.dat";
44 private final Map<String, XSQLBluePrintNode> tableNameToBluePrint = new HashMap<>();
45 private final Map<String, Map<String, XSQLBluePrintNode>> odlNameToBluePrint = new HashMap<>();
47 private final boolean cacheLoadedSuccessfuly = false;
48 private DatabaseMetaData myProxy = null;
50 public static final String replaceAll(final String source, final String toReplace,
51 final String withThis) {
52 int index = source.indexOf(toReplace);
54 StringBuffer result = new StringBuffer();
56 result.append(source.substring(index2, index));
57 result.append(withThis);
58 index2 = index + toReplace.length();
59 index = source.indexOf(toReplace, index2);
61 if (index2 < source.length()) {
62 result.append(source.substring(index2));
64 return result.toString();
72 ObjectOutputStream out = null;
74 out = new ObjectOutputStream(new DataOutputStream(
75 new FileOutputStream(CACHE_FILE_NAME)));
76 out.writeObject(this);
77 } catch (Exception err) {
78 err.printStackTrace();
82 } catch (Exception err) {
87 static XSQLBluePrint create(final SchemaContext context) {
88 final XSQLBluePrint ret = new XSQLBluePrint();
89 for (Module m : context.getModules()) {
90 XSQLODLUtils.createOpenDaylightCache(ret, m);
96 public static XSQLBluePrint load(final InputStream ins) {
97 ObjectInputStream in = null;
99 in = new ObjectInputStream(new DataInputStream(ins));
100 return (XSQLBluePrint) in.readObject();
101 } catch (Exception err) {
102 err.printStackTrace();
106 } catch (Exception err) {
112 private class NQLBluePrintProxy implements InvocationHandler {
114 public Object invoke(final Object proxy, final Method method, final Object[] args)
116 System.out.println("Method " + method);
117 return method.invoke(XSQLBluePrint.this, args);
121 public DatabaseMetaData getProxy() {
122 if (myProxy == null) {
124 myProxy = (DatabaseMetaData) Proxy.newProxyInstance(getClass()
126 new Class[] { DatabaseMetaData.class },
127 new NQLBluePrintProxy());
128 } catch (Exception err) {
129 err.printStackTrace();
135 public XSQLBluePrintNode[] getBluePrintNodeByODLTableName(
136 final String odlTableName) {
137 Map<String, XSQLBluePrintNode> map = this.odlNameToBluePrint
142 return map.values().toArray(new XSQLBluePrintNode[map.size()]);
145 public XSQLBluePrintNode getBluePrintNodeByTableName(String tableName) {
146 if (tableName.indexOf(".") != -1) {
147 tableName = tableName.substring(tableName.lastIndexOf(".") + 1);
150 XSQLBluePrintNode node = tableNameToBluePrint.get(tableName);
156 for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
157 if (n.getBluePrintNodeName().endsWith(tableName)) {
162 for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
163 if (n.getBluePrintNodeName().toLowerCase()
164 .endsWith(tableName.toLowerCase())) {
169 for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
170 if (n.getBluePrintNodeName().toLowerCase()
171 .equals(tableName.toLowerCase())) {
176 for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
177 if (n.getBluePrintNodeName().toLowerCase()
178 .indexOf(tableName.toLowerCase()) != -1) {
185 public boolean isCacheLoaded() {
186 return cacheLoadedSuccessfuly;
189 private static Map<Class<?>, Set<Class<?>>> superClassMap = new HashMap<>();
191 public static Set<Class<?>> getInheritance(final Class<?> myObjectClass,
192 final Class<?> returnType) {
194 if (returnType != null && myObjectClass.equals(returnType)) {
195 return new HashSet<>();
197 Set<Class<?>> result = superClassMap.get(myObjectClass);
198 if (result != null) {
201 result = new HashSet<>();
202 superClassMap.put(myObjectClass, result);
203 if (returnType != null) {
204 if (!returnType.equals(myObjectClass)) {
205 Class<?> mySuperClass = myObjectClass.getSuperclass();
206 while (mySuperClass != null) {
207 result.add(mySuperClass);
208 mySuperClass = mySuperClass.getSuperclass();
210 result.addAll(collectInterfaces(myObjectClass));
216 public static Set<Class<?>> collectInterfaces(final Class<?> cls) {
217 Set<Class<?>> result = new HashSet<>();
218 Class<?> myInterfaces[] = cls.getInterfaces();
219 if (myInterfaces != null) {
220 for (Class<?> in : myInterfaces) {
222 result.addAll(collectInterfaces(in));
228 public XSQLBluePrintNode addToBluePrintCache(final XSQLBluePrintNode blNode,final XSQLBluePrintNode parent) {
229 XSQLBluePrintNode existingNode = this.tableNameToBluePrint.get(blNode.getBluePrintNodeName());
230 if(existingNode!=null){
231 existingNode.mergeAugmentation(blNode);
234 this.tableNameToBluePrint.put(blNode.getBluePrintNodeName(), blNode);
235 Map<String, XSQLBluePrintNode> map = this.odlNameToBluePrint.get(blNode.getODLTableName());
237 map = new HashMap<String, XSQLBluePrintNode>();
238 this.odlNameToBluePrint.put(blNode.getODLTableName(), map);
240 map.put(blNode.getBluePrintNodeName(), blNode);
242 parent.addChild(blNode);
248 public Class<?> getGenericType(final ParameterizedType type) {
249 Type[] typeArguments = type.getActualTypeArguments();
250 for (Type typeArgument : typeArguments) {
251 if (typeArgument instanceof ParameterizedType) {
252 ParameterizedType pType = (ParameterizedType) typeArgument;
253 return (Class<?>) pType.getRawType();
254 } else if (typeArgument instanceof Class) {
255 return (Class<?>) typeArgument;
261 public Class<?> getMethodReturnTypeFromGeneric(final Method m) {
262 Type rType = m.getGenericReturnType();
263 if (rType instanceof ParameterizedType) {
264 return getGenericType((ParameterizedType) rType);
269 public List<String> getAllTableNames() {
270 List<String> names = new ArrayList<String>();
271 for (XSQLBluePrintNode n : this.tableNameToBluePrint.values()) {
272 if (!n.isModule() && !n.getColumns().isEmpty()) {
273 names.add(n.getBluePrintNodeName());
280 public List<String> getInterfaceNames(final XSQLBluePrintNode node) {
281 Set<XSQLBluePrintNode> children = node.getChildren();
282 List<String> names = new ArrayList<String>();
283 for (XSQLBluePrintNode n : children) {
284 if (!n.isModule() && !n.getColumns().isEmpty()) {
285 names.add(n.toString());
287 names.addAll(getInterfaceNames(n));
293 public boolean allProceduresAreCallable() throws SQLException {
298 public boolean allTablesAreSelectable() throws SQLException {
303 public boolean autoCommitFailureClosesAllResultSets() throws SQLException {
304 // TODO Auto-generated method stub
309 public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
310 // TODO Auto-generated method stub
315 public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
316 // TODO Auto-generated method stub
321 public boolean deletesAreDetected(final int type) throws SQLException {
322 // TODO Auto-generated method stub
327 public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
328 // TODO Auto-generated method stub
333 public ResultSet getAttributes(final String catalog, final String schemaPattern,
334 final String typeNamePattern, final String attributeNamePattern)
335 throws SQLException {
336 // TODO Auto-generated method stub
341 public ResultSet getBestRowIdentifier(final String catalog, final String schema,
342 final String table, final int scope, final boolean nullable) throws SQLException {
343 // TODO Auto-generated method stub
348 public ResultSet getCatalogs() throws SQLException {
349 // TODO Auto-generated method stub
354 public String getCatalogSeparator() throws SQLException {
355 // TODO Auto-generated method stub
360 public String getCatalogTerm() throws SQLException {
361 // TODO Auto-generated method stub
366 public ResultSet getClientInfoProperties() throws SQLException {
367 // TODO Auto-generated method stub
372 public ResultSet getColumnPrivileges(final String catalog, final String schema,
373 final String table, final String columnNamePattern) throws SQLException {
374 // TODO Auto-generated method stub
379 public ResultSet getColumns(final String catalog, final String schemaPattern,
380 final String tableNamePattern, final String columnNamePattern)
381 throws SQLException {
382 // TODO Auto-generated method stub
387 public Connection getConnection() throws SQLException {
388 // TODO Auto-generated method stub
393 public ResultSet getCrossReference(final String parentCatalog,
394 final String parentSchema, final String parentTable, final String foreignCatalog,
395 final String foreignSchema, final String foreignTable) throws SQLException {
396 // TODO Auto-generated method stub
401 public int getDatabaseMajorVersion() throws SQLException {
406 public int getDatabaseMinorVersion() throws SQLException {
407 // TODO Auto-generated method stub
412 public String getDatabaseProductName() throws SQLException {
413 return "OpenDayLight";
417 public String getDatabaseProductVersion() throws SQLException {
422 public int getDefaultTransactionIsolation() throws SQLException {
423 // TODO Auto-generated method stub
428 public int getDriverMajorVersion() {
429 // TODO Auto-generated method stub
434 public int getDriverMinorVersion() {
435 // TODO Auto-generated method stub
440 public String getDriverName() throws SQLException {
441 // TODO Auto-generated method stub
446 public String getDriverVersion() throws SQLException {
447 // TODO Auto-generated method stub
452 public ResultSet getExportedKeys(final String catalog, final String schema, final String table)
453 throws SQLException {
454 // TODO Auto-generated method stub
459 public String getExtraNameCharacters() throws SQLException {
460 // TODO Auto-generated method stub
465 public ResultSet getFunctionColumns(final String catalog, final String schemaPattern,
466 final String functionNamePattern, final String columnNamePattern)
467 throws SQLException {
468 // TODO Auto-generated method stub
473 public ResultSet getFunctions(final String catalog, final String schemaPattern,
474 final String functionNamePattern) throws SQLException {
475 // TODO Auto-generated method stub
480 public String getIdentifierQuoteString() throws SQLException {
481 // TODO Auto-generated method stub
486 public ResultSet getImportedKeys(final String catalog, final String schema, final String table)
487 throws SQLException {
488 // TODO Auto-generated method stub
493 public ResultSet getIndexInfo(final String catalog, final String schema, final String table,
494 final boolean unique, final boolean approximate) throws SQLException {
495 // TODO Auto-generated method stub
500 public int getJDBCMajorVersion() throws SQLException {
501 // TODO Auto-generated method stub
506 public int getJDBCMinorVersion() throws SQLException {
507 // TODO Auto-generated method stub
512 public int getMaxBinaryLiteralLength() throws SQLException {
513 // TODO Auto-generated method stub
518 public int getMaxCatalogNameLength() throws SQLException {
519 // TODO Auto-generated method stub
524 public int getMaxCharLiteralLength() throws SQLException {
525 // TODO Auto-generated method stub
530 public int getMaxColumnNameLength() throws SQLException {
531 // TODO Auto-generated method stub
536 public int getMaxColumnsInGroupBy() throws SQLException {
537 // TODO Auto-generated method stub
542 public int getMaxColumnsInIndex() throws SQLException {
543 // TODO Auto-generated method stub
548 public int getMaxColumnsInOrderBy() throws SQLException {
549 // TODO Auto-generated method stub
554 public int getMaxColumnsInSelect() throws SQLException {
555 // TODO Auto-generated method stub
560 public int getMaxColumnsInTable() throws SQLException {
561 // TODO Auto-generated method stub
566 public int getMaxConnections() throws SQLException {
567 // TODO Auto-generated method stub
572 public int getMaxCursorNameLength() throws SQLException {
573 // TODO Auto-generated method stub
578 public int getMaxIndexLength() throws SQLException {
579 // TODO Auto-generated method stub
584 public int getMaxProcedureNameLength() throws SQLException {
585 // TODO Auto-generated method stub
590 public int getMaxRowSize() throws SQLException {
591 // TODO Auto-generated method stub
596 public int getMaxSchemaNameLength() throws SQLException {
597 // TODO Auto-generated method stub
602 public int getMaxStatementLength() throws SQLException {
603 // TODO Auto-generated method stub
608 public int getMaxStatements() throws SQLException {
609 // TODO Auto-generated method stub
614 public int getMaxTableNameLength() throws SQLException {
615 // TODO Auto-generated method stub
620 public int getMaxTablesInSelect() throws SQLException {
621 // TODO Auto-generated method stub
626 public int getMaxUserNameLength() throws SQLException {
627 // TODO Auto-generated method stub
632 public String getNumericFunctions() throws SQLException {
633 // TODO Auto-generated method stub
638 public ResultSet getPrimaryKeys(final String catalog, final String schema, final String table)
639 throws SQLException {
640 // TODO Auto-generated method stub
645 public ResultSet getProcedureColumns(final String catalog, final String schemaPattern,
646 final String procedureNamePattern, final String columnNamePattern)
647 throws SQLException {
648 // TODO Auto-generated method stub
653 public ResultSet getProcedures(final String catalog, final String schemaPattern,
654 final String procedureNamePattern) throws SQLException {
655 // TODO Auto-generated method stub
660 public String getProcedureTerm() throws SQLException {
661 // TODO Auto-generated method stub
666 public int getResultSetHoldability() throws SQLException {
667 // TODO Auto-generated method stub
672 public RowIdLifetime getRowIdLifetime() throws SQLException {
673 // TODO Auto-generated method stub
678 public ResultSet getSchemas() throws SQLException {
679 // TODO Auto-generated method stub
684 public ResultSet getSchemas(final String catalog, final String schemaPattern)
685 throws SQLException {
686 // TODO Auto-generated method stub
691 public String getSchemaTerm() throws SQLException {
692 // TODO Auto-generated method stub
697 public String getSearchStringEscape() throws SQLException {
698 // TODO Auto-generated method stub
703 public String getSQLKeywords() throws SQLException {
704 // TODO Auto-generated method stub
709 public int getSQLStateType() throws SQLException {
710 // TODO Auto-generated method stub
715 public String getStringFunctions() throws SQLException {
716 // TODO Auto-generated method stub
721 public ResultSet getSuperTables(final String catalog, final String schemaPattern,
722 final String tableNamePattern) throws SQLException {
723 // TODO Auto-generated method stub
728 public ResultSet getSuperTypes(final String catalog, final String schemaPattern,
729 final String typeNamePattern) throws SQLException {
730 // TODO Auto-generated method stub
735 public String getSystemFunctions() throws SQLException {
736 // TODO Auto-generated method stub
741 public ResultSet getTablePrivileges(final String catalog, final String schemaPattern,
742 final String tableNamePattern) throws SQLException {
743 // TODO Auto-generated method stub
748 public ResultSet getTables(final String catalog, final String schemaPattern,
749 final String tableNamePattern, final String[] types) throws SQLException {
750 return new TablesResultSet(this);
754 public ResultSet getTableTypes() throws SQLException {
755 // TODO Auto-generated method stub
760 public String getTimeDateFunctions() throws SQLException {
761 // TODO Auto-generated method stub
766 public ResultSet getTypeInfo() throws SQLException {
767 // TODO Auto-generated method stub
772 public ResultSet getUDTs(final String catalog, final String schemaPattern,
773 final String typeNamePattern, final int[] types) throws SQLException {
774 // TODO Auto-generated method stub
779 public String getURL() throws SQLException {
780 // TODO Auto-generated method stub
785 public String getUserName() throws SQLException {
786 // TODO Auto-generated method stub
791 public ResultSet getVersionColumns(final String catalog, final String schema,
792 final String table) throws SQLException {
793 // TODO Auto-generated method stub
798 public boolean insertsAreDetected(final int type) throws SQLException {
799 // TODO Auto-generated method stub
804 public boolean isCatalogAtStart() throws SQLException {
805 // TODO Auto-generated method stub
810 public boolean isReadOnly() throws SQLException {
811 // TODO Auto-generated method stub
816 public boolean locatorsUpdateCopy() throws SQLException {
817 // TODO Auto-generated method stub
822 public boolean nullPlusNonNullIsNull() throws SQLException {
823 // TODO Auto-generated method stub
828 public boolean nullsAreSortedAtEnd() throws SQLException {
829 // TODO Auto-generated method stub
834 public boolean nullsAreSortedAtStart() throws SQLException {
835 // TODO Auto-generated method stub
840 public boolean nullsAreSortedHigh() throws SQLException {
841 // TODO Auto-generated method stub
846 public boolean nullsAreSortedLow() throws SQLException {
847 // TODO Auto-generated method stub
852 public boolean othersDeletesAreVisible(final int type) throws SQLException {
853 // TODO Auto-generated method stub
858 public boolean othersInsertsAreVisible(final int type) throws SQLException {
859 // TODO Auto-generated method stub
864 public boolean othersUpdatesAreVisible(final int type) throws SQLException {
865 // TODO Auto-generated method stub
870 public boolean ownDeletesAreVisible(final int type) throws SQLException {
871 // TODO Auto-generated method stub
876 public boolean ownInsertsAreVisible(final int type) throws SQLException {
877 // TODO Auto-generated method stub
882 public boolean ownUpdatesAreVisible(final int type) throws SQLException {
883 // TODO Auto-generated method stub
888 public boolean storesLowerCaseIdentifiers() throws SQLException {
889 // TODO Auto-generated method stub
894 public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
895 // TODO Auto-generated method stub
900 public boolean storesMixedCaseIdentifiers() throws SQLException {
901 // TODO Auto-generated method stub
906 public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
907 // TODO Auto-generated method stub
912 public boolean storesUpperCaseIdentifiers() throws SQLException {
913 // TODO Auto-generated method stub
918 public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
919 // TODO Auto-generated method stub
924 public boolean supportsAlterTableWithAddColumn() throws SQLException {
925 // TODO Auto-generated method stub
930 public boolean supportsAlterTableWithDropColumn() throws SQLException {
931 // TODO Auto-generated method stub
936 public boolean supportsANSI92EntryLevelSQL() throws SQLException {
937 // TODO Auto-generated method stub
942 public boolean supportsANSI92FullSQL() throws SQLException {
943 // TODO Auto-generated method stub
948 public boolean supportsANSI92IntermediateSQL() throws SQLException {
949 // TODO Auto-generated method stub
954 public boolean supportsBatchUpdates() throws SQLException {
955 // TODO Auto-generated method stub
960 public boolean supportsCatalogsInDataManipulation() throws SQLException {
961 // TODO Auto-generated method stub
966 public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
967 // TODO Auto-generated method stub
972 public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
973 // TODO Auto-generated method stub
978 public boolean supportsCatalogsInProcedureCalls() throws SQLException {
979 // TODO Auto-generated method stub
984 public boolean supportsCatalogsInTableDefinitions() throws SQLException {
985 // TODO Auto-generated method stub
990 public boolean supportsColumnAliasing() throws SQLException {
991 // TODO Auto-generated method stub
996 public boolean supportsConvert() throws SQLException {
997 // TODO Auto-generated method stub
1002 public boolean supportsConvert(final int fromType, final int toType)
1003 throws SQLException {
1004 // TODO Auto-generated method stub
1009 public boolean supportsCoreSQLGrammar() throws SQLException {
1010 // TODO Auto-generated method stub
1015 public boolean supportsCorrelatedSubqueries() throws SQLException {
1016 // TODO Auto-generated method stub
1021 public boolean supportsDataDefinitionAndDataManipulationTransactions()
1022 throws SQLException {
1023 // TODO Auto-generated method stub
1028 public boolean supportsDataManipulationTransactionsOnly()
1029 throws SQLException {
1030 // TODO Auto-generated method stub
1035 public boolean supportsDifferentTableCorrelationNames() throws SQLException {
1036 // TODO Auto-generated method stub
1041 public boolean supportsExpressionsInOrderBy() throws SQLException {
1042 // TODO Auto-generated method stub
1047 public boolean supportsExtendedSQLGrammar() throws SQLException {
1048 // TODO Auto-generated method stub
1053 public boolean supportsFullOuterJoins() throws SQLException {
1054 // TODO Auto-generated method stub
1059 public boolean supportsGetGeneratedKeys() throws SQLException {
1060 // TODO Auto-generated method stub
1065 public boolean supportsGroupBy() throws SQLException {
1066 // TODO Auto-generated method stub
1071 public boolean supportsGroupByBeyondSelect() throws SQLException {
1072 // TODO Auto-generated method stub
1077 public boolean supportsGroupByUnrelated() throws SQLException {
1078 // TODO Auto-generated method stub
1083 public boolean supportsIntegrityEnhancementFacility() throws SQLException {
1084 // TODO Auto-generated method stub
1089 public boolean supportsLikeEscapeClause() throws SQLException {
1090 // TODO Auto-generated method stub
1095 public boolean supportsLimitedOuterJoins() throws SQLException {
1096 // TODO Auto-generated method stub
1101 public boolean supportsMinimumSQLGrammar() throws SQLException {
1102 // TODO Auto-generated method stub
1107 public boolean supportsMixedCaseIdentifiers() throws SQLException {
1108 // TODO Auto-generated method stub
1113 public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
1114 // TODO Auto-generated method stub
1119 public boolean supportsMultipleOpenResults() throws SQLException {
1120 // TODO Auto-generated method stub
1125 public boolean supportsMultipleResultSets() throws SQLException {
1126 // TODO Auto-generated method stub
1131 public boolean supportsMultipleTransactions() throws SQLException {
1132 // TODO Auto-generated method stub
1137 public boolean supportsNamedParameters() throws SQLException {
1138 // TODO Auto-generated method stub
1143 public boolean supportsNonNullableColumns() throws SQLException {
1144 // TODO Auto-generated method stub
1149 public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
1150 // TODO Auto-generated method stub
1155 public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
1156 // TODO Auto-generated method stub
1161 public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
1162 // TODO Auto-generated method stub
1167 public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
1168 // TODO Auto-generated method stub
1173 public boolean supportsOrderByUnrelated() throws SQLException {
1174 // TODO Auto-generated method stub
1179 public boolean supportsOuterJoins() throws SQLException {
1180 // TODO Auto-generated method stub
1185 public boolean supportsPositionedDelete() throws SQLException {
1186 // TODO Auto-generated method stub
1191 public boolean supportsPositionedUpdate() throws SQLException {
1192 // TODO Auto-generated method stub
1197 public boolean supportsResultSetConcurrency(final int type, final int concurrency)
1198 throws SQLException {
1199 // TODO Auto-generated method stub
1204 public boolean supportsResultSetHoldability(final int holdability)
1205 throws SQLException {
1206 // TODO Auto-generated method stub
1211 public boolean supportsResultSetType(final int type) throws SQLException {
1212 // TODO Auto-generated method stub
1217 public boolean supportsSavepoints() throws SQLException {
1218 // TODO Auto-generated method stub
1223 public boolean supportsSchemasInDataManipulation() throws SQLException {
1224 // TODO Auto-generated method stub
1229 public boolean supportsSchemasInIndexDefinitions() throws SQLException {
1230 // TODO Auto-generated method stub
1235 public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
1236 // TODO Auto-generated method stub
1241 public boolean supportsSchemasInProcedureCalls() throws SQLException {
1242 // TODO Auto-generated method stub
1247 public boolean supportsSchemasInTableDefinitions() throws SQLException {
1248 // TODO Auto-generated method stub
1253 public boolean supportsSelectForUpdate() throws SQLException {
1254 // TODO Auto-generated method stub
1259 public boolean supportsStatementPooling() throws SQLException {
1260 // TODO Auto-generated method stub
1265 public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
1266 // TODO Auto-generated method stub
1271 public boolean supportsStoredProcedures() throws SQLException {
1272 // TODO Auto-generated method stub
1277 public boolean supportsSubqueriesInComparisons() throws SQLException {
1278 // TODO Auto-generated method stub
1283 public boolean supportsSubqueriesInExists() throws SQLException {
1284 // TODO Auto-generated method stub
1289 public boolean supportsSubqueriesInIns() throws SQLException {
1290 // TODO Auto-generated method stub
1295 public boolean supportsSubqueriesInQuantifieds() throws SQLException {
1296 // TODO Auto-generated method stub
1301 public boolean supportsTableCorrelationNames() throws SQLException {
1302 // TODO Auto-generated method stub
1307 public boolean supportsTransactionIsolationLevel(final int level)
1308 throws SQLException {
1309 // TODO Auto-generated method stub
1314 public boolean supportsTransactions() throws SQLException {
1315 // TODO Auto-generated method stub
1320 public boolean supportsUnion() throws SQLException {
1321 // TODO Auto-generated method stub
1326 public boolean supportsUnionAll() throws SQLException {
1327 // TODO Auto-generated method stub
1332 public boolean updatesAreDetected(final int type) throws SQLException {
1333 // TODO Auto-generated method stub
1338 public boolean usesLocalFilePerTable() throws SQLException {
1339 // TODO Auto-generated method stub
1344 public boolean usesLocalFiles() throws SQLException {
1345 // TODO Auto-generated method stub
1350 public boolean isWrapperFor(final Class<?> iface) throws SQLException {
1351 // TODO Auto-generated method stub
1356 public <T> T unwrap(final Class<T> iface) throws SQLException {
1357 // TODO Auto-generated method stub
1362 public ResultSet getPseudoColumns(final String catalog, final String schemaPattern,
1363 final String tableNamePattern, final String columnNamePattern)
1364 throws SQLException {
1365 // TODO Auto-generated method stub
1370 public boolean generatedKeyAlwaysReturned() throws SQLException {
1371 // TODO Auto-generated method stub