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