Merge "BUG 2854 : Do not add empty read write transactions to the replicable journal"
[controller.git] / opendaylight / md-sal / sal-dom-xsql / src / main / java / org / opendaylight / controller / md / sal / dom / xsql / jdbc / JDBCResultSet.java
1 package org.opendaylight.controller.md.sal.dom.xsql.jdbc;
2
3 import java.io.InputStream;
4 import java.io.Reader;
5 import java.io.Serializable;
6 import java.lang.reflect.Method;
7 import java.lang.reflect.Proxy;
8 import java.math.BigDecimal;
9 import java.net.URL;
10 import java.sql.Array;
11 import java.sql.Blob;
12 import java.sql.Clob;
13 import java.sql.Date;
14 import java.sql.NClob;
15 import java.sql.Ref;
16 import java.sql.ResultSet;
17 import java.sql.ResultSetMetaData;
18 import java.sql.RowId;
19 import java.sql.SQLException;
20 import java.sql.SQLWarning;
21 import java.sql.SQLXML;
22 import java.sql.Statement;
23 import java.sql.Time;
24 import java.sql.Timestamp;
25 import java.util.ArrayList;
26 import java.util.Calendar;
27 import java.util.HashMap;
28 import java.util.HashSet;
29 import java.util.LinkedList;
30 import java.util.List;
31 import java.util.Map;
32 import java.util.Set;
33 import java.util.concurrent.ConcurrentHashMap;
34
35 import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrint;
36 import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrintNode;
37 import org.opendaylight.controller.md.sal.dom.xsql.XSQLColumn;
38 import org.opendaylight.controller.md.sal.dom.xsql.XSQLCriteria;
39 import org.opendaylight.controller.md.sal.dom.xsql.XSQLODLUtils;
40
41 public class JDBCResultSet implements Serializable, ResultSet,
42         ResultSetMetaData {
43     private static final long serialVersionUID = -7450200738431047057L;
44     private static final ClassLoader CLASS_LOADER = JDBCResultSet.class.getClassLoader();
45     private static final Class<?>[] PROXY_INTERFACES = new Class[] { ResultSet.class };
46     private static int nextID = 0;
47
48     private String sql = null;
49     private List<XSQLBluePrintNode> tablesInQuery = new ArrayList<XSQLBluePrintNode>();
50     private Map<String, XSQLBluePrintNode> tablesInQueryMap = new ConcurrentHashMap<String, XSQLBluePrintNode>();
51     private List<XSQLColumn> fieldsInQuery = new ArrayList<XSQLColumn>();
52     private transient LinkedList<Map<String, Object>> records = new LinkedList<>();
53     private transient Map<String, Object> currentRecord = null;
54     private boolean finished = false;
55     private int id = 0;
56     public int numberOfTasks = 0;
57     private Map<String, Map<XSQLColumn, List<XSQLCriteria>>> criteria = new ConcurrentHashMap<String, Map<XSQLColumn, List<XSQLCriteria>>>();
58     private Exception err = null;
59     private List<Record> EMPTY_RESULT = new LinkedList<Record>();
60     private transient Map<String,JDBCResultSet> subQueries = new HashMap<String,JDBCResultSet>();
61
62     public ResultSet getProxy() {
63          return (ResultSet) Proxy.newProxyInstance(CLASS_LOADER, PROXY_INTERFACES, new JDBCProxy(this));
64     }
65
66     public void setSQL(String _sql) {
67         this.sql = _sql;
68     }
69
70     public JDBCResultSet addSubQuery(String _sql,String logicalName) {
71         if (subQueries == null) {
72             subQueries = new HashMap<String,JDBCResultSet>();
73         }
74         JDBCResultSet rs = new JDBCResultSet(_sql);
75         this.subQueries.put(logicalName,rs);
76         return rs;
77     }
78
79     public Map<String,JDBCResultSet> getSubQueries() {
80         if (this.subQueries==null) {
81             this.subQueries = new HashMap<>();
82         }
83         return this.subQueries;
84     }
85
86     public JDBCResultSet(String _sql) {
87         synchronized (JDBCResultSet.class) {
88             nextID++;
89             id = nextID;
90         }
91         this.sql = _sql;
92     }
93
94     public String getSQL() {
95         return this.sql;
96     }
97
98     public void setError(Exception _err) {
99         this.err = _err;
100     }
101
102     public Exception getError() {
103         return this.err;
104     }
105
106     public void updateData(JDBCResultSet rs) {
107         synchronized (this) {
108             this.tablesInQuery = rs.tablesInQuery;
109             this.tablesInQueryMap = rs.tablesInQueryMap;
110             this.fieldsInQuery = rs.fieldsInQuery;
111             this.notifyAll();
112         }
113     }
114
115     public int isObjectFitCriteria(Map<String, Object> objValues, String tableName) {
116         Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria
117                 .get(tableName);
118         if (tblCriteria == null) {
119             return 1;
120         }
121         for (Map.Entry<XSQLColumn, List<XSQLCriteria>> cc : tblCriteria
122                 .entrySet()) {
123             for (XSQLCriteria c : cc.getValue()) {
124                 Object value = objValues.get(cc.getKey().toString());
125                 int result = c.checkValue(value);
126                 if (result == 0) {
127                     return 0;
128                 }
129             }
130         }
131         return 1;
132     }
133
134     public int isObjectFitCriteria(Object element, Class<?> cls) {
135         Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria.get(cls
136                 .getName());
137         if (tblCriteria == null) {
138             return 1;
139         }
140         for (Map.Entry<XSQLColumn, List<XSQLCriteria>> cc : tblCriteria
141                 .entrySet()) {
142             for (XSQLCriteria c : cc.getValue()) {
143                 int result = c.isObjectFitCriteria(element, cc.getKey()
144                         .getName());
145                 if (result == 0) {
146                     return 0;
147                 }
148             }
149         }
150         return 1;
151     }
152
153     public Map<String, Map<XSQLColumn, List<XSQLCriteria>>> getCriteria() {
154         return this.criteria;
155     }
156
157     public int getID() {
158         return this.id;
159     }
160
161     public List<XSQLBluePrintNode> getTables() {
162         return tablesInQuery;
163     }
164
165     public void addTableToQuery(XSQLBluePrintNode node) {
166         if (this.tablesInQueryMap.containsKey(node.getBluePrintNodeName())) {
167             return;
168         }
169         this.tablesInQuery.add(node);
170         this.tablesInQueryMap.put(node.getBluePrintNodeName(), node);
171     }
172
173     public List<XSQLColumn> getFields() {
174         return this.fieldsInQuery;
175     }
176
177     public XSQLBluePrintNode getMainTable() {
178         if (tablesInQuery.size() == 1) {
179             return tablesInQuery.get(0);
180         }
181         XSQLBluePrintNode result = null;
182         for (XSQLBluePrintNode node : tablesInQuery) {
183             if (result == null) {
184                 result = node;
185             } else if (result.getLevel() < node.getLevel()) {
186                 result = node;
187             }
188         }
189         return result;
190     }
191
192     public boolean isFinished() {
193         return finished;
194     }
195
196     public void setFinished(boolean b) {
197         this.finished = b;
198     }
199
200     public int size() {
201         return this.records.size();
202     }
203
204     public void addRecord(Map<String, Object> r) {
205         synchronized (this) {
206             if (records == null) {
207                 records = new LinkedList<>();
208             }
209             records.add(r);
210             this.notifyAll();
211         }
212     }
213
214     public void addRecord(ArrayList<?> hierarchy) {
215         Map<String, Object> rec = new HashMap<>();
216         for (int i = hierarchy.size() - 1; i >= 0; i--) {
217             Object element = hierarchy.get(i);
218             for (XSQLColumn c : fieldsInQuery) {
219                 if (c.getTableName().equals(element.getClass().getSimpleName())) {
220                     try {
221                         Method m = element.getClass().getMethod(c.getName(),
222                                 null);
223                         Object value = m.invoke(element, null);
224                         rec.put(c.getName(), value);
225                     } catch (Exception err) {
226                         err.printStackTrace();
227                     }
228                 }
229             }
230         }
231         this.records.add(rec);
232     }
233
234     public boolean next() {
235         this.currentRecord = null;
236         if (records == null) {
237             records = new LinkedList<>();
238         }
239         while (!finished || records.size() > 0) {
240             synchronized (this) {
241                 if (records.size() == 0) {
242                     try {
243                         this.wait(1000);
244                     } catch (Exception err) {
245                     }
246                     if (records.size() > 0) {
247                         try {
248                             currentRecord = records.removeFirst();
249                             return true;
250                         } finally {
251                             this.notifyAll();
252                         }
253                     }
254                 } else {
255                     try {
256                         currentRecord = records.removeFirst();
257                         return true;
258                     } finally {
259                         this.notifyAll();
260                     }
261                 }
262             }
263         }
264         return false;
265     }
266
267     public Map<String, Object> getCurrent() {
268         return this.currentRecord;
269     }
270
271     private void createRecord(Object data, XSQLBluePrintNode node) {
272         Map<String, Object> rec = new HashMap<>();
273         for (XSQLColumn c : this.fieldsInQuery) {
274             if (c.getTableName().equals(node.getBluePrintNodeName())) {
275                 try {
276                     Method m = node.getInterface().getMethod(c.getName(), null);
277                     Object value = m.invoke(data, null);
278                     if (value != null) {
279                         rec.put(c.getName(), value);
280                     } else {
281                         rec.put(c.getName(), "");
282                     }
283                 } catch (Exception err) {
284                     err.printStackTrace();
285                 }
286
287             }
288         }
289     }
290
291     public static class Record {
292         public Map<String, Object> data = new HashMap<>();
293         public Object element = null;
294
295         public Map<String, Object> getRecord() {
296             return this.data;
297         }
298     }
299
300     private Map<String, Object> collectColumnValues(Object node, XSQLBluePrintNode bpn) {
301         Map<?, ?> subChildren = XSQLODLUtils.getChildren(node);
302         Map<String, Object> result = new HashMap<>();
303         for (Object stc : subChildren.values()) {
304             if (stc.getClass().getName().endsWith("ImmutableAugmentationNode")) {
305                 Map<?, ?> values = XSQLODLUtils.getChildren(stc);
306                 for (Object key : values.keySet()) {
307                     Object val = values.get(key);
308                     if (val.getClass().getName().endsWith("ImmutableLeafNode")) {
309                         Object value = XSQLODLUtils.getValue(val);
310                         String k = XSQLODLUtils.getNodeName(val);
311                         if (value != null) {
312                             result.put(bpn.getBluePrintNodeName() + "." + k,
313                                     value.toString());
314                         }
315                     }
316                 }
317             } else if (stc.getClass().getName().endsWith("ImmutableLeafNode")) {
318                 String k = XSQLODLUtils.getNodeName(stc);
319                 Object value = XSQLODLUtils.getValue(stc);
320                 if (value != null) {
321                     result.put(bpn.getBluePrintNodeName() + "." + k,
322                             value.toString());
323                 }
324             }
325         }
326         return result;
327     }
328
329     private void addToData(Record rec, XSQLBluePrintNode bpn,
330             XSQLBluePrint bluePrint, Map<String, Object> fullRecord) {
331         XSQLBluePrintNode eNodes[] = bluePrint
332                 .getBluePrintNodeByODLTableName(XSQLODLUtils
333                         .getNodeIdentiofier(rec.element));
334         if (bpn != null) {
335             for (XSQLColumn c : fieldsInQuery) {
336                 for (XSQLBluePrintNode eNode : eNodes) {
337                     if (((XSQLBluePrintNode) c.getBluePrintNode())
338                             .getBluePrintNodeName().equals(
339                                     eNode.getBluePrintNodeName())) {
340                         // Object value = Criteria.getValue(rec.element,
341                         // c.getName());
342                         String columnName = c.toString();
343                         Object value = fullRecord.get(columnName);
344                         if (value != null) {
345                             try {
346                                 Object rsValue = c.getResultSetValue(value);
347                                 c.setCharWidth(rsValue.toString().length());
348                                 rec.data.put(columnName, rsValue);
349                             } catch (Exception err) {
350                             }
351                         }
352                     }
353                 }
354             }
355         }
356     }
357
358     private boolean beenHere(Set<String> beenHereElement, Object element) {
359         if (beenHereElement == null) {
360             beenHereElement = new HashSet<String>();
361         }
362
363         String elementKey = null;
364
365         try {
366             elementKey = element.toString();
367         } catch (Exception err) {
368             elementKey = "Unknown";
369         }
370
371         if (beenHereElement.contains(elementKey)) {
372             return true;
373         }
374
375         beenHereElement.add(elementKey);
376         return false;
377     }
378
379     public List<Object> getChildren(Object node, String tableName,
380             XSQLBluePrint bluePrint) {
381
382         List<Object> children = XSQLODLUtils.getMChildren(node);
383         List<Object> result = new LinkedList<Object>();
384
385         for (Object child : children) {
386
387             String odlNodeName = XSQLODLUtils.getNodeIdentiofier(child);
388             if (odlNodeName == null) {
389                 continue;
390             }
391
392             XSQLBluePrintNode eNodes[] = bluePrint
393                     .getBluePrintNodeByODLTableName(odlNodeName);
394             if (eNodes == null) {
395                 continue;
396             }
397
398             boolean match = false;
399             for (XSQLBluePrintNode enode : eNodes) {
400                 if (tableName.startsWith(enode.toString())) {
401                     match = true;
402                     break;
403                 }
404             }
405
406             if (!match) {
407                 continue;
408             }
409
410             if (child.getClass().getName().endsWith("ImmutableContainerNode")) {
411                 result.add(child);
412             } else if (child.getClass().getName()
413                     .endsWith("ImmutableAugmentationNode")) {
414                 List<Object> _children = XSQLODLUtils.getMChildren(child);
415                 for (Object c : _children) {
416                     if (c.getClass().getName()
417                             .endsWith("ImmutableContainerNode")) {
418                         result.add(c);
419                     }
420                 }
421             } else if (child.getClass().getName().endsWith("ImmutableMapNode")) {
422                 result.addAll(XSQLODLUtils.getMChildren(child));
423             }
424         }
425         return result;
426     }
427
428     public List<Record> addRecords(Object element, XSQLBluePrintNode node,boolean root, String tableName, XSQLBluePrint bluePrint) {
429         List<Record> result = new LinkedList<Record>();
430         //In case this is a sibling to the requested table, the elenment type
431         //won't be in the path of the leaf node
432         if(node==null){
433             return result;
434         }
435         String nodeID = XSQLODLUtils.getNodeIdentiofier(element);
436         if (node.getODLTableName().equals(nodeID)) {
437             XSQLBluePrintNode bluePrintNode = bluePrint.getBluePrintNodeByODLTableName(nodeID)[0];
438             Record rec = new Record();
439             rec.element = element;
440             XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode.getBluePrintNodeName());
441             if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName()) || bpn != null) {
442                 Map<String, Object> allKeyValues = collectColumnValues(element, bpn);
443                 if (!(isObjectFitCriteria(allKeyValues,
444                         bpn.getBluePrintNodeName()) == 1)) {
445                     return EMPTY_RESULT;
446                 }
447                 addToData(rec, bpn, bluePrint, allKeyValues);
448             }
449             if (root) {
450                 addRecord(rec.data);
451             } else {
452                 result.add(rec);
453             }
454             return result;
455         }
456
457         XSQLBluePrintNode parent = node.getParent();
458         List<Record> subRecords = addRecords(element, parent, false, tableName,bluePrint);
459         for (Record subRec : subRecords) {
460             List<Object> subO = getChildren(subRec.element, tableName,
461                     bluePrint);
462             if (subO != null) {
463                 for (Object subData : subO) {
464                     Record rec = new Record();
465                     rec.element = subData;
466                     rec.data.putAll(subRec.data);
467
468                     String recID = XSQLODLUtils.getNodeIdentiofier(rec.element);
469                     XSQLBluePrintNode eNodes[] = bluePrint
470                             .getBluePrintNodeByODLTableName(recID);
471                     XSQLBluePrintNode bpn = null;
472                     for (XSQLBluePrintNode eNode : eNodes) {
473                         bpn = this.tablesInQueryMap.get(eNode
474                                 .getBluePrintNodeName());
475                         if (bpn != null) {
476                             break;
477                         }
478                     }
479                     boolean isObjectInCriteria = true;
480                     if (bpn != null) {
481                         Map<String, Object> allKeyValues = collectColumnValues(rec.element, bpn);
482                         if ((isObjectFitCriteria(allKeyValues,
483                                 bpn.getBluePrintNodeName()) == 1)) {
484                             addToData(rec, bpn, bluePrint, allKeyValues);
485                         } else {
486                             isObjectInCriteria = false;
487                         }
488                     }
489
490                     if (isObjectInCriteria) {
491                         if (root) {
492                             if (!rec.data.isEmpty()) {
493                                 addRecord(rec.data);
494                             }
495                         } else {
496                             result.add(rec);
497                         }
498                     }
499                 }
500             }
501         }
502
503         return result;
504     }
505
506     @Override
507     public boolean isWrapperFor(Class<?> iface) throws SQLException {
508         // TODO Auto-generated method stub
509         return false;
510     }
511
512     @Override
513     public <T> T unwrap(Class<T> iface) throws SQLException {
514         // TODO Auto-generated method stub
515         return null;
516     }
517
518     @Override
519     public boolean absolute(int row) throws SQLException {
520         // TODO Auto-generated method stub
521         return false;
522     }
523
524     @Override
525     public void afterLast() throws SQLException {
526         // TODO Auto-generated method stub
527
528     }
529
530     @Override
531     public void beforeFirst() throws SQLException {
532         // TODO Auto-generated method stub
533
534     }
535
536     @Override
537     public void cancelRowUpdates() throws SQLException {
538         // TODO Auto-generated method stub
539
540     }
541
542     @Override
543     public void clearWarnings() throws SQLException {
544         // TODO Auto-generated method stub
545
546     }
547
548     @Override
549     public void close() throws SQLException {
550         // TODO Auto-generated method stub
551
552     }
553
554     @Override
555     public void deleteRow() throws SQLException {
556         // TODO Auto-generated method stub
557
558     }
559
560     @Override
561     public int findColumn(String columnLabel) throws SQLException {
562         // TODO Auto-generated method stub
563         return 0;
564     }
565
566     @Override
567     public boolean first() throws SQLException {
568         // TODO Auto-generated method stub
569         return false;
570     }
571
572     @Override
573     public Array getArray(int columnIndex) throws SQLException {
574         // TODO Auto-generated method stub
575         return null;
576     }
577
578     @Override
579     public Array getArray(String columnLabel) throws SQLException {
580         // TODO Auto-generated method stub
581         return null;
582     }
583
584     @Override
585     public InputStream getAsciiStream(int columnIndex) throws SQLException {
586         // TODO Auto-generated method stub
587         return null;
588     }
589
590     @Override
591     public InputStream getAsciiStream(String columnLabel) throws SQLException {
592         // TODO Auto-generated method stub
593         return null;
594     }
595
596     @Override
597     public BigDecimal getBigDecimal(int columnIndex, int scale)
598             throws SQLException {
599         // TODO Auto-generated method stub
600         return null;
601     }
602
603     @Override
604     public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
605         // TODO Auto-generated method stub
606         return null;
607     }
608
609     @Override
610     public BigDecimal getBigDecimal(String columnLabel, int scale)
611             throws SQLException {
612         // TODO Auto-generated method stub
613         return null;
614     }
615
616     @Override
617     public BigDecimal getBigDecimal(String columnLabel) throws SQLException {
618         // TODO Auto-generated method stub
619         return null;
620     }
621
622     @Override
623     public InputStream getBinaryStream(int columnIndex) throws SQLException {
624         // TODO Auto-generated method stub
625         return null;
626     }
627
628     @Override
629     public InputStream getBinaryStream(String columnLabel) throws SQLException {
630         // TODO Auto-generated method stub
631         return null;
632     }
633
634     @Override
635     public Blob getBlob(int columnIndex) throws SQLException {
636         // TODO Auto-generated method stub
637         return null;
638     }
639
640     @Override
641     public Blob getBlob(String columnLabel) throws SQLException {
642         // TODO Auto-generated method stub
643         return null;
644     }
645
646     @Override
647     public boolean getBoolean(int columnIndex) throws SQLException {
648         // TODO Auto-generated method stub
649         return false;
650     }
651
652     @Override
653     public boolean getBoolean(String columnLabel) throws SQLException {
654         // TODO Auto-generated method stub
655         return false;
656     }
657
658     @Override
659     public byte getByte(int columnIndex) throws SQLException {
660         // TODO Auto-generated method stub
661         return 0;
662     }
663
664     @Override
665     public byte getByte(String columnLabel) throws SQLException {
666         // TODO Auto-generated method stub
667         return 0;
668     }
669
670     @Override
671     public byte[] getBytes(int columnIndex) throws SQLException {
672         // TODO Auto-generated method stub
673         return null;
674     }
675
676     @Override
677     public byte[] getBytes(String columnLabel) throws SQLException {
678         // TODO Auto-generated method stub
679         return null;
680     }
681
682     @Override
683     public Reader getCharacterStream(int columnIndex) throws SQLException {
684         // TODO Auto-generated method stub
685         return null;
686     }
687
688     @Override
689     public Reader getCharacterStream(String columnLabel) throws SQLException {
690         // TODO Auto-generated method stub
691         return null;
692     }
693
694     @Override
695     public Clob getClob(int columnIndex) throws SQLException {
696         // TODO Auto-generated method stub
697         return null;
698     }
699
700     @Override
701     public Clob getClob(String columnLabel) throws SQLException {
702         // TODO Auto-generated method stub
703         return null;
704     }
705
706     @Override
707     public int getConcurrency() throws SQLException {
708         // TODO Auto-generated method stub
709         return 0;
710     }
711
712     @Override
713     public String getCursorName() throws SQLException {
714         // TODO Auto-generated method stub
715         return null;
716     }
717
718     @Override
719     public Date getDate(int columnIndex, Calendar cal) throws SQLException {
720         // TODO Auto-generated method stub
721         return null;
722     }
723
724     @Override
725     public Date getDate(int columnIndex) throws SQLException {
726         // TODO Auto-generated method stub
727         return null;
728     }
729
730     @Override
731     public Date getDate(String columnLabel, Calendar cal) throws SQLException {
732         // TODO Auto-generated method stub
733         return null;
734     }
735
736     @Override
737     public Date getDate(String columnLabel) throws SQLException {
738         // TODO Auto-generated method stub
739         return null;
740     }
741
742     @Override
743     public double getDouble(int columnIndex) throws SQLException {
744         // TODO Auto-generated method stub
745         return 0;
746     }
747
748     @Override
749     public double getDouble(String columnLabel) throws SQLException {
750         // TODO Auto-generated method stub
751         return 0;
752     }
753
754     @Override
755     public int getFetchDirection() throws SQLException {
756         // TODO Auto-generated method stub
757         return 0;
758     }
759
760     @Override
761     public int getFetchSize() throws SQLException {
762         // TODO Auto-generated method stub
763         return 0;
764     }
765
766     @Override
767     public float getFloat(int columnIndex) throws SQLException {
768         // TODO Auto-generated method stub
769         return 0;
770     }
771
772     @Override
773     public float getFloat(String columnLabel) throws SQLException {
774         // TODO Auto-generated method stub
775         return 0;
776     }
777
778     @Override
779     public int getHoldability() throws SQLException {
780         // TODO Auto-generated method stub
781         return 0;
782     }
783
784     @Override
785     public int getInt(int columnIndex) throws SQLException {
786         // TODO Auto-generated method stub
787         return 0;
788     }
789
790     @Override
791     public int getInt(String columnLabel) throws SQLException {
792         // TODO Auto-generated method stub
793         return 0;
794     }
795
796     @Override
797     public long getLong(int columnIndex) throws SQLException {
798         // TODO Auto-generated method stub
799         return 0;
800     }
801
802     @Override
803     public long getLong(String columnLabel) throws SQLException {
804         // TODO Auto-generated method stub
805         return 0;
806     }
807
808     @Override
809     public ResultSetMetaData getMetaData() throws SQLException {
810         return this;
811     }
812
813     @Override
814     public Reader getNCharacterStream(int columnIndex) throws SQLException {
815         // TODO Auto-generated method stub
816         return null;
817     }
818
819     @Override
820     public Reader getNCharacterStream(String columnLabel) throws SQLException {
821         // TODO Auto-generated method stub
822         return null;
823     }
824
825     @Override
826     public NClob getNClob(int columnIndex) throws SQLException {
827         // TODO Auto-generated method stub
828         return null;
829     }
830
831     @Override
832     public NClob getNClob(String columnLabel) throws SQLException {
833         // TODO Auto-generated method stub
834         return null;
835     }
836
837     @Override
838     public String getNString(int columnIndex) throws SQLException {
839         // TODO Auto-generated method stub
840         return null;
841     }
842
843     @Override
844     public String getNString(String columnLabel) throws SQLException {
845         // TODO Auto-generated method stub
846         return null;
847     }
848
849     @Override
850     public Object getObject(int columnIndex, Map<String, Class<?>> map)
851             throws SQLException {
852         return getObject(columnIndex);
853     }
854
855     @Override
856     public Object getObject(int columnIndex) throws SQLException {
857         return currentRecord.get(this.fieldsInQuery.get(columnIndex - 1)
858                 .toString());
859     }
860
861     @Override
862     public Object getObject(String columnLabel, Map<String, Class<?>> map)
863             throws SQLException {
864         return getObject(columnLabel);
865     }
866
867     @Override
868     public Object getObject(String columnLabel) throws SQLException {
869         return currentRecord.get(columnLabel);
870     }
871
872     @Override
873     public Ref getRef(int columnIndex) throws SQLException {
874         // TODO Auto-generated method stub
875         return null;
876     }
877
878     @Override
879     public Ref getRef(String columnLabel) throws SQLException {
880         // TODO Auto-generated method stub
881         return null;
882     }
883
884     @Override
885     public int getRow() throws SQLException {
886         // TODO Auto-generated method stub
887         return 0;
888     }
889
890     @Override
891     public RowId getRowId(int columnIndex) throws SQLException {
892         // TODO Auto-generated method stub
893         return null;
894     }
895
896     @Override
897     public RowId getRowId(String columnLabel) throws SQLException {
898         // TODO Auto-generated method stub
899         return null;
900     }
901
902     @Override
903     public SQLXML getSQLXML(int columnIndex) throws SQLException {
904         // TODO Auto-generated method stub
905         return null;
906     }
907
908     @Override
909     public SQLXML getSQLXML(String columnLabel) throws SQLException {
910         // TODO Auto-generated method stub
911         return null;
912     }
913
914     @Override
915     public short getShort(int columnIndex) throws SQLException {
916         // TODO Auto-generated method stub
917         return 0;
918     }
919
920     @Override
921     public short getShort(String columnLabel) throws SQLException {
922         // TODO Auto-generated method stub
923         return 0;
924     }
925
926     @Override
927     public Statement getStatement() throws SQLException {
928         // TODO Auto-generated method stub
929         return null;
930     }
931
932     @Override
933     public String getString(int columnIndex) throws SQLException {
934         return "Kuku";
935     }
936
937     @Override
938     public String getString(String columnLabel) throws SQLException {
939         return "Kuku";
940     }
941
942     @Override
943     public Time getTime(int columnIndex, Calendar cal) throws SQLException {
944         // TODO Auto-generated method stub
945         return null;
946     }
947
948     @Override
949     public Time getTime(int columnIndex) throws SQLException {
950         // TODO Auto-generated method stub
951         return null;
952     }
953
954     @Override
955     public Time getTime(String columnLabel, Calendar cal) throws SQLException {
956         // TODO Auto-generated method stub
957         return null;
958     }
959
960     @Override
961     public Time getTime(String columnLabel) throws SQLException {
962         // TODO Auto-generated method stub
963         return null;
964     }
965
966     @Override
967     public Timestamp getTimestamp(int columnIndex, Calendar cal)
968             throws SQLException {
969         // TODO Auto-generated method stub
970         return null;
971     }
972
973     @Override
974     public Timestamp getTimestamp(int columnIndex) throws SQLException {
975         // TODO Auto-generated method stub
976         return null;
977     }
978
979     @Override
980     public Timestamp getTimestamp(String columnLabel, Calendar cal)
981             throws SQLException {
982         // TODO Auto-generated method stub
983         return null;
984     }
985
986     @Override
987     public Timestamp getTimestamp(String columnLabel) throws SQLException {
988         // TODO Auto-generated method stub
989         return null;
990     }
991
992     @Override
993     public int getType() throws SQLException {
994         return ResultSet.TYPE_FORWARD_ONLY;
995     }
996
997     @Override
998     public URL getURL(int columnIndex) throws SQLException {
999         // TODO Auto-generated method stub
1000         return null;
1001     }
1002
1003     @Override
1004     public URL getURL(String columnLabel) throws SQLException {
1005         // TODO Auto-generated method stub
1006         return null;
1007     }
1008
1009     @Override
1010     public InputStream getUnicodeStream(int columnIndex) throws SQLException {
1011         // TODO Auto-generated method stub
1012         return null;
1013     }
1014
1015     @Override
1016     public InputStream getUnicodeStream(String columnLabel) throws SQLException {
1017         // TODO Auto-generated method stub
1018         return null;
1019     }
1020
1021     @Override
1022     public SQLWarning getWarnings() throws SQLException {
1023         // TODO Auto-generated method stub
1024         return null;
1025     }
1026
1027     @Override
1028     public void insertRow() throws SQLException {
1029         // TODO Auto-generated method stub
1030
1031     }
1032
1033     @Override
1034     public boolean isAfterLast() throws SQLException {
1035         // TODO Auto-generated method stub
1036         return false;
1037     }
1038
1039     @Override
1040     public boolean isBeforeFirst() throws SQLException {
1041         // TODO Auto-generated method stub
1042         return false;
1043     }
1044
1045     @Override
1046     public boolean isClosed() throws SQLException {
1047         // TODO Auto-generated method stub
1048         return false;
1049     }
1050
1051     @Override
1052     public boolean isFirst() throws SQLException {
1053         // TODO Auto-generated method stub
1054         return false;
1055     }
1056
1057     @Override
1058     public boolean isLast() throws SQLException {
1059         // TODO Auto-generated method stub
1060         return false;
1061     }
1062
1063     @Override
1064     public boolean last() throws SQLException {
1065         // TODO Auto-generated method stub
1066         return false;
1067     }
1068
1069     @Override
1070     public void moveToCurrentRow() throws SQLException {
1071         // TODO Auto-generated method stub
1072
1073     }
1074
1075     @Override
1076     public void moveToInsertRow() throws SQLException {
1077         // TODO Auto-generated method stub
1078
1079     }
1080
1081     @Override
1082     public boolean previous() throws SQLException {
1083         // TODO Auto-generated method stub
1084         return false;
1085     }
1086
1087     @Override
1088     public void refreshRow() throws SQLException {
1089         // TODO Auto-generated method stub
1090
1091     }
1092
1093     @Override
1094     public boolean relative(int rows) throws SQLException {
1095         // TODO Auto-generated method stub
1096         return false;
1097     }
1098
1099     @Override
1100     public boolean rowDeleted() throws SQLException {
1101         // TODO Auto-generated method stub
1102         return false;
1103     }
1104
1105     @Override
1106     public boolean rowInserted() throws SQLException {
1107         // TODO Auto-generated method stub
1108         return false;
1109     }
1110
1111     @Override
1112     public boolean rowUpdated() throws SQLException {
1113         // TODO Auto-generated method stub
1114         return false;
1115     }
1116
1117     @Override
1118     public void setFetchDirection(int direction) throws SQLException {
1119         // TODO Auto-generated method stub
1120
1121     }
1122
1123     @Override
1124     public void setFetchSize(int rows) throws SQLException {
1125         // TODO Auto-generated method stub
1126
1127     }
1128
1129     @Override
1130     public void updateArray(int columnIndex, Array x) throws SQLException {
1131         // TODO Auto-generated method stub
1132
1133     }
1134
1135     @Override
1136     public void updateArray(String columnLabel, Array x) throws SQLException {
1137         // TODO Auto-generated method stub
1138
1139     }
1140
1141     @Override
1142     public void updateAsciiStream(int columnIndex, InputStream x, int length)
1143             throws SQLException {
1144         // TODO Auto-generated method stub
1145
1146     }
1147
1148     @Override
1149     public void updateAsciiStream(int columnIndex, InputStream x, long length)
1150             throws SQLException {
1151         // TODO Auto-generated method stub
1152
1153     }
1154
1155     @Override
1156     public void updateAsciiStream(int columnIndex, InputStream x)
1157             throws SQLException {
1158         // TODO Auto-generated method stub
1159
1160     }
1161
1162     @Override
1163     public void updateAsciiStream(String columnLabel, InputStream x, int length)
1164             throws SQLException {
1165         // TODO Auto-generated method stub
1166
1167     }
1168
1169     @Override
1170     public void updateAsciiStream(String columnLabel, InputStream x, long length)
1171             throws SQLException {
1172         // TODO Auto-generated method stub
1173
1174     }
1175
1176     @Override
1177     public void updateAsciiStream(String columnLabel, InputStream x)
1178             throws SQLException {
1179         // TODO Auto-generated method stub
1180
1181     }
1182
1183     @Override
1184     public void updateBigDecimal(int columnIndex, BigDecimal x)
1185             throws SQLException {
1186         // TODO Auto-generated method stub
1187
1188     }
1189
1190     @Override
1191     public void updateBigDecimal(String columnLabel, BigDecimal x)
1192             throws SQLException {
1193         // TODO Auto-generated method stub
1194
1195     }
1196
1197     @Override
1198     public void updateBinaryStream(int columnIndex, InputStream x, int length)
1199             throws SQLException {
1200         // TODO Auto-generated method stub
1201
1202     }
1203
1204     @Override
1205     public void updateBinaryStream(int columnIndex, InputStream x, long length)
1206             throws SQLException {
1207         // TODO Auto-generated method stub
1208
1209     }
1210
1211     @Override
1212     public void updateBinaryStream(int columnIndex, InputStream x)
1213             throws SQLException {
1214         // TODO Auto-generated method stub
1215
1216     }
1217
1218     @Override
1219     public void updateBinaryStream(String columnLabel, InputStream x, int length)
1220             throws SQLException {
1221         // TODO Auto-generated method stub
1222
1223     }
1224
1225     @Override
1226     public void updateBinaryStream(String columnLabel, InputStream x,
1227             long length) throws SQLException {
1228         // TODO Auto-generated method stub
1229
1230     }
1231
1232     @Override
1233     public void updateBinaryStream(String columnLabel, InputStream x)
1234             throws SQLException {
1235         // TODO Auto-generated method stub
1236
1237     }
1238
1239     @Override
1240     public void updateBlob(int columnIndex, Blob x) throws SQLException {
1241         // TODO Auto-generated method stub
1242
1243     }
1244
1245     @Override
1246     public void updateBlob(int columnIndex, InputStream inputStream, long length)
1247             throws SQLException {
1248         // TODO Auto-generated method stub
1249
1250     }
1251
1252     @Override
1253     public void updateBlob(int columnIndex, InputStream inputStream)
1254             throws SQLException {
1255         // TODO Auto-generated method stub
1256
1257     }
1258
1259     @Override
1260     public void updateBlob(String columnLabel, Blob x) throws SQLException {
1261         // TODO Auto-generated method stub
1262
1263     }
1264
1265     @Override
1266     public void updateBlob(String columnLabel, InputStream inputStream,
1267             long length) throws SQLException {
1268         // TODO Auto-generated method stub
1269
1270     }
1271
1272     @Override
1273     public void updateBlob(String columnLabel, InputStream inputStream)
1274             throws SQLException {
1275         // TODO Auto-generated method stub
1276
1277     }
1278
1279     @Override
1280     public void updateBoolean(int columnIndex, boolean x) throws SQLException {
1281         // TODO Auto-generated method stub
1282
1283     }
1284
1285     @Override
1286     public void updateBoolean(String columnLabel, boolean x)
1287             throws SQLException {
1288         // TODO Auto-generated method stub
1289
1290     }
1291
1292     @Override
1293     public void updateByte(int columnIndex, byte x) throws SQLException {
1294         // TODO Auto-generated method stub
1295
1296     }
1297
1298     @Override
1299     public void updateByte(String columnLabel, byte x) throws SQLException {
1300         // TODO Auto-generated method stub
1301
1302     }
1303
1304     @Override
1305     public void updateBytes(int columnIndex, byte[] x) throws SQLException {
1306         // TODO Auto-generated method stub
1307
1308     }
1309
1310     @Override
1311     public void updateBytes(String columnLabel, byte[] x) throws SQLException {
1312         // TODO Auto-generated method stub
1313
1314     }
1315
1316     @Override
1317     public void updateCharacterStream(int columnIndex, Reader x, int length)
1318             throws SQLException {
1319         // TODO Auto-generated method stub
1320
1321     }
1322
1323     @Override
1324     public void updateCharacterStream(int columnIndex, Reader x, long length)
1325             throws SQLException {
1326         // TODO Auto-generated method stub
1327
1328     }
1329
1330     @Override
1331     public void updateCharacterStream(int columnIndex, Reader x)
1332             throws SQLException {
1333         // TODO Auto-generated method stub
1334
1335     }
1336
1337     @Override
1338     public void updateCharacterStream(String columnLabel, Reader reader,
1339             int length) throws SQLException {
1340         // TODO Auto-generated method stub
1341
1342     }
1343
1344     @Override
1345     public void updateCharacterStream(String columnLabel, Reader reader,
1346             long length) throws SQLException {
1347         // TODO Auto-generated method stub
1348
1349     }
1350
1351     @Override
1352     public void updateCharacterStream(String columnLabel, Reader reader)
1353             throws SQLException {
1354         // TODO Auto-generated method stub
1355
1356     }
1357
1358     @Override
1359     public void updateClob(int columnIndex, Clob x) throws SQLException {
1360         // TODO Auto-generated method stub
1361
1362     }
1363
1364     @Override
1365     public void updateClob(int columnIndex, Reader reader, long length)
1366             throws SQLException {
1367         // TODO Auto-generated method stub
1368
1369     }
1370
1371     @Override
1372     public void updateClob(int columnIndex, Reader reader) throws SQLException {
1373         // TODO Auto-generated method stub
1374
1375     }
1376
1377     @Override
1378     public void updateClob(String columnLabel, Clob x) throws SQLException {
1379         // TODO Auto-generated method stub
1380
1381     }
1382
1383     @Override
1384     public void updateClob(String columnLabel, Reader reader, long length)
1385             throws SQLException {
1386         // TODO Auto-generated method stub
1387
1388     }
1389
1390     @Override
1391     public void updateClob(String columnLabel, Reader reader)
1392             throws SQLException {
1393         // TODO Auto-generated method stub
1394
1395     }
1396
1397     @Override
1398     public void updateDate(int columnIndex, Date x) throws SQLException {
1399         // TODO Auto-generated method stub
1400
1401     }
1402
1403     @Override
1404     public void updateDate(String columnLabel, Date x) throws SQLException {
1405         // TODO Auto-generated method stub
1406
1407     }
1408
1409     @Override
1410     public void updateDouble(int columnIndex, double x) throws SQLException {
1411         // TODO Auto-generated method stub
1412
1413     }
1414
1415     @Override
1416     public void updateDouble(String columnLabel, double x) throws SQLException {
1417         // TODO Auto-generated method stub
1418
1419     }
1420
1421     @Override
1422     public void updateFloat(int columnIndex, float x) throws SQLException {
1423         // TODO Auto-generated method stub
1424
1425     }
1426
1427     @Override
1428     public void updateFloat(String columnLabel, float x) throws SQLException {
1429         // TODO Auto-generated method stub
1430
1431     }
1432
1433     @Override
1434     public void updateInt(int columnIndex, int x) throws SQLException {
1435         // TODO Auto-generated method stub
1436
1437     }
1438
1439     @Override
1440     public void updateInt(String columnLabel, int x) throws SQLException {
1441         // TODO Auto-generated method stub
1442
1443     }
1444
1445     @Override
1446     public void updateLong(int columnIndex, long x) throws SQLException {
1447         // TODO Auto-generated method stub
1448
1449     }
1450
1451     @Override
1452     public void updateLong(String columnLabel, long x) throws SQLException {
1453         // TODO Auto-generated method stub
1454
1455     }
1456
1457     @Override
1458     public void updateNCharacterStream(int columnIndex, Reader x, long length)
1459             throws SQLException {
1460         // TODO Auto-generated method stub
1461
1462     }
1463
1464     @Override
1465     public void updateNCharacterStream(int columnIndex, Reader x)
1466             throws SQLException {
1467         // TODO Auto-generated method stub
1468
1469     }
1470
1471     @Override
1472     public void updateNCharacterStream(String columnLabel, Reader reader,
1473             long length) throws SQLException {
1474         // TODO Auto-generated method stub
1475
1476     }
1477
1478     @Override
1479     public void updateNCharacterStream(String columnLabel, Reader reader)
1480             throws SQLException {
1481         // TODO Auto-generated method stub
1482
1483     }
1484
1485     @Override
1486     public void updateNClob(int columnIndex, NClob nClob) throws SQLException {
1487         // TODO Auto-generated method stub
1488
1489     }
1490
1491     @Override
1492     public void updateNClob(int columnIndex, Reader reader, long length)
1493             throws SQLException {
1494         // TODO Auto-generated method stub
1495
1496     }
1497
1498     @Override
1499     public void updateNClob(int columnIndex, Reader reader) throws SQLException {
1500         // TODO Auto-generated method stub
1501
1502     }
1503
1504     @Override
1505     public void updateNClob(String columnLabel, NClob nClob)
1506             throws SQLException {
1507         // TODO Auto-generated method stub
1508
1509     }
1510
1511     @Override
1512     public void updateNClob(String columnLabel, Reader reader, long length)
1513             throws SQLException {
1514         // TODO Auto-generated method stub
1515
1516     }
1517
1518     @Override
1519     public void updateNClob(String columnLabel, Reader reader)
1520             throws SQLException {
1521         // TODO Auto-generated method stub
1522
1523     }
1524
1525     @Override
1526     public void updateNString(int columnIndex, String nString)
1527             throws SQLException {
1528         // TODO Auto-generated method stub
1529
1530     }
1531
1532     @Override
1533     public void updateNString(String columnLabel, String nString)
1534             throws SQLException {
1535         // TODO Auto-generated method stub
1536
1537     }
1538
1539     @Override
1540     public void updateNull(int columnIndex) throws SQLException {
1541         // TODO Auto-generated method stub
1542
1543     }
1544
1545     @Override
1546     public void updateNull(String columnLabel) throws SQLException {
1547         // TODO Auto-generated method stub
1548
1549     }
1550
1551     @Override
1552     public void updateObject(int columnIndex, Object x, int scaleOrLength)
1553             throws SQLException {
1554         // TODO Auto-generated method stub
1555
1556     }
1557
1558     @Override
1559     public void updateObject(int columnIndex, Object x) throws SQLException {
1560         // TODO Auto-generated method stub
1561
1562     }
1563
1564     @Override
1565     public void updateObject(String columnLabel, Object x, int scaleOrLength)
1566             throws SQLException {
1567         // TODO Auto-generated method stub
1568
1569     }
1570
1571     @Override
1572     public void updateObject(String columnLabel, Object x) throws SQLException {
1573         // TODO Auto-generated method stub
1574
1575     }
1576
1577     @Override
1578     public void updateRef(int columnIndex, Ref x) throws SQLException {
1579         // TODO Auto-generated method stub
1580
1581     }
1582
1583     @Override
1584     public void updateRef(String columnLabel, Ref x) throws SQLException {
1585         // TODO Auto-generated method stub
1586
1587     }
1588
1589     @Override
1590     public void updateRow() throws SQLException {
1591         // TODO Auto-generated method stub
1592
1593     }
1594
1595     @Override
1596     public void updateRowId(int columnIndex, RowId x) throws SQLException {
1597         // TODO Auto-generated method stub
1598
1599     }
1600
1601     @Override
1602     public void updateRowId(String columnLabel, RowId x) throws SQLException {
1603         // TODO Auto-generated method stub
1604
1605     }
1606
1607     @Override
1608     public void updateSQLXML(int columnIndex, SQLXML xmlObject)
1609             throws SQLException {
1610         // TODO Auto-generated method stub
1611
1612     }
1613
1614     @Override
1615     public void updateSQLXML(String columnLabel, SQLXML xmlObject)
1616             throws SQLException {
1617         // TODO Auto-generated method stub
1618
1619     }
1620
1621     @Override
1622     public void updateShort(int columnIndex, short x) throws SQLException {
1623         // TODO Auto-generated method stub
1624
1625     }
1626
1627     @Override
1628     public void updateShort(String columnLabel, short x) throws SQLException {
1629         // TODO Auto-generated method stub
1630
1631     }
1632
1633     @Override
1634     public void updateString(int columnIndex, String x) throws SQLException {
1635         // TODO Auto-generated method stub
1636
1637     }
1638
1639     @Override
1640     public void updateString(String columnLabel, String x) throws SQLException {
1641         // TODO Auto-generated method stub
1642
1643     }
1644
1645     @Override
1646     public void updateTime(int columnIndex, Time x) throws SQLException {
1647         // TODO Auto-generated method stub
1648
1649     }
1650
1651     @Override
1652     public void updateTime(String columnLabel, Time x) throws SQLException {
1653         // TODO Auto-generated method stub
1654
1655     }
1656
1657     @Override
1658     public void updateTimestamp(int columnIndex, Timestamp x)
1659             throws SQLException {
1660         // TODO Auto-generated method stub
1661
1662     }
1663
1664     @Override
1665     public void updateTimestamp(String columnLabel, Timestamp x)
1666             throws SQLException {
1667         // TODO Auto-generated method stub
1668
1669     }
1670
1671     @Override
1672     public boolean wasNull() throws SQLException {
1673         // TODO Auto-generated method stub
1674         return false;
1675     }
1676
1677     @Override
1678     public String getCatalogName(int column) throws SQLException {
1679         // TODO Auto-generated method stub
1680         return null;
1681     }
1682
1683     @Override
1684     public String getColumnClassName(int column) throws SQLException {
1685         // TODO Auto-generated method stub
1686         return null;
1687     }
1688
1689     @Override
1690     public int getColumnCount() throws SQLException {
1691         return fieldsInQuery.size();
1692     }
1693
1694     @Override
1695     public int getColumnDisplaySize(int column) throws SQLException {
1696         // TODO Auto-generated method stub
1697         return 0;
1698     }
1699
1700     @Override
1701     public String getColumnLabel(int column) throws SQLException {
1702         return this.fieldsInQuery.get(column - 1).toString();
1703     }
1704
1705     @Override
1706     public String getColumnName(int column) throws SQLException {
1707         // TODO Auto-generated method stub
1708         return null;
1709     }
1710
1711     @Override
1712     public int getColumnType(int column) throws SQLException {
1713         return 12;
1714     }
1715
1716     @Override
1717     public String getColumnTypeName(int column) throws SQLException {
1718         // TODO Auto-generated method stub
1719         return null;
1720     }
1721
1722     @Override
1723     public int getPrecision(int column) throws SQLException {
1724         // TODO Auto-generated method stub
1725         return 0;
1726     }
1727
1728     @Override
1729     public int getScale(int column) throws SQLException {
1730         // TODO Auto-generated method stub
1731         return 0;
1732     }
1733
1734     @Override
1735     public String getSchemaName(int column) throws SQLException {
1736         // TODO Auto-generated method stub
1737         return null;
1738     }
1739
1740     @Override
1741     public String getTableName(int column) throws SQLException {
1742         // TODO Auto-generated method stub
1743         return null;
1744     }
1745
1746     @Override
1747     public boolean isAutoIncrement(int column) throws SQLException {
1748         // TODO Auto-generated method stub
1749         return false;
1750     }
1751
1752     @Override
1753     public boolean isCaseSensitive(int column) throws SQLException {
1754         // TODO Auto-generated method stub
1755         return false;
1756     }
1757
1758     @Override
1759     public boolean isCurrency(int column) throws SQLException {
1760         // TODO Auto-generated method stub
1761         return false;
1762     }
1763
1764     @Override
1765     public boolean isDefinitelyWritable(int column) throws SQLException {
1766         // TODO Auto-generated method stub
1767         return false;
1768     }
1769
1770     @Override
1771     public int isNullable(int column) throws SQLException {
1772         // TODO Auto-generated method stub
1773         return 0;
1774     }
1775
1776     @Override
1777     public boolean isReadOnly(int column) throws SQLException {
1778         // TODO Auto-generated method stub
1779         return false;
1780     }
1781
1782     @Override
1783     public boolean isSearchable(int column) throws SQLException {
1784         // TODO Auto-generated method stub
1785         return false;
1786     }
1787
1788     @Override
1789     public boolean isSigned(int column) throws SQLException {
1790         // TODO Auto-generated method stub
1791         return false;
1792     }
1793
1794     @Override
1795     public boolean isWritable(int column) throws SQLException {
1796         // TODO Auto-generated method stub
1797         return false;
1798     }
1799
1800     @Override
1801     public <T> T getObject(int columnIndex, Class<T> type) throws SQLException {
1802         // TODO Auto-generated method stub
1803         return null;
1804     }
1805
1806     @Override
1807     public <T> T getObject(String columnLabel, Class<T> type)
1808             throws SQLException {
1809         // TODO Auto-generated method stub
1810         return null;
1811     }
1812
1813     // //Metadata
1814
1815 }