Fix checkstyle if-statements must use braces sal-dom-xsql
[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,
427             boolean root, String tableName, XSQLBluePrint bluePrint) {
428
429         List<Record> result = new LinkedList<Record>();
430         String nodeID = XSQLODLUtils.getNodeIdentiofier(element);
431         if (node.getODLTableName().equals(nodeID)) {
432             XSQLBluePrintNode bluePrintNode = bluePrint
433                     .getBluePrintNodeByODLTableName(nodeID)[0];
434             Record rec = new Record();
435             rec.element = element;
436             XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode
437                     .getBluePrintNodeName());
438             if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName())
439                     || 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,
457                 bluePrint);
458         for (Record subRec : subRecords) {
459             List<Object> subO = getChildren(subRec.element, tableName,
460                     bluePrint);
461             if (subO != null) {
462                 for (Object subData : subO) {
463                     Record rec = new Record();
464                     rec.element = subData;
465                     rec.data.putAll(subRec.data);
466
467                     String recID = XSQLODLUtils.getNodeIdentiofier(rec.element);
468                     XSQLBluePrintNode eNodes[] = bluePrint
469                             .getBluePrintNodeByODLTableName(recID);
470                     XSQLBluePrintNode bpn = null;
471                     for (XSQLBluePrintNode eNode : eNodes) {
472                         bpn = this.tablesInQueryMap.get(eNode
473                                 .getBluePrintNodeName());
474                         if (bpn != null) {
475                             break;
476                         }
477                     }
478                     boolean isObjectInCriteria = true;
479                     if (bpn != null) {
480                         Map<String, Object> allKeyValues = collectColumnValues(rec.element, bpn);
481                         if ((isObjectFitCriteria(allKeyValues,
482                                 bpn.getBluePrintNodeName()) == 1)) {
483                             addToData(rec, bpn, bluePrint, allKeyValues);
484                         } else {
485                             isObjectInCriteria = false;
486                         }
487                     }
488
489                     if (isObjectInCriteria) {
490                         if (root) {
491                             if (!rec.data.isEmpty()) {
492                                 addRecord(rec.data);
493                             }
494                         } else {
495                             result.add(rec);
496                         }
497                     }
498                 }
499             }
500         }
501
502         return result;
503     }
504
505     @Override
506     public boolean isWrapperFor(Class<?> iface) throws SQLException {
507         // TODO Auto-generated method stub
508         return false;
509     }
510
511     @Override
512     public <T> T unwrap(Class<T> iface) throws SQLException {
513         // TODO Auto-generated method stub
514         return null;
515     }
516
517     @Override
518     public boolean absolute(int row) throws SQLException {
519         // TODO Auto-generated method stub
520         return false;
521     }
522
523     @Override
524     public void afterLast() throws SQLException {
525         // TODO Auto-generated method stub
526
527     }
528
529     @Override
530     public void beforeFirst() throws SQLException {
531         // TODO Auto-generated method stub
532
533     }
534
535     @Override
536     public void cancelRowUpdates() throws SQLException {
537         // TODO Auto-generated method stub
538
539     }
540
541     @Override
542     public void clearWarnings() throws SQLException {
543         // TODO Auto-generated method stub
544
545     }
546
547     @Override
548     public void close() throws SQLException {
549         // TODO Auto-generated method stub
550
551     }
552
553     @Override
554     public void deleteRow() throws SQLException {
555         // TODO Auto-generated method stub
556
557     }
558
559     @Override
560     public int findColumn(String columnLabel) throws SQLException {
561         // TODO Auto-generated method stub
562         return 0;
563     }
564
565     @Override
566     public boolean first() throws SQLException {
567         // TODO Auto-generated method stub
568         return false;
569     }
570
571     @Override
572     public Array getArray(int columnIndex) throws SQLException {
573         // TODO Auto-generated method stub
574         return null;
575     }
576
577     @Override
578     public Array getArray(String columnLabel) throws SQLException {
579         // TODO Auto-generated method stub
580         return null;
581     }
582
583     @Override
584     public InputStream getAsciiStream(int columnIndex) throws SQLException {
585         // TODO Auto-generated method stub
586         return null;
587     }
588
589     @Override
590     public InputStream getAsciiStream(String columnLabel) throws SQLException {
591         // TODO Auto-generated method stub
592         return null;
593     }
594
595     @Override
596     public BigDecimal getBigDecimal(int columnIndex, int scale)
597             throws SQLException {
598         // TODO Auto-generated method stub
599         return null;
600     }
601
602     @Override
603     public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
604         // TODO Auto-generated method stub
605         return null;
606     }
607
608     @Override
609     public BigDecimal getBigDecimal(String columnLabel, int scale)
610             throws SQLException {
611         // TODO Auto-generated method stub
612         return null;
613     }
614
615     @Override
616     public BigDecimal getBigDecimal(String columnLabel) throws SQLException {
617         // TODO Auto-generated method stub
618         return null;
619     }
620
621     @Override
622     public InputStream getBinaryStream(int columnIndex) throws SQLException {
623         // TODO Auto-generated method stub
624         return null;
625     }
626
627     @Override
628     public InputStream getBinaryStream(String columnLabel) throws SQLException {
629         // TODO Auto-generated method stub
630         return null;
631     }
632
633     @Override
634     public Blob getBlob(int columnIndex) throws SQLException {
635         // TODO Auto-generated method stub
636         return null;
637     }
638
639     @Override
640     public Blob getBlob(String columnLabel) throws SQLException {
641         // TODO Auto-generated method stub
642         return null;
643     }
644
645     @Override
646     public boolean getBoolean(int columnIndex) throws SQLException {
647         // TODO Auto-generated method stub
648         return false;
649     }
650
651     @Override
652     public boolean getBoolean(String columnLabel) throws SQLException {
653         // TODO Auto-generated method stub
654         return false;
655     }
656
657     @Override
658     public byte getByte(int columnIndex) throws SQLException {
659         // TODO Auto-generated method stub
660         return 0;
661     }
662
663     @Override
664     public byte getByte(String columnLabel) throws SQLException {
665         // TODO Auto-generated method stub
666         return 0;
667     }
668
669     @Override
670     public byte[] getBytes(int columnIndex) throws SQLException {
671         // TODO Auto-generated method stub
672         return null;
673     }
674
675     @Override
676     public byte[] getBytes(String columnLabel) throws SQLException {
677         // TODO Auto-generated method stub
678         return null;
679     }
680
681     @Override
682     public Reader getCharacterStream(int columnIndex) throws SQLException {
683         // TODO Auto-generated method stub
684         return null;
685     }
686
687     @Override
688     public Reader getCharacterStream(String columnLabel) throws SQLException {
689         // TODO Auto-generated method stub
690         return null;
691     }
692
693     @Override
694     public Clob getClob(int columnIndex) throws SQLException {
695         // TODO Auto-generated method stub
696         return null;
697     }
698
699     @Override
700     public Clob getClob(String columnLabel) throws SQLException {
701         // TODO Auto-generated method stub
702         return null;
703     }
704
705     @Override
706     public int getConcurrency() throws SQLException {
707         // TODO Auto-generated method stub
708         return 0;
709     }
710
711     @Override
712     public String getCursorName() throws SQLException {
713         // TODO Auto-generated method stub
714         return null;
715     }
716
717     @Override
718     public Date getDate(int columnIndex, Calendar cal) throws SQLException {
719         // TODO Auto-generated method stub
720         return null;
721     }
722
723     @Override
724     public Date getDate(int columnIndex) throws SQLException {
725         // TODO Auto-generated method stub
726         return null;
727     }
728
729     @Override
730     public Date getDate(String columnLabel, Calendar cal) throws SQLException {
731         // TODO Auto-generated method stub
732         return null;
733     }
734
735     @Override
736     public Date getDate(String columnLabel) throws SQLException {
737         // TODO Auto-generated method stub
738         return null;
739     }
740
741     @Override
742     public double getDouble(int columnIndex) throws SQLException {
743         // TODO Auto-generated method stub
744         return 0;
745     }
746
747     @Override
748     public double getDouble(String columnLabel) throws SQLException {
749         // TODO Auto-generated method stub
750         return 0;
751     }
752
753     @Override
754     public int getFetchDirection() throws SQLException {
755         // TODO Auto-generated method stub
756         return 0;
757     }
758
759     @Override
760     public int getFetchSize() throws SQLException {
761         // TODO Auto-generated method stub
762         return 0;
763     }
764
765     @Override
766     public float getFloat(int columnIndex) throws SQLException {
767         // TODO Auto-generated method stub
768         return 0;
769     }
770
771     @Override
772     public float getFloat(String columnLabel) throws SQLException {
773         // TODO Auto-generated method stub
774         return 0;
775     }
776
777     @Override
778     public int getHoldability() throws SQLException {
779         // TODO Auto-generated method stub
780         return 0;
781     }
782
783     @Override
784     public int getInt(int columnIndex) throws SQLException {
785         // TODO Auto-generated method stub
786         return 0;
787     }
788
789     @Override
790     public int getInt(String columnLabel) throws SQLException {
791         // TODO Auto-generated method stub
792         return 0;
793     }
794
795     @Override
796     public long getLong(int columnIndex) throws SQLException {
797         // TODO Auto-generated method stub
798         return 0;
799     }
800
801     @Override
802     public long getLong(String columnLabel) throws SQLException {
803         // TODO Auto-generated method stub
804         return 0;
805     }
806
807     @Override
808     public ResultSetMetaData getMetaData() throws SQLException {
809         return this;
810     }
811
812     @Override
813     public Reader getNCharacterStream(int columnIndex) throws SQLException {
814         // TODO Auto-generated method stub
815         return null;
816     }
817
818     @Override
819     public Reader getNCharacterStream(String columnLabel) throws SQLException {
820         // TODO Auto-generated method stub
821         return null;
822     }
823
824     @Override
825     public NClob getNClob(int columnIndex) throws SQLException {
826         // TODO Auto-generated method stub
827         return null;
828     }
829
830     @Override
831     public NClob getNClob(String columnLabel) throws SQLException {
832         // TODO Auto-generated method stub
833         return null;
834     }
835
836     @Override
837     public String getNString(int columnIndex) throws SQLException {
838         // TODO Auto-generated method stub
839         return null;
840     }
841
842     @Override
843     public String getNString(String columnLabel) throws SQLException {
844         // TODO Auto-generated method stub
845         return null;
846     }
847
848     @Override
849     public Object getObject(int columnIndex, Map<String, Class<?>> map)
850             throws SQLException {
851         return getObject(columnIndex);
852     }
853
854     @Override
855     public Object getObject(int columnIndex) throws SQLException {
856         return currentRecord.get(this.fieldsInQuery.get(columnIndex - 1)
857                 .toString());
858     }
859
860     @Override
861     public Object getObject(String columnLabel, Map<String, Class<?>> map)
862             throws SQLException {
863         return getObject(columnLabel);
864     }
865
866     @Override
867     public Object getObject(String columnLabel) throws SQLException {
868         return currentRecord.get(columnLabel);
869     }
870
871     @Override
872     public Ref getRef(int columnIndex) throws SQLException {
873         // TODO Auto-generated method stub
874         return null;
875     }
876
877     @Override
878     public Ref getRef(String columnLabel) throws SQLException {
879         // TODO Auto-generated method stub
880         return null;
881     }
882
883     @Override
884     public int getRow() throws SQLException {
885         // TODO Auto-generated method stub
886         return 0;
887     }
888
889     @Override
890     public RowId getRowId(int columnIndex) throws SQLException {
891         // TODO Auto-generated method stub
892         return null;
893     }
894
895     @Override
896     public RowId getRowId(String columnLabel) throws SQLException {
897         // TODO Auto-generated method stub
898         return null;
899     }
900
901     @Override
902     public SQLXML getSQLXML(int columnIndex) throws SQLException {
903         // TODO Auto-generated method stub
904         return null;
905     }
906
907     @Override
908     public SQLXML getSQLXML(String columnLabel) throws SQLException {
909         // TODO Auto-generated method stub
910         return null;
911     }
912
913     @Override
914     public short getShort(int columnIndex) throws SQLException {
915         // TODO Auto-generated method stub
916         return 0;
917     }
918
919     @Override
920     public short getShort(String columnLabel) throws SQLException {
921         // TODO Auto-generated method stub
922         return 0;
923     }
924
925     @Override
926     public Statement getStatement() throws SQLException {
927         // TODO Auto-generated method stub
928         return null;
929     }
930
931     @Override
932     public String getString(int columnIndex) throws SQLException {
933         return "Kuku";
934     }
935
936     @Override
937     public String getString(String columnLabel) throws SQLException {
938         return "Kuku";
939     }
940
941     @Override
942     public Time getTime(int columnIndex, Calendar cal) throws SQLException {
943         // TODO Auto-generated method stub
944         return null;
945     }
946
947     @Override
948     public Time getTime(int columnIndex) throws SQLException {
949         // TODO Auto-generated method stub
950         return null;
951     }
952
953     @Override
954     public Time getTime(String columnLabel, Calendar cal) throws SQLException {
955         // TODO Auto-generated method stub
956         return null;
957     }
958
959     @Override
960     public Time getTime(String columnLabel) throws SQLException {
961         // TODO Auto-generated method stub
962         return null;
963     }
964
965     @Override
966     public Timestamp getTimestamp(int columnIndex, Calendar cal)
967             throws SQLException {
968         // TODO Auto-generated method stub
969         return null;
970     }
971
972     @Override
973     public Timestamp getTimestamp(int columnIndex) throws SQLException {
974         // TODO Auto-generated method stub
975         return null;
976     }
977
978     @Override
979     public Timestamp getTimestamp(String columnLabel, Calendar cal)
980             throws SQLException {
981         // TODO Auto-generated method stub
982         return null;
983     }
984
985     @Override
986     public Timestamp getTimestamp(String columnLabel) throws SQLException {
987         // TODO Auto-generated method stub
988         return null;
989     }
990
991     @Override
992     public int getType() throws SQLException {
993         return ResultSet.TYPE_FORWARD_ONLY;
994     }
995
996     @Override
997     public URL getURL(int columnIndex) throws SQLException {
998         // TODO Auto-generated method stub
999         return null;
1000     }
1001
1002     @Override
1003     public URL getURL(String columnLabel) throws SQLException {
1004         // TODO Auto-generated method stub
1005         return null;
1006     }
1007
1008     @Override
1009     public InputStream getUnicodeStream(int columnIndex) throws SQLException {
1010         // TODO Auto-generated method stub
1011         return null;
1012     }
1013
1014     @Override
1015     public InputStream getUnicodeStream(String columnLabel) throws SQLException {
1016         // TODO Auto-generated method stub
1017         return null;
1018     }
1019
1020     @Override
1021     public SQLWarning getWarnings() throws SQLException {
1022         // TODO Auto-generated method stub
1023         return null;
1024     }
1025
1026     @Override
1027     public void insertRow() throws SQLException {
1028         // TODO Auto-generated method stub
1029
1030     }
1031
1032     @Override
1033     public boolean isAfterLast() throws SQLException {
1034         // TODO Auto-generated method stub
1035         return false;
1036     }
1037
1038     @Override
1039     public boolean isBeforeFirst() throws SQLException {
1040         // TODO Auto-generated method stub
1041         return false;
1042     }
1043
1044     @Override
1045     public boolean isClosed() throws SQLException {
1046         // TODO Auto-generated method stub
1047         return false;
1048     }
1049
1050     @Override
1051     public boolean isFirst() throws SQLException {
1052         // TODO Auto-generated method stub
1053         return false;
1054     }
1055
1056     @Override
1057     public boolean isLast() throws SQLException {
1058         // TODO Auto-generated method stub
1059         return false;
1060     }
1061
1062     @Override
1063     public boolean last() throws SQLException {
1064         // TODO Auto-generated method stub
1065         return false;
1066     }
1067
1068     @Override
1069     public void moveToCurrentRow() throws SQLException {
1070         // TODO Auto-generated method stub
1071
1072     }
1073
1074     @Override
1075     public void moveToInsertRow() throws SQLException {
1076         // TODO Auto-generated method stub
1077
1078     }
1079
1080     @Override
1081     public boolean previous() throws SQLException {
1082         // TODO Auto-generated method stub
1083         return false;
1084     }
1085
1086     @Override
1087     public void refreshRow() throws SQLException {
1088         // TODO Auto-generated method stub
1089
1090     }
1091
1092     @Override
1093     public boolean relative(int rows) throws SQLException {
1094         // TODO Auto-generated method stub
1095         return false;
1096     }
1097
1098     @Override
1099     public boolean rowDeleted() throws SQLException {
1100         // TODO Auto-generated method stub
1101         return false;
1102     }
1103
1104     @Override
1105     public boolean rowInserted() throws SQLException {
1106         // TODO Auto-generated method stub
1107         return false;
1108     }
1109
1110     @Override
1111     public boolean rowUpdated() throws SQLException {
1112         // TODO Auto-generated method stub
1113         return false;
1114     }
1115
1116     @Override
1117     public void setFetchDirection(int direction) throws SQLException {
1118         // TODO Auto-generated method stub
1119
1120     }
1121
1122     @Override
1123     public void setFetchSize(int rows) throws SQLException {
1124         // TODO Auto-generated method stub
1125
1126     }
1127
1128     @Override
1129     public void updateArray(int columnIndex, Array x) throws SQLException {
1130         // TODO Auto-generated method stub
1131
1132     }
1133
1134     @Override
1135     public void updateArray(String columnLabel, Array x) throws SQLException {
1136         // TODO Auto-generated method stub
1137
1138     }
1139
1140     @Override
1141     public void updateAsciiStream(int columnIndex, InputStream x, int length)
1142             throws SQLException {
1143         // TODO Auto-generated method stub
1144
1145     }
1146
1147     @Override
1148     public void updateAsciiStream(int columnIndex, InputStream x, long length)
1149             throws SQLException {
1150         // TODO Auto-generated method stub
1151
1152     }
1153
1154     @Override
1155     public void updateAsciiStream(int columnIndex, InputStream x)
1156             throws SQLException {
1157         // TODO Auto-generated method stub
1158
1159     }
1160
1161     @Override
1162     public void updateAsciiStream(String columnLabel, InputStream x, int length)
1163             throws SQLException {
1164         // TODO Auto-generated method stub
1165
1166     }
1167
1168     @Override
1169     public void updateAsciiStream(String columnLabel, InputStream x, long length)
1170             throws SQLException {
1171         // TODO Auto-generated method stub
1172
1173     }
1174
1175     @Override
1176     public void updateAsciiStream(String columnLabel, InputStream x)
1177             throws SQLException {
1178         // TODO Auto-generated method stub
1179
1180     }
1181
1182     @Override
1183     public void updateBigDecimal(int columnIndex, BigDecimal x)
1184             throws SQLException {
1185         // TODO Auto-generated method stub
1186
1187     }
1188
1189     @Override
1190     public void updateBigDecimal(String columnLabel, BigDecimal x)
1191             throws SQLException {
1192         // TODO Auto-generated method stub
1193
1194     }
1195
1196     @Override
1197     public void updateBinaryStream(int columnIndex, InputStream x, int length)
1198             throws SQLException {
1199         // TODO Auto-generated method stub
1200
1201     }
1202
1203     @Override
1204     public void updateBinaryStream(int columnIndex, InputStream x, long length)
1205             throws SQLException {
1206         // TODO Auto-generated method stub
1207
1208     }
1209
1210     @Override
1211     public void updateBinaryStream(int columnIndex, InputStream x)
1212             throws SQLException {
1213         // TODO Auto-generated method stub
1214
1215     }
1216
1217     @Override
1218     public void updateBinaryStream(String columnLabel, InputStream x, int length)
1219             throws SQLException {
1220         // TODO Auto-generated method stub
1221
1222     }
1223
1224     @Override
1225     public void updateBinaryStream(String columnLabel, InputStream x,
1226             long length) throws SQLException {
1227         // TODO Auto-generated method stub
1228
1229     }
1230
1231     @Override
1232     public void updateBinaryStream(String columnLabel, InputStream x)
1233             throws SQLException {
1234         // TODO Auto-generated method stub
1235
1236     }
1237
1238     @Override
1239     public void updateBlob(int columnIndex, Blob x) throws SQLException {
1240         // TODO Auto-generated method stub
1241
1242     }
1243
1244     @Override
1245     public void updateBlob(int columnIndex, InputStream inputStream, long length)
1246             throws SQLException {
1247         // TODO Auto-generated method stub
1248
1249     }
1250
1251     @Override
1252     public void updateBlob(int columnIndex, InputStream inputStream)
1253             throws SQLException {
1254         // TODO Auto-generated method stub
1255
1256     }
1257
1258     @Override
1259     public void updateBlob(String columnLabel, Blob x) throws SQLException {
1260         // TODO Auto-generated method stub
1261
1262     }
1263
1264     @Override
1265     public void updateBlob(String columnLabel, InputStream inputStream,
1266             long length) throws SQLException {
1267         // TODO Auto-generated method stub
1268
1269     }
1270
1271     @Override
1272     public void updateBlob(String columnLabel, InputStream inputStream)
1273             throws SQLException {
1274         // TODO Auto-generated method stub
1275
1276     }
1277
1278     @Override
1279     public void updateBoolean(int columnIndex, boolean x) throws SQLException {
1280         // TODO Auto-generated method stub
1281
1282     }
1283
1284     @Override
1285     public void updateBoolean(String columnLabel, boolean x)
1286             throws SQLException {
1287         // TODO Auto-generated method stub
1288
1289     }
1290
1291     @Override
1292     public void updateByte(int columnIndex, byte x) throws SQLException {
1293         // TODO Auto-generated method stub
1294
1295     }
1296
1297     @Override
1298     public void updateByte(String columnLabel, byte x) throws SQLException {
1299         // TODO Auto-generated method stub
1300
1301     }
1302
1303     @Override
1304     public void updateBytes(int columnIndex, byte[] x) throws SQLException {
1305         // TODO Auto-generated method stub
1306
1307     }
1308
1309     @Override
1310     public void updateBytes(String columnLabel, byte[] x) throws SQLException {
1311         // TODO Auto-generated method stub
1312
1313     }
1314
1315     @Override
1316     public void updateCharacterStream(int columnIndex, Reader x, int length)
1317             throws SQLException {
1318         // TODO Auto-generated method stub
1319
1320     }
1321
1322     @Override
1323     public void updateCharacterStream(int columnIndex, Reader x, long length)
1324             throws SQLException {
1325         // TODO Auto-generated method stub
1326
1327     }
1328
1329     @Override
1330     public void updateCharacterStream(int columnIndex, Reader x)
1331             throws SQLException {
1332         // TODO Auto-generated method stub
1333
1334     }
1335
1336     @Override
1337     public void updateCharacterStream(String columnLabel, Reader reader,
1338             int length) throws SQLException {
1339         // TODO Auto-generated method stub
1340
1341     }
1342
1343     @Override
1344     public void updateCharacterStream(String columnLabel, Reader reader,
1345             long length) throws SQLException {
1346         // TODO Auto-generated method stub
1347
1348     }
1349
1350     @Override
1351     public void updateCharacterStream(String columnLabel, Reader reader)
1352             throws SQLException {
1353         // TODO Auto-generated method stub
1354
1355     }
1356
1357     @Override
1358     public void updateClob(int columnIndex, Clob x) throws SQLException {
1359         // TODO Auto-generated method stub
1360
1361     }
1362
1363     @Override
1364     public void updateClob(int columnIndex, Reader reader, long length)
1365             throws SQLException {
1366         // TODO Auto-generated method stub
1367
1368     }
1369
1370     @Override
1371     public void updateClob(int columnIndex, Reader reader) throws SQLException {
1372         // TODO Auto-generated method stub
1373
1374     }
1375
1376     @Override
1377     public void updateClob(String columnLabel, Clob x) throws SQLException {
1378         // TODO Auto-generated method stub
1379
1380     }
1381
1382     @Override
1383     public void updateClob(String columnLabel, Reader reader, long length)
1384             throws SQLException {
1385         // TODO Auto-generated method stub
1386
1387     }
1388
1389     @Override
1390     public void updateClob(String columnLabel, Reader reader)
1391             throws SQLException {
1392         // TODO Auto-generated method stub
1393
1394     }
1395
1396     @Override
1397     public void updateDate(int columnIndex, Date x) throws SQLException {
1398         // TODO Auto-generated method stub
1399
1400     }
1401
1402     @Override
1403     public void updateDate(String columnLabel, Date x) throws SQLException {
1404         // TODO Auto-generated method stub
1405
1406     }
1407
1408     @Override
1409     public void updateDouble(int columnIndex, double x) throws SQLException {
1410         // TODO Auto-generated method stub
1411
1412     }
1413
1414     @Override
1415     public void updateDouble(String columnLabel, double x) throws SQLException {
1416         // TODO Auto-generated method stub
1417
1418     }
1419
1420     @Override
1421     public void updateFloat(int columnIndex, float x) throws SQLException {
1422         // TODO Auto-generated method stub
1423
1424     }
1425
1426     @Override
1427     public void updateFloat(String columnLabel, float x) throws SQLException {
1428         // TODO Auto-generated method stub
1429
1430     }
1431
1432     @Override
1433     public void updateInt(int columnIndex, int x) throws SQLException {
1434         // TODO Auto-generated method stub
1435
1436     }
1437
1438     @Override
1439     public void updateInt(String columnLabel, int x) throws SQLException {
1440         // TODO Auto-generated method stub
1441
1442     }
1443
1444     @Override
1445     public void updateLong(int columnIndex, long x) throws SQLException {
1446         // TODO Auto-generated method stub
1447
1448     }
1449
1450     @Override
1451     public void updateLong(String columnLabel, long x) throws SQLException {
1452         // TODO Auto-generated method stub
1453
1454     }
1455
1456     @Override
1457     public void updateNCharacterStream(int columnIndex, Reader x, long length)
1458             throws SQLException {
1459         // TODO Auto-generated method stub
1460
1461     }
1462
1463     @Override
1464     public void updateNCharacterStream(int columnIndex, Reader x)
1465             throws SQLException {
1466         // TODO Auto-generated method stub
1467
1468     }
1469
1470     @Override
1471     public void updateNCharacterStream(String columnLabel, Reader reader,
1472             long length) throws SQLException {
1473         // TODO Auto-generated method stub
1474
1475     }
1476
1477     @Override
1478     public void updateNCharacterStream(String columnLabel, Reader reader)
1479             throws SQLException {
1480         // TODO Auto-generated method stub
1481
1482     }
1483
1484     @Override
1485     public void updateNClob(int columnIndex, NClob nClob) throws SQLException {
1486         // TODO Auto-generated method stub
1487
1488     }
1489
1490     @Override
1491     public void updateNClob(int columnIndex, Reader reader, long length)
1492             throws SQLException {
1493         // TODO Auto-generated method stub
1494
1495     }
1496
1497     @Override
1498     public void updateNClob(int columnIndex, Reader reader) throws SQLException {
1499         // TODO Auto-generated method stub
1500
1501     }
1502
1503     @Override
1504     public void updateNClob(String columnLabel, NClob nClob)
1505             throws SQLException {
1506         // TODO Auto-generated method stub
1507
1508     }
1509
1510     @Override
1511     public void updateNClob(String columnLabel, Reader reader, long length)
1512             throws SQLException {
1513         // TODO Auto-generated method stub
1514
1515     }
1516
1517     @Override
1518     public void updateNClob(String columnLabel, Reader reader)
1519             throws SQLException {
1520         // TODO Auto-generated method stub
1521
1522     }
1523
1524     @Override
1525     public void updateNString(int columnIndex, String nString)
1526             throws SQLException {
1527         // TODO Auto-generated method stub
1528
1529     }
1530
1531     @Override
1532     public void updateNString(String columnLabel, String nString)
1533             throws SQLException {
1534         // TODO Auto-generated method stub
1535
1536     }
1537
1538     @Override
1539     public void updateNull(int columnIndex) throws SQLException {
1540         // TODO Auto-generated method stub
1541
1542     }
1543
1544     @Override
1545     public void updateNull(String columnLabel) throws SQLException {
1546         // TODO Auto-generated method stub
1547
1548     }
1549
1550     @Override
1551     public void updateObject(int columnIndex, Object x, int scaleOrLength)
1552             throws SQLException {
1553         // TODO Auto-generated method stub
1554
1555     }
1556
1557     @Override
1558     public void updateObject(int columnIndex, Object x) throws SQLException {
1559         // TODO Auto-generated method stub
1560
1561     }
1562
1563     @Override
1564     public void updateObject(String columnLabel, Object x, int scaleOrLength)
1565             throws SQLException {
1566         // TODO Auto-generated method stub
1567
1568     }
1569
1570     @Override
1571     public void updateObject(String columnLabel, Object x) throws SQLException {
1572         // TODO Auto-generated method stub
1573
1574     }
1575
1576     @Override
1577     public void updateRef(int columnIndex, Ref x) throws SQLException {
1578         // TODO Auto-generated method stub
1579
1580     }
1581
1582     @Override
1583     public void updateRef(String columnLabel, Ref x) throws SQLException {
1584         // TODO Auto-generated method stub
1585
1586     }
1587
1588     @Override
1589     public void updateRow() throws SQLException {
1590         // TODO Auto-generated method stub
1591
1592     }
1593
1594     @Override
1595     public void updateRowId(int columnIndex, RowId x) throws SQLException {
1596         // TODO Auto-generated method stub
1597
1598     }
1599
1600     @Override
1601     public void updateRowId(String columnLabel, RowId x) throws SQLException {
1602         // TODO Auto-generated method stub
1603
1604     }
1605
1606     @Override
1607     public void updateSQLXML(int columnIndex, SQLXML xmlObject)
1608             throws SQLException {
1609         // TODO Auto-generated method stub
1610
1611     }
1612
1613     @Override
1614     public void updateSQLXML(String columnLabel, SQLXML xmlObject)
1615             throws SQLException {
1616         // TODO Auto-generated method stub
1617
1618     }
1619
1620     @Override
1621     public void updateShort(int columnIndex, short x) throws SQLException {
1622         // TODO Auto-generated method stub
1623
1624     }
1625
1626     @Override
1627     public void updateShort(String columnLabel, short x) throws SQLException {
1628         // TODO Auto-generated method stub
1629
1630     }
1631
1632     @Override
1633     public void updateString(int columnIndex, String x) throws SQLException {
1634         // TODO Auto-generated method stub
1635
1636     }
1637
1638     @Override
1639     public void updateString(String columnLabel, String x) throws SQLException {
1640         // TODO Auto-generated method stub
1641
1642     }
1643
1644     @Override
1645     public void updateTime(int columnIndex, Time x) throws SQLException {
1646         // TODO Auto-generated method stub
1647
1648     }
1649
1650     @Override
1651     public void updateTime(String columnLabel, Time x) throws SQLException {
1652         // TODO Auto-generated method stub
1653
1654     }
1655
1656     @Override
1657     public void updateTimestamp(int columnIndex, Timestamp x)
1658             throws SQLException {
1659         // TODO Auto-generated method stub
1660
1661     }
1662
1663     @Override
1664     public void updateTimestamp(String columnLabel, Timestamp x)
1665             throws SQLException {
1666         // TODO Auto-generated method stub
1667
1668     }
1669
1670     @Override
1671     public boolean wasNull() throws SQLException {
1672         // TODO Auto-generated method stub
1673         return false;
1674     }
1675
1676     @Override
1677     public String getCatalogName(int column) throws SQLException {
1678         // TODO Auto-generated method stub
1679         return null;
1680     }
1681
1682     @Override
1683     public String getColumnClassName(int column) throws SQLException {
1684         // TODO Auto-generated method stub
1685         return null;
1686     }
1687
1688     @Override
1689     public int getColumnCount() throws SQLException {
1690         return fieldsInQuery.size();
1691     }
1692
1693     @Override
1694     public int getColumnDisplaySize(int column) throws SQLException {
1695         // TODO Auto-generated method stub
1696         return 0;
1697     }
1698
1699     @Override
1700     public String getColumnLabel(int column) throws SQLException {
1701         return this.fieldsInQuery.get(column - 1).toString();
1702     }
1703
1704     @Override
1705     public String getColumnName(int column) throws SQLException {
1706         // TODO Auto-generated method stub
1707         return null;
1708     }
1709
1710     @Override
1711     public int getColumnType(int column) throws SQLException {
1712         return 12;
1713     }
1714
1715     @Override
1716     public String getColumnTypeName(int column) throws SQLException {
1717         // TODO Auto-generated method stub
1718         return null;
1719     }
1720
1721     @Override
1722     public int getPrecision(int column) throws SQLException {
1723         // TODO Auto-generated method stub
1724         return 0;
1725     }
1726
1727     @Override
1728     public int getScale(int column) throws SQLException {
1729         // TODO Auto-generated method stub
1730         return 0;
1731     }
1732
1733     @Override
1734     public String getSchemaName(int column) throws SQLException {
1735         // TODO Auto-generated method stub
1736         return null;
1737     }
1738
1739     @Override
1740     public String getTableName(int column) throws SQLException {
1741         // TODO Auto-generated method stub
1742         return null;
1743     }
1744
1745     @Override
1746     public boolean isAutoIncrement(int column) throws SQLException {
1747         // TODO Auto-generated method stub
1748         return false;
1749     }
1750
1751     @Override
1752     public boolean isCaseSensitive(int column) throws SQLException {
1753         // TODO Auto-generated method stub
1754         return false;
1755     }
1756
1757     @Override
1758     public boolean isCurrency(int column) throws SQLException {
1759         // TODO Auto-generated method stub
1760         return false;
1761     }
1762
1763     @Override
1764     public boolean isDefinitelyWritable(int column) throws SQLException {
1765         // TODO Auto-generated method stub
1766         return false;
1767     }
1768
1769     @Override
1770     public int isNullable(int column) throws SQLException {
1771         // TODO Auto-generated method stub
1772         return 0;
1773     }
1774
1775     @Override
1776     public boolean isReadOnly(int column) throws SQLException {
1777         // TODO Auto-generated method stub
1778         return false;
1779     }
1780
1781     @Override
1782     public boolean isSearchable(int column) throws SQLException {
1783         // TODO Auto-generated method stub
1784         return false;
1785     }
1786
1787     @Override
1788     public boolean isSigned(int column) throws SQLException {
1789         // TODO Auto-generated method stub
1790         return false;
1791     }
1792
1793     @Override
1794     public boolean isWritable(int column) throws SQLException {
1795         // TODO Auto-generated method stub
1796         return false;
1797     }
1798
1799     @Override
1800     public <T> T getObject(int columnIndex, Class<T> type) throws SQLException {
1801         // TODO Auto-generated method stub
1802         return null;
1803     }
1804
1805     @Override
1806     public <T> T getObject(String columnLabel, Class<T> type)
1807             throws SQLException {
1808         // TODO Auto-generated method stub
1809         return null;
1810     }
1811
1812     // //Metadata
1813
1814 }