BUG-5222: offload XSQLBluePrint creation to first access
[controller.git] / opendaylight / md-sal / sal-dom-xsql / src / main / java / org / opendaylight / controller / md / sal / dom / xsql / XSQLBluePrint.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.md.sal.dom.xsql;
9
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;
31 import java.util.Map;
32 import java.util.Set;
33 import org.opendaylight.yangtools.yang.model.api.Module;
34 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
35 /**
36  * @author Sharon Aicler(saichler@gmail.com)
37  **/
38 /**
39  * To be removed in Nitrogen
40  */
41 @Deprecated
42 public class XSQLBluePrint implements DatabaseMetaData, Serializable {
43
44     private static final long serialVersionUID = 1L;
45
46     public static final String CACHE_FILE_NAME = "./BluePrintCache.dat";
47
48     private final Map<String, XSQLBluePrintNode> tableNameToBluePrint = new HashMap<>();
49     private final Map<String, Map<String, XSQLBluePrintNode>> odlNameToBluePrint = new HashMap<>();
50
51     private final boolean cacheLoadedSuccessfuly = false;
52     private DatabaseMetaData myProxy = null;
53
54     public static final String replaceAll(final String source, final String toReplace,
55             final String withThis) {
56         int index = source.indexOf(toReplace);
57         int index2 = 0;
58         StringBuffer result = new StringBuffer();
59         while (index != -1) {
60             result.append(source.substring(index2, index));
61             result.append(withThis);
62             index2 = index + toReplace.length();
63             index = source.indexOf(toReplace, index2);
64         }
65         if (index2 < source.length()) {
66             result.append(source.substring(index2));
67         }
68         return result.toString();
69     }
70
71     XSQLBluePrint() {
72
73     }
74
75     public void save() {
76         ObjectOutputStream out = null;
77         try {
78             out = new ObjectOutputStream(new DataOutputStream(
79                     new FileOutputStream(CACHE_FILE_NAME)));
80             out.writeObject(this);
81         } catch (Exception err) {
82             err.printStackTrace();
83         } finally {
84             try {
85                 out.close();
86             } catch (Exception err) {
87             }
88         }
89     }
90
91     static XSQLBluePrint create(final SchemaContext context) {
92         final XSQLBluePrint ret = new XSQLBluePrint();
93         for (Module m : context.getModules()) {
94             XSQLODLUtils.createOpenDaylightCache(ret, m);
95         }
96
97         return ret;
98     }
99
100     public static XSQLBluePrint load(final InputStream ins) {
101         ObjectInputStream in = null;
102         try {
103             in = new ObjectInputStream(new DataInputStream(ins));
104             return (XSQLBluePrint) in.readObject();
105         } catch (Exception err) {
106             err.printStackTrace();
107         } finally {
108             try {
109                 in.close();
110             } catch (Exception err) {
111             }
112         }
113         return null;
114     }
115
116     private class NQLBluePrintProxy implements InvocationHandler {
117         @Override
118         public Object invoke(final Object proxy, final Method method, final Object[] args)
119                 throws Throwable {
120             System.out.println("Method " + method);
121             return method.invoke(XSQLBluePrint.this, args);
122         }
123     }
124
125     public DatabaseMetaData getProxy() {
126         if (myProxy == null) {
127             try {
128                 myProxy = (DatabaseMetaData) Proxy.newProxyInstance(getClass()
129                         .getClassLoader(),
130                         new Class[] { DatabaseMetaData.class },
131                         new NQLBluePrintProxy());
132             } catch (Exception err) {
133                 err.printStackTrace();
134             }
135         }
136         return myProxy;
137     }
138
139     public XSQLBluePrintNode[] getBluePrintNodeByODLTableName(
140             final String odlTableName) {
141         Map<String, XSQLBluePrintNode> map = this.odlNameToBluePrint
142                 .get(odlTableName);
143         if (map == null) {
144             return null;
145         }
146         return map.values().toArray(new XSQLBluePrintNode[map.size()]);
147     }
148
149     public XSQLBluePrintNode getBluePrintNodeByTableName(String tableName) {
150         if (tableName.indexOf(".") != -1) {
151             tableName = tableName.substring(tableName.lastIndexOf(".") + 1);
152         }
153
154         XSQLBluePrintNode node = tableNameToBluePrint.get(tableName);
155
156         if (node != null) {
157             return node;
158         }
159
160         for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
161             if (n.getBluePrintNodeName().endsWith(tableName)) {
162                 return n;
163             }
164         }
165
166         for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
167             if (n.getBluePrintNodeName().toLowerCase()
168                     .endsWith(tableName.toLowerCase())) {
169                 return n;
170             }
171         }
172
173         for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
174             if (n.getBluePrintNodeName().toLowerCase()
175                     .equals(tableName.toLowerCase())) {
176                 return n;
177             }
178         }
179
180         for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
181             if (n.getBluePrintNodeName().toLowerCase()
182                     .indexOf(tableName.toLowerCase()) != -1) {
183                 return n;
184             }
185         }
186         return null;
187     }
188
189     public boolean isCacheLoaded() {
190         return cacheLoadedSuccessfuly;
191     }
192
193     private static Map<Class<?>, Set<Class<?>>> superClassMap = new HashMap<>();
194
195     public static Set<Class<?>> getInheritance(final Class<?> myObjectClass,
196             final Class<?> returnType) {
197
198         if (returnType != null && myObjectClass.equals(returnType)) {
199             return new HashSet<>();
200         }
201         Set<Class<?>> result = superClassMap.get(myObjectClass);
202         if (result != null) {
203             return result;
204         }
205         result = new HashSet<>();
206         superClassMap.put(myObjectClass, result);
207         if (returnType != null) {
208             if (!returnType.equals(myObjectClass)) {
209                 Class<?> mySuperClass = myObjectClass.getSuperclass();
210                 while (mySuperClass != null) {
211                     result.add(mySuperClass);
212                     mySuperClass = mySuperClass.getSuperclass();
213                 }
214                 result.addAll(collectInterfaces(myObjectClass));
215             }
216         }
217         return result;
218     }
219
220     public static Set<Class<?>> collectInterfaces(final Class<?> cls) {
221         Set<Class<?>> result = new HashSet<>();
222         Class<?> myInterfaces[] = cls.getInterfaces();
223         if (myInterfaces != null) {
224             for (Class<?> in : myInterfaces) {
225                 result.add(in);
226                 result.addAll(collectInterfaces(in));
227             }
228         }
229         return result;
230     }
231
232     public XSQLBluePrintNode addToBluePrintCache(final XSQLBluePrintNode blNode,final XSQLBluePrintNode parent) {
233         XSQLBluePrintNode existingNode = this.tableNameToBluePrint.get(blNode.getBluePrintNodeName());
234         if(existingNode!=null){
235             existingNode.mergeAugmentation(blNode);
236             return existingNode;
237         }else{
238             this.tableNameToBluePrint.put(blNode.getBluePrintNodeName(), blNode);
239             Map<String, XSQLBluePrintNode> map = this.odlNameToBluePrint.get(blNode.getODLTableName());
240             if (map == null) {
241                 map = new HashMap<>();
242                 this.odlNameToBluePrint.put(blNode.getODLTableName(), map);
243             }
244             map.put(blNode.getBluePrintNodeName(), blNode);
245             if(parent!=null) {
246                 parent.addChild(blNode);
247             }
248             return blNode;
249         }
250     }
251
252     public Class<?> getGenericType(final ParameterizedType type) {
253         Type[] typeArguments = type.getActualTypeArguments();
254         for (Type typeArgument : typeArguments) {
255             if (typeArgument instanceof ParameterizedType) {
256                 ParameterizedType pType = (ParameterizedType) typeArgument;
257                 return (Class<?>) pType.getRawType();
258             } else if (typeArgument instanceof Class) {
259                 return (Class<?>) typeArgument;
260             }
261         }
262         return null;
263     }
264
265     public Class<?> getMethodReturnTypeFromGeneric(final Method m) {
266         Type rType = m.getGenericReturnType();
267         if (rType instanceof ParameterizedType) {
268             return getGenericType((ParameterizedType) rType);
269         }
270         return null;
271     }
272
273     public List<String> getAllTableNames() {
274         List<String> names = new ArrayList<>();
275         for (XSQLBluePrintNode n : this.tableNameToBluePrint.values()) {
276             if (!n.isModule() && !n.getColumns().isEmpty()) {
277                 names.add(n.getBluePrintNodeName());
278             }
279         }
280         return names;
281
282     }
283
284     public List<String> getInterfaceNames(final XSQLBluePrintNode node) {
285         Set<XSQLBluePrintNode> children = node.getChildren();
286         List<String> names = new ArrayList<>();
287         for (XSQLBluePrintNode n : children) {
288             if (!n.isModule() && !n.getColumns().isEmpty()) {
289                 names.add(n.toString());
290             }
291             names.addAll(getInterfaceNames(n));
292         }
293         return names;
294     }
295
296     @Override
297     public boolean allProceduresAreCallable() throws SQLException {
298         return false;
299     }
300
301     @Override
302     public boolean allTablesAreSelectable() throws SQLException {
303         return true;
304     }
305
306     @Override
307     public boolean autoCommitFailureClosesAllResultSets() throws SQLException {
308         // TODO Auto-generated method stub
309         return false;
310     }
311
312     @Override
313     public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
314         // TODO Auto-generated method stub
315         return false;
316     }
317
318     @Override
319     public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
320         // TODO Auto-generated method stub
321         return false;
322     }
323
324     @Override
325     public boolean deletesAreDetected(final int type) throws SQLException {
326         // TODO Auto-generated method stub
327         return false;
328     }
329
330     @Override
331     public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
332         // TODO Auto-generated method stub
333         return false;
334     }
335
336     @Override
337     public ResultSet getAttributes(final String catalog, final String schemaPattern,
338             final String typeNamePattern, final String attributeNamePattern)
339             throws SQLException {
340         // TODO Auto-generated method stub
341         return null;
342     }
343
344     @Override
345     public ResultSet getBestRowIdentifier(final String catalog, final String schema,
346             final String table, final int scope, final boolean nullable) throws SQLException {
347         // TODO Auto-generated method stub
348         return null;
349     }
350
351     @Override
352     public ResultSet getCatalogs() throws SQLException {
353         // TODO Auto-generated method stub
354         return null;
355     }
356
357     @Override
358     public String getCatalogSeparator() throws SQLException {
359         // TODO Auto-generated method stub
360         return null;
361     }
362
363     @Override
364     public String getCatalogTerm() throws SQLException {
365         // TODO Auto-generated method stub
366         return null;
367     }
368
369     @Override
370     public ResultSet getClientInfoProperties() throws SQLException {
371         // TODO Auto-generated method stub
372         return null;
373     }
374
375     @Override
376     public ResultSet getColumnPrivileges(final String catalog, final String schema,
377             final String table, final String columnNamePattern) throws SQLException {
378         // TODO Auto-generated method stub
379         return null;
380     }
381
382     @Override
383     public ResultSet getColumns(final String catalog, final String schemaPattern,
384             final String tableNamePattern, final String columnNamePattern)
385             throws SQLException {
386         // TODO Auto-generated method stub
387         return null;
388     }
389
390     @Override
391     public Connection getConnection() throws SQLException {
392         // TODO Auto-generated method stub
393         return null;
394     }
395
396     @Override
397     public ResultSet getCrossReference(final String parentCatalog,
398             final String parentSchema, final String parentTable, final String foreignCatalog,
399             final String foreignSchema, final String foreignTable) throws SQLException {
400         // TODO Auto-generated method stub
401         return null;
402     }
403
404     @Override
405     public int getDatabaseMajorVersion() throws SQLException {
406         return 0;
407     }
408
409     @Override
410     public int getDatabaseMinorVersion() throws SQLException {
411         // TODO Auto-generated method stub
412         return 1;
413     }
414
415     @Override
416     public String getDatabaseProductName() throws SQLException {
417         return "OpenDayLight";
418     }
419
420     @Override
421     public String getDatabaseProductVersion() throws SQLException {
422         return "0.1";
423     }
424
425     @Override
426     public int getDefaultTransactionIsolation() throws SQLException {
427         // TODO Auto-generated method stub
428         return 0;
429     }
430
431     @Override
432     public int getDriverMajorVersion() {
433         // TODO Auto-generated method stub
434         return 0;
435     }
436
437     @Override
438     public int getDriverMinorVersion() {
439         // TODO Auto-generated method stub
440         return 0;
441     }
442
443     @Override
444     public String getDriverName() throws SQLException {
445         // TODO Auto-generated method stub
446         return null;
447     }
448
449     @Override
450     public String getDriverVersion() throws SQLException {
451         // TODO Auto-generated method stub
452         return null;
453     }
454
455     @Override
456     public ResultSet getExportedKeys(final String catalog, final String schema, final String table)
457             throws SQLException {
458         // TODO Auto-generated method stub
459         return null;
460     }
461
462     @Override
463     public String getExtraNameCharacters() throws SQLException {
464         // TODO Auto-generated method stub
465         return null;
466     }
467
468     @Override
469     public ResultSet getFunctionColumns(final String catalog, final String schemaPattern,
470             final String functionNamePattern, final String columnNamePattern)
471             throws SQLException {
472         // TODO Auto-generated method stub
473         return null;
474     }
475
476     @Override
477     public ResultSet getFunctions(final String catalog, final String schemaPattern,
478             final String functionNamePattern) throws SQLException {
479         // TODO Auto-generated method stub
480         return null;
481     }
482
483     @Override
484     public String getIdentifierQuoteString() throws SQLException {
485         // TODO Auto-generated method stub
486         return null;
487     }
488
489     @Override
490     public ResultSet getImportedKeys(final String catalog, final String schema, final String table)
491             throws SQLException {
492         // TODO Auto-generated method stub
493         return null;
494     }
495
496     @Override
497     public ResultSet getIndexInfo(final String catalog, final String schema, final String table,
498             final boolean unique, final boolean approximate) throws SQLException {
499         // TODO Auto-generated method stub
500         return null;
501     }
502
503     @Override
504     public int getJDBCMajorVersion() throws SQLException {
505         // TODO Auto-generated method stub
506         return 0;
507     }
508
509     @Override
510     public int getJDBCMinorVersion() throws SQLException {
511         // TODO Auto-generated method stub
512         return 0;
513     }
514
515     @Override
516     public int getMaxBinaryLiteralLength() throws SQLException {
517         // TODO Auto-generated method stub
518         return 0;
519     }
520
521     @Override
522     public int getMaxCatalogNameLength() throws SQLException {
523         // TODO Auto-generated method stub
524         return 0;
525     }
526
527     @Override
528     public int getMaxCharLiteralLength() throws SQLException {
529         // TODO Auto-generated method stub
530         return 0;
531     }
532
533     @Override
534     public int getMaxColumnNameLength() throws SQLException {
535         // TODO Auto-generated method stub
536         return 0;
537     }
538
539     @Override
540     public int getMaxColumnsInGroupBy() throws SQLException {
541         // TODO Auto-generated method stub
542         return 0;
543     }
544
545     @Override
546     public int getMaxColumnsInIndex() throws SQLException {
547         // TODO Auto-generated method stub
548         return 0;
549     }
550
551     @Override
552     public int getMaxColumnsInOrderBy() throws SQLException {
553         // TODO Auto-generated method stub
554         return 0;
555     }
556
557     @Override
558     public int getMaxColumnsInSelect() throws SQLException {
559         // TODO Auto-generated method stub
560         return 0;
561     }
562
563     @Override
564     public int getMaxColumnsInTable() throws SQLException {
565         // TODO Auto-generated method stub
566         return 0;
567     }
568
569     @Override
570     public int getMaxConnections() throws SQLException {
571         // TODO Auto-generated method stub
572         return 0;
573     }
574
575     @Override
576     public int getMaxCursorNameLength() throws SQLException {
577         // TODO Auto-generated method stub
578         return 0;
579     }
580
581     @Override
582     public int getMaxIndexLength() throws SQLException {
583         // TODO Auto-generated method stub
584         return 0;
585     }
586
587     @Override
588     public int getMaxProcedureNameLength() throws SQLException {
589         // TODO Auto-generated method stub
590         return 0;
591     }
592
593     @Override
594     public int getMaxRowSize() throws SQLException {
595         // TODO Auto-generated method stub
596         return 0;
597     }
598
599     @Override
600     public int getMaxSchemaNameLength() throws SQLException {
601         // TODO Auto-generated method stub
602         return 0;
603     }
604
605     @Override
606     public int getMaxStatementLength() throws SQLException {
607         // TODO Auto-generated method stub
608         return 0;
609     }
610
611     @Override
612     public int getMaxStatements() throws SQLException {
613         // TODO Auto-generated method stub
614         return 0;
615     }
616
617     @Override
618     public int getMaxTableNameLength() throws SQLException {
619         // TODO Auto-generated method stub
620         return 0;
621     }
622
623     @Override
624     public int getMaxTablesInSelect() throws SQLException {
625         // TODO Auto-generated method stub
626         return 0;
627     }
628
629     @Override
630     public int getMaxUserNameLength() throws SQLException {
631         // TODO Auto-generated method stub
632         return 0;
633     }
634
635     @Override
636     public String getNumericFunctions() throws SQLException {
637         // TODO Auto-generated method stub
638         return null;
639     }
640
641     @Override
642     public ResultSet getPrimaryKeys(final String catalog, final String schema, final String table)
643             throws SQLException {
644         // TODO Auto-generated method stub
645         return null;
646     }
647
648     @Override
649     public ResultSet getProcedureColumns(final String catalog, final String schemaPattern,
650             final String procedureNamePattern, final String columnNamePattern)
651             throws SQLException {
652         // TODO Auto-generated method stub
653         return null;
654     }
655
656     @Override
657     public ResultSet getProcedures(final String catalog, final String schemaPattern,
658             final String procedureNamePattern) throws SQLException {
659         // TODO Auto-generated method stub
660         return null;
661     }
662
663     @Override
664     public String getProcedureTerm() throws SQLException {
665         // TODO Auto-generated method stub
666         return null;
667     }
668
669     @Override
670     public int getResultSetHoldability() throws SQLException {
671         // TODO Auto-generated method stub
672         return 0;
673     }
674
675     @Override
676     public RowIdLifetime getRowIdLifetime() throws SQLException {
677         // TODO Auto-generated method stub
678         return null;
679     }
680
681     @Override
682     public ResultSet getSchemas() throws SQLException {
683         // TODO Auto-generated method stub
684         return null;
685     }
686
687     @Override
688     public ResultSet getSchemas(final String catalog, final String schemaPattern)
689             throws SQLException {
690         // TODO Auto-generated method stub
691         return null;
692     }
693
694     @Override
695     public String getSchemaTerm() throws SQLException {
696         // TODO Auto-generated method stub
697         return null;
698     }
699
700     @Override
701     public String getSearchStringEscape() throws SQLException {
702         // TODO Auto-generated method stub
703         return null;
704     }
705
706     @Override
707     public String getSQLKeywords() throws SQLException {
708         // TODO Auto-generated method stub
709         return null;
710     }
711
712     @Override
713     public int getSQLStateType() throws SQLException {
714         // TODO Auto-generated method stub
715         return 0;
716     }
717
718     @Override
719     public String getStringFunctions() throws SQLException {
720         // TODO Auto-generated method stub
721         return null;
722     }
723
724     @Override
725     public ResultSet getSuperTables(final String catalog, final String schemaPattern,
726             final String tableNamePattern) throws SQLException {
727         // TODO Auto-generated method stub
728         return null;
729     }
730
731     @Override
732     public ResultSet getSuperTypes(final String catalog, final String schemaPattern,
733             final String typeNamePattern) throws SQLException {
734         // TODO Auto-generated method stub
735         return null;
736     }
737
738     @Override
739     public String getSystemFunctions() throws SQLException {
740         // TODO Auto-generated method stub
741         return null;
742     }
743
744     @Override
745     public ResultSet getTablePrivileges(final String catalog, final String schemaPattern,
746             final String tableNamePattern) throws SQLException {
747         // TODO Auto-generated method stub
748         return null;
749     }
750
751     @Override
752     public ResultSet getTables(final String catalog, final String schemaPattern,
753             final String tableNamePattern, final String[] types) throws SQLException {
754         return new TablesResultSet(this);
755     }
756
757     @Override
758     public ResultSet getTableTypes() throws SQLException {
759         // TODO Auto-generated method stub
760         return null;
761     }
762
763     @Override
764     public String getTimeDateFunctions() throws SQLException {
765         // TODO Auto-generated method stub
766         return null;
767     }
768
769     @Override
770     public ResultSet getTypeInfo() throws SQLException {
771         // TODO Auto-generated method stub
772         return null;
773     }
774
775     @Override
776     public ResultSet getUDTs(final String catalog, final String schemaPattern,
777             final String typeNamePattern, final int[] types) throws SQLException {
778         // TODO Auto-generated method stub
779         return null;
780     }
781
782     @Override
783     public String getURL() throws SQLException {
784         // TODO Auto-generated method stub
785         return null;
786     }
787
788     @Override
789     public String getUserName() throws SQLException {
790         // TODO Auto-generated method stub
791         return null;
792     }
793
794     @Override
795     public ResultSet getVersionColumns(final String catalog, final String schema,
796             final String table) throws SQLException {
797         // TODO Auto-generated method stub
798         return null;
799     }
800
801     @Override
802     public boolean insertsAreDetected(final int type) throws SQLException {
803         // TODO Auto-generated method stub
804         return false;
805     }
806
807     @Override
808     public boolean isCatalogAtStart() throws SQLException {
809         // TODO Auto-generated method stub
810         return false;
811     }
812
813     @Override
814     public boolean isReadOnly() throws SQLException {
815         // TODO Auto-generated method stub
816         return false;
817     }
818
819     @Override
820     public boolean locatorsUpdateCopy() throws SQLException {
821         // TODO Auto-generated method stub
822         return false;
823     }
824
825     @Override
826     public boolean nullPlusNonNullIsNull() throws SQLException {
827         // TODO Auto-generated method stub
828         return false;
829     }
830
831     @Override
832     public boolean nullsAreSortedAtEnd() throws SQLException {
833         // TODO Auto-generated method stub
834         return false;
835     }
836
837     @Override
838     public boolean nullsAreSortedAtStart() throws SQLException {
839         // TODO Auto-generated method stub
840         return false;
841     }
842
843     @Override
844     public boolean nullsAreSortedHigh() throws SQLException {
845         // TODO Auto-generated method stub
846         return false;
847     }
848
849     @Override
850     public boolean nullsAreSortedLow() throws SQLException {
851         // TODO Auto-generated method stub
852         return false;
853     }
854
855     @Override
856     public boolean othersDeletesAreVisible(final int type) throws SQLException {
857         // TODO Auto-generated method stub
858         return false;
859     }
860
861     @Override
862     public boolean othersInsertsAreVisible(final int type) throws SQLException {
863         // TODO Auto-generated method stub
864         return false;
865     }
866
867     @Override
868     public boolean othersUpdatesAreVisible(final int type) throws SQLException {
869         // TODO Auto-generated method stub
870         return false;
871     }
872
873     @Override
874     public boolean ownDeletesAreVisible(final int type) throws SQLException {
875         // TODO Auto-generated method stub
876         return false;
877     }
878
879     @Override
880     public boolean ownInsertsAreVisible(final int type) throws SQLException {
881         // TODO Auto-generated method stub
882         return false;
883     }
884
885     @Override
886     public boolean ownUpdatesAreVisible(final int type) throws SQLException {
887         // TODO Auto-generated method stub
888         return false;
889     }
890
891     @Override
892     public boolean storesLowerCaseIdentifiers() throws SQLException {
893         // TODO Auto-generated method stub
894         return false;
895     }
896
897     @Override
898     public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
899         // TODO Auto-generated method stub
900         return false;
901     }
902
903     @Override
904     public boolean storesMixedCaseIdentifiers() throws SQLException {
905         // TODO Auto-generated method stub
906         return false;
907     }
908
909     @Override
910     public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
911         // TODO Auto-generated method stub
912         return false;
913     }
914
915     @Override
916     public boolean storesUpperCaseIdentifiers() throws SQLException {
917         // TODO Auto-generated method stub
918         return false;
919     }
920
921     @Override
922     public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
923         // TODO Auto-generated method stub
924         return false;
925     }
926
927     @Override
928     public boolean supportsAlterTableWithAddColumn() throws SQLException {
929         // TODO Auto-generated method stub
930         return false;
931     }
932
933     @Override
934     public boolean supportsAlterTableWithDropColumn() throws SQLException {
935         // TODO Auto-generated method stub
936         return false;
937     }
938
939     @Override
940     public boolean supportsANSI92EntryLevelSQL() throws SQLException {
941         // TODO Auto-generated method stub
942         return false;
943     }
944
945     @Override
946     public boolean supportsANSI92FullSQL() throws SQLException {
947         // TODO Auto-generated method stub
948         return false;
949     }
950
951     @Override
952     public boolean supportsANSI92IntermediateSQL() throws SQLException {
953         // TODO Auto-generated method stub
954         return false;
955     }
956
957     @Override
958     public boolean supportsBatchUpdates() throws SQLException {
959         // TODO Auto-generated method stub
960         return false;
961     }
962
963     @Override
964     public boolean supportsCatalogsInDataManipulation() throws SQLException {
965         // TODO Auto-generated method stub
966         return false;
967     }
968
969     @Override
970     public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
971         // TODO Auto-generated method stub
972         return false;
973     }
974
975     @Override
976     public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
977         // TODO Auto-generated method stub
978         return false;
979     }
980
981     @Override
982     public boolean supportsCatalogsInProcedureCalls() throws SQLException {
983         // TODO Auto-generated method stub
984         return false;
985     }
986
987     @Override
988     public boolean supportsCatalogsInTableDefinitions() throws SQLException {
989         // TODO Auto-generated method stub
990         return false;
991     }
992
993     @Override
994     public boolean supportsColumnAliasing() throws SQLException {
995         // TODO Auto-generated method stub
996         return false;
997     }
998
999     @Override
1000     public boolean supportsConvert() throws SQLException {
1001         // TODO Auto-generated method stub
1002         return false;
1003     }
1004
1005     @Override
1006     public boolean supportsConvert(final int fromType, final int toType)
1007             throws SQLException {
1008         // TODO Auto-generated method stub
1009         return false;
1010     }
1011
1012     @Override
1013     public boolean supportsCoreSQLGrammar() throws SQLException {
1014         // TODO Auto-generated method stub
1015         return false;
1016     }
1017
1018     @Override
1019     public boolean supportsCorrelatedSubqueries() throws SQLException {
1020         // TODO Auto-generated method stub
1021         return false;
1022     }
1023
1024     @Override
1025     public boolean supportsDataDefinitionAndDataManipulationTransactions()
1026             throws SQLException {
1027         // TODO Auto-generated method stub
1028         return false;
1029     }
1030
1031     @Override
1032     public boolean supportsDataManipulationTransactionsOnly()
1033             throws SQLException {
1034         // TODO Auto-generated method stub
1035         return false;
1036     }
1037
1038     @Override
1039     public boolean supportsDifferentTableCorrelationNames() throws SQLException {
1040         // TODO Auto-generated method stub
1041         return false;
1042     }
1043
1044     @Override
1045     public boolean supportsExpressionsInOrderBy() throws SQLException {
1046         // TODO Auto-generated method stub
1047         return false;
1048     }
1049
1050     @Override
1051     public boolean supportsExtendedSQLGrammar() throws SQLException {
1052         // TODO Auto-generated method stub
1053         return false;
1054     }
1055
1056     @Override
1057     public boolean supportsFullOuterJoins() throws SQLException {
1058         // TODO Auto-generated method stub
1059         return false;
1060     }
1061
1062     @Override
1063     public boolean supportsGetGeneratedKeys() throws SQLException {
1064         // TODO Auto-generated method stub
1065         return false;
1066     }
1067
1068     @Override
1069     public boolean supportsGroupBy() throws SQLException {
1070         // TODO Auto-generated method stub
1071         return false;
1072     }
1073
1074     @Override
1075     public boolean supportsGroupByBeyondSelect() throws SQLException {
1076         // TODO Auto-generated method stub
1077         return false;
1078     }
1079
1080     @Override
1081     public boolean supportsGroupByUnrelated() throws SQLException {
1082         // TODO Auto-generated method stub
1083         return false;
1084     }
1085
1086     @Override
1087     public boolean supportsIntegrityEnhancementFacility() throws SQLException {
1088         // TODO Auto-generated method stub
1089         return false;
1090     }
1091
1092     @Override
1093     public boolean supportsLikeEscapeClause() throws SQLException {
1094         // TODO Auto-generated method stub
1095         return false;
1096     }
1097
1098     @Override
1099     public boolean supportsLimitedOuterJoins() throws SQLException {
1100         // TODO Auto-generated method stub
1101         return false;
1102     }
1103
1104     @Override
1105     public boolean supportsMinimumSQLGrammar() throws SQLException {
1106         // TODO Auto-generated method stub
1107         return false;
1108     }
1109
1110     @Override
1111     public boolean supportsMixedCaseIdentifiers() throws SQLException {
1112         // TODO Auto-generated method stub
1113         return false;
1114     }
1115
1116     @Override
1117     public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
1118         // TODO Auto-generated method stub
1119         return false;
1120     }
1121
1122     @Override
1123     public boolean supportsMultipleOpenResults() throws SQLException {
1124         // TODO Auto-generated method stub
1125         return false;
1126     }
1127
1128     @Override
1129     public boolean supportsMultipleResultSets() throws SQLException {
1130         // TODO Auto-generated method stub
1131         return false;
1132     }
1133
1134     @Override
1135     public boolean supportsMultipleTransactions() throws SQLException {
1136         // TODO Auto-generated method stub
1137         return false;
1138     }
1139
1140     @Override
1141     public boolean supportsNamedParameters() throws SQLException {
1142         // TODO Auto-generated method stub
1143         return false;
1144     }
1145
1146     @Override
1147     public boolean supportsNonNullableColumns() throws SQLException {
1148         // TODO Auto-generated method stub
1149         return false;
1150     }
1151
1152     @Override
1153     public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
1154         // TODO Auto-generated method stub
1155         return false;
1156     }
1157
1158     @Override
1159     public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
1160         // TODO Auto-generated method stub
1161         return false;
1162     }
1163
1164     @Override
1165     public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
1166         // TODO Auto-generated method stub
1167         return false;
1168     }
1169
1170     @Override
1171     public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
1172         // TODO Auto-generated method stub
1173         return false;
1174     }
1175
1176     @Override
1177     public boolean supportsOrderByUnrelated() throws SQLException {
1178         // TODO Auto-generated method stub
1179         return false;
1180     }
1181
1182     @Override
1183     public boolean supportsOuterJoins() throws SQLException {
1184         // TODO Auto-generated method stub
1185         return false;
1186     }
1187
1188     @Override
1189     public boolean supportsPositionedDelete() throws SQLException {
1190         // TODO Auto-generated method stub
1191         return false;
1192     }
1193
1194     @Override
1195     public boolean supportsPositionedUpdate() throws SQLException {
1196         // TODO Auto-generated method stub
1197         return false;
1198     }
1199
1200     @Override
1201     public boolean supportsResultSetConcurrency(final int type, final int concurrency)
1202             throws SQLException {
1203         // TODO Auto-generated method stub
1204         return false;
1205     }
1206
1207     @Override
1208     public boolean supportsResultSetHoldability(final int holdability)
1209             throws SQLException {
1210         // TODO Auto-generated method stub
1211         return false;
1212     }
1213
1214     @Override
1215     public boolean supportsResultSetType(final int type) throws SQLException {
1216         // TODO Auto-generated method stub
1217         return false;
1218     }
1219
1220     @Override
1221     public boolean supportsSavepoints() throws SQLException {
1222         // TODO Auto-generated method stub
1223         return false;
1224     }
1225
1226     @Override
1227     public boolean supportsSchemasInDataManipulation() throws SQLException {
1228         // TODO Auto-generated method stub
1229         return false;
1230     }
1231
1232     @Override
1233     public boolean supportsSchemasInIndexDefinitions() throws SQLException {
1234         // TODO Auto-generated method stub
1235         return false;
1236     }
1237
1238     @Override
1239     public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
1240         // TODO Auto-generated method stub
1241         return false;
1242     }
1243
1244     @Override
1245     public boolean supportsSchemasInProcedureCalls() throws SQLException {
1246         // TODO Auto-generated method stub
1247         return false;
1248     }
1249
1250     @Override
1251     public boolean supportsSchemasInTableDefinitions() throws SQLException {
1252         // TODO Auto-generated method stub
1253         return false;
1254     }
1255
1256     @Override
1257     public boolean supportsSelectForUpdate() throws SQLException {
1258         // TODO Auto-generated method stub
1259         return false;
1260     }
1261
1262     @Override
1263     public boolean supportsStatementPooling() throws SQLException {
1264         // TODO Auto-generated method stub
1265         return false;
1266     }
1267
1268     @Override
1269     public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
1270         // TODO Auto-generated method stub
1271         return false;
1272     }
1273
1274     @Override
1275     public boolean supportsStoredProcedures() throws SQLException {
1276         // TODO Auto-generated method stub
1277         return false;
1278     }
1279
1280     @Override
1281     public boolean supportsSubqueriesInComparisons() throws SQLException {
1282         // TODO Auto-generated method stub
1283         return false;
1284     }
1285
1286     @Override
1287     public boolean supportsSubqueriesInExists() throws SQLException {
1288         // TODO Auto-generated method stub
1289         return false;
1290     }
1291
1292     @Override
1293     public boolean supportsSubqueriesInIns() throws SQLException {
1294         // TODO Auto-generated method stub
1295         return false;
1296     }
1297
1298     @Override
1299     public boolean supportsSubqueriesInQuantifieds() throws SQLException {
1300         // TODO Auto-generated method stub
1301         return false;
1302     }
1303
1304     @Override
1305     public boolean supportsTableCorrelationNames() throws SQLException {
1306         // TODO Auto-generated method stub
1307         return false;
1308     }
1309
1310     @Override
1311     public boolean supportsTransactionIsolationLevel(final int level)
1312             throws SQLException {
1313         // TODO Auto-generated method stub
1314         return false;
1315     }
1316
1317     @Override
1318     public boolean supportsTransactions() throws SQLException {
1319         // TODO Auto-generated method stub
1320         return false;
1321     }
1322
1323     @Override
1324     public boolean supportsUnion() throws SQLException {
1325         // TODO Auto-generated method stub
1326         return false;
1327     }
1328
1329     @Override
1330     public boolean supportsUnionAll() throws SQLException {
1331         // TODO Auto-generated method stub
1332         return false;
1333     }
1334
1335     @Override
1336     public boolean updatesAreDetected(final int type) throws SQLException {
1337         // TODO Auto-generated method stub
1338         return false;
1339     }
1340
1341     @Override
1342     public boolean usesLocalFilePerTable() throws SQLException {
1343         // TODO Auto-generated method stub
1344         return false;
1345     }
1346
1347     @Override
1348     public boolean usesLocalFiles() throws SQLException {
1349         // TODO Auto-generated method stub
1350         return false;
1351     }
1352
1353     @Override
1354     public boolean isWrapperFor(final Class<?> iface) throws SQLException {
1355         // TODO Auto-generated method stub
1356         return false;
1357     }
1358
1359     @Override
1360     public <T> T unwrap(final Class<T> iface) throws SQLException {
1361         // TODO Auto-generated method stub
1362         return null;
1363     }
1364
1365     @Override
1366     public ResultSet getPseudoColumns(final String catalog, final String schemaPattern,
1367             final String tableNamePattern, final String columnNamePattern)
1368             throws SQLException {
1369         // TODO Auto-generated method stub
1370         return null;
1371     }
1372
1373     @Override
1374     public boolean generatedKeyAlwaysReturned() throws SQLException {
1375         // TODO Auto-generated method stub
1376         return false;
1377     }
1378 }