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