X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-xsql%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fxsql%2Fjdbc%2FJDBCResultSet.java;h=021f6ee19b7d0bfdb71cdfc8f954783191e99f4f;hp=7603a3e9ae34aac783b0f049e8e671d7bbd1a549;hb=139937c2e646894af6a9b2b8a8a1047c6ef82485;hpb=d255fdd0b14660a22ff63771d954ac3fe5d0cb7e diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java index 7603a3e9ae..021f6ee19b 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java @@ -4,6 +4,7 @@ import java.io.InputStream; import java.io.Reader; import java.io.Serializable; import java.lang.reflect.Method; +import java.lang.reflect.Proxy; import java.math.BigDecimal; import java.net.URL; import java.sql.Array; @@ -37,15 +38,13 @@ import org.opendaylight.controller.md.sal.dom.xsql.XSQLColumn; import org.opendaylight.controller.md.sal.dom.xsql.XSQLCriteria; import org.opendaylight.controller.md.sal.dom.xsql.XSQLODLUtils; -public class JDBCResultSet - implements Serializable, ResultSet, ResultSetMetaData { +public class JDBCResultSet implements Serializable, ResultSet, + ResultSetMetaData { private static final long serialVersionUID = -7450200738431047057L; private String sql = null; - private List tablesInQuery = - new ArrayList(); - private Map tablesInQueryMap = - new ConcurrentHashMap(); + private List tablesInQuery = new ArrayList(); + private Map tablesInQueryMap = new ConcurrentHashMap(); private List fieldsInQuery = new ArrayList(); private transient LinkedList records = new LinkedList(); private transient Map currentRecord = null; @@ -53,10 +52,32 @@ public class JDBCResultSet private int id = 0; private static Integer nextID = new Integer(0); public int numberOfTasks = 0; - private Map>> criteria = - new ConcurrentHashMap>>(); + private Map>> criteria = new ConcurrentHashMap>>(); private Exception err = null; private List EMPTY_RESULT = new LinkedList(); + private transient Map subQueries = new HashMap(); + + public ResultSet getProxy() { + return (ResultSet) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] {ResultSet.class }, new JDBCProxy(this)); + } + + public void setSQL(String _sql) { + this.sql = _sql; + } + + public JDBCResultSet addSubQuery(String _sql,String logicalName) { + if(subQueries == null) + subQueries = new HashMap(); + JDBCResultSet rs = new JDBCResultSet(_sql); + this.subQueries.put(logicalName,rs); + return rs; + } + + public Map getSubQueries() { + if(this.subQueries==null) + this.subQueries = new HashMap<>(); + return this.subQueries; + } public JDBCResultSet(String _sql) { synchronized (JDBCResultSet.class) { @@ -88,12 +109,13 @@ public class JDBCResultSet } public int isObjectFitCriteria(Map objValues, String tableName) { - Map> tblCriteria = criteria.get(tableName); + Map> tblCriteria = criteria + .get(tableName); if (tblCriteria == null) { return 1; } for (Map.Entry> cc : tblCriteria - .entrySet()) { + .entrySet()) { for (XSQLCriteria c : cc.getValue()) { Object value = objValues.get(cc.getKey().toString()); int result = c.checkValue(value); @@ -106,16 +128,16 @@ public class JDBCResultSet } public int isObjectFitCriteria(Object element, Class cls) { - Map> tblCriteria = - criteria.get(cls.getName()); + Map> tblCriteria = criteria.get(cls + .getName()); if (tblCriteria == null) { return 1; } for (Map.Entry> cc : tblCriteria - .entrySet()) { + .entrySet()) { for (XSQLCriteria c : cc.getValue()) { - int result = - c.isObjectFitCriteria(element, cc.getKey().getName()); + int result = c.isObjectFitCriteria(element, cc.getKey() + .getName()); if (result == 0) { return 0; } @@ -185,16 +207,15 @@ public class JDBCResultSet } } - public void addRecord(ArrayList hierarchy) { Map rec = new HashMap(); for (int i = hierarchy.size() - 1; i >= 0; i--) { Object element = hierarchy.get(i); for (XSQLColumn c : fieldsInQuery) { - if (c.getTableName() - .equals(element.getClass().getSimpleName())) { + if (c.getTableName().equals(element.getClass().getSimpleName())) { try { - Method m = element.getClass().getMethod(c.getName(), null); + Method m = element.getClass().getMethod(c.getName(), + null); Object value = m.invoke(element, null); rec.put(c.getName(), value); } catch (Exception err) { @@ -276,18 +297,16 @@ public class JDBCResultSet Map subChildren = XSQLODLUtils.getChildren(node); Map result = new HashMap(); for (Object stc : subChildren.values()) { - if (stc.getClass().getName() - .endsWith("ImmutableAugmentationNode")) { + if (stc.getClass().getName().endsWith("ImmutableAugmentationNode")) { Map values = XSQLODLUtils.getChildren(stc); for (Object key : values.keySet()) { Object val = values.get(key); - if (val.getClass().getName() - .endsWith("ImmutableLeafNode")) { + if (val.getClass().getName().endsWith("ImmutableLeafNode")) { Object value = XSQLODLUtils.getValue(val); String k = XSQLODLUtils.getNodeName(val); if (value != null) { result.put(bpn.getBluePrintNodeName() + "." + k, - value.toString()); + value.toString()); } } } @@ -295,20 +314,27 @@ public class JDBCResultSet String k = XSQLODLUtils.getNodeName(stc); Object value = XSQLODLUtils.getValue(stc); if (value != null) { - result.put(bpn.getBluePrintNodeName() + "." + k, value.toString()); + result.put(bpn.getBluePrintNodeName() + "." + k, + value.toString()); } } } return result; } - private void addToData(Record rec, XSQLBluePrintNode bpn, XSQLBluePrint bluePrint, Map fullRecord) { - XSQLBluePrintNode eNodes[] = bluePrint.getBluePrintNodeByODLTableName(XSQLODLUtils.getNodeIdentiofier(rec.element)); + private void addToData(Record rec, XSQLBluePrintNode bpn, + XSQLBluePrint bluePrint, Map fullRecord) { + XSQLBluePrintNode eNodes[] = bluePrint + .getBluePrintNodeByODLTableName(XSQLODLUtils + .getNodeIdentiofier(rec.element)); if (bpn != null) { for (XSQLColumn c : fieldsInQuery) { - for(XSQLBluePrintNode eNode:eNodes){ - if (((XSQLBluePrintNode) c.getBluePrintNode()).getBluePrintNodeName().equals(eNode.getBluePrintNodeName())) { - //Object value = Criteria.getValue(rec.element, c.getName()); + for (XSQLBluePrintNode eNode : eNodes) { + if (((XSQLBluePrintNode) c.getBluePrintNode()) + .getBluePrintNodeName().equals( + eNode.getBluePrintNodeName())) { + // Object value = Criteria.getValue(rec.element, + // c.getName()); String columnName = c.toString(); Object value = fullRecord.get(columnName); if (value != null) { @@ -346,7 +372,8 @@ public class JDBCResultSet return false; } - public List getChildren(Object node, String tableName,XSQLBluePrint bluePrint) { + public List getChildren(Object node, String tableName, + XSQLBluePrint bluePrint) { List children = XSQLODLUtils.getMChildren(node); List result = new LinkedList(); @@ -354,28 +381,33 @@ public class JDBCResultSet for (Object child : children) { String odlNodeName = XSQLODLUtils.getNodeIdentiofier(child); - if(odlNodeName==null) continue; + if (odlNodeName == null) + continue; - XSQLBluePrintNode eNodes[] = bluePrint.getBluePrintNodeByODLTableName(odlNodeName); - if(eNodes==null) continue; + XSQLBluePrintNode eNodes[] = bluePrint + .getBluePrintNodeByODLTableName(odlNodeName); + if (eNodes == null) + continue; boolean match = false; - for(XSQLBluePrintNode enode:eNodes){ - if(tableName.startsWith(enode.toString())){ + for (XSQLBluePrintNode enode : eNodes) { + if (tableName.startsWith(enode.toString())) { match = true; break; } } - if(!match) continue; + if (!match) + continue; if (child.getClass().getName().endsWith("ImmutableContainerNode")) { result.add(child); - }else - if (child.getClass().getName().endsWith("ImmutableAugmentationNode")) { + } else if (child.getClass().getName() + .endsWith("ImmutableAugmentationNode")) { List _children = XSQLODLUtils.getMChildren(child); for (Object c : _children) { - if (c.getClass().getName().endsWith("ImmutableContainerNode")) { + if (c.getClass().getName() + .endsWith("ImmutableContainerNode")) { result.add(c); } } @@ -386,21 +418,26 @@ public class JDBCResultSet return result; } - public List addRecords(Object element, XSQLBluePrintNode node,boolean root, String tableName,XSQLBluePrint bluePrint) { + public List addRecords(Object element, XSQLBluePrintNode node, + boolean root, String tableName, XSQLBluePrint bluePrint) { List result = new LinkedList(); String nodeID = XSQLODLUtils.getNodeIdentiofier(element); if (node.getODLTableName().equals(nodeID)) { - XSQLBluePrintNode bluePrintNode = bluePrint.getBluePrintNodeByODLTableName(nodeID)[0]; + XSQLBluePrintNode bluePrintNode = bluePrint + .getBluePrintNodeByODLTableName(nodeID)[0]; Record rec = new Record(); rec.element = element; - XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode.getBluePrintNodeName()); - if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName()) || bpn != null) { + XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode + .getBluePrintNodeName()); + if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName()) + || bpn != null) { Map allKeyValues = collectColumnValues(element, bpn); - if (!(isObjectFitCriteria(allKeyValues, bpn.getBluePrintNodeName()) == 1)) { + if (!(isObjectFitCriteria(allKeyValues, + bpn.getBluePrintNodeName()) == 1)) { return EMPTY_RESULT; } - addToData(rec, bpn, bluePrint,allKeyValues); + addToData(rec, bpn, bluePrint, allKeyValues); } if (root) { addRecord(rec.data); @@ -411,9 +448,11 @@ public class JDBCResultSet } XSQLBluePrintNode parent = node.getParent(); - List subRecords = addRecords(element, parent, false, tableName,bluePrint); + List subRecords = addRecords(element, parent, false, tableName, + bluePrint); for (Record subRec : subRecords) { - List subO = getChildren(subRec.element, tableName,bluePrint); + List subO = getChildren(subRec.element, tableName, + bluePrint); if (subO != null) { for (Object subData : subO) { Record rec = new Record(); @@ -421,18 +460,21 @@ public class JDBCResultSet rec.data.putAll(subRec.data); String recID = XSQLODLUtils.getNodeIdentiofier(rec.element); - XSQLBluePrintNode eNodes[] = bluePrint.getBluePrintNodeByODLTableName(recID); + XSQLBluePrintNode eNodes[] = bluePrint + .getBluePrintNodeByODLTableName(recID); XSQLBluePrintNode bpn = null; - for(XSQLBluePrintNode eNode:eNodes){ - bpn = this.tablesInQueryMap.get(eNode.getBluePrintNodeName()); - if(bpn!=null) + for (XSQLBluePrintNode eNode : eNodes) { + bpn = this.tablesInQueryMap.get(eNode + .getBluePrintNodeName()); + if (bpn != null) break; } boolean isObjectInCriteria = true; if (bpn != null) { Map allKeyValues = collectColumnValues(rec.element, bpn); - if ((isObjectFitCriteria(allKeyValues, bpn.getBluePrintNodeName()) == 1)) { - addToData(rec, bpn,bluePrint,allKeyValues); + if ((isObjectFitCriteria(allKeyValues, + bpn.getBluePrintNodeName()) == 1)) { + addToData(rec, bpn, bluePrint, allKeyValues); } else { isObjectInCriteria = false; } @@ -440,7 +482,7 @@ public class JDBCResultSet if (isObjectInCriteria) { if (root) { - if(!rec.data.isEmpty()) + if (!rec.data.isEmpty()) addRecord(rec.data); } else { result.add(rec); @@ -545,7 +587,7 @@ public class JDBCResultSet @Override public BigDecimal getBigDecimal(int columnIndex, int scale) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return null; } @@ -558,7 +600,7 @@ public class JDBCResultSet @Override public BigDecimal getBigDecimal(String columnLabel, int scale) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return null; } @@ -798,22 +840,20 @@ public class JDBCResultSet @Override public Object getObject(int columnIndex, Map> map) - throws SQLException { - // TODO Auto-generated method stub - return null; + throws SQLException { + return getObject(columnIndex); } @Override public Object getObject(int columnIndex) throws SQLException { - return currentRecord - .get(this.fieldsInQuery.get(columnIndex - 1).toString()); + return currentRecord.get(this.fieldsInQuery.get(columnIndex - 1) + .toString()); } @Override public Object getObject(String columnLabel, Map> map) - throws SQLException { - // TODO Auto-generated method stub - return null; + throws SQLException { + return getObject(columnLabel); } @Override @@ -883,14 +923,12 @@ public class JDBCResultSet @Override public String getString(int columnIndex) throws SQLException { - // TODO Auto-generated method stub - return null; + return "Kuku"; } @Override public String getString(String columnLabel) throws SQLException { - // TODO Auto-generated method stub - return null; + return "Kuku"; } @Override @@ -919,7 +957,7 @@ public class JDBCResultSet @Override public Timestamp getTimestamp(int columnIndex, Calendar cal) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return null; } @@ -932,7 +970,7 @@ public class JDBCResultSet @Override public Timestamp getTimestamp(String columnLabel, Calendar cal) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return null; } @@ -945,8 +983,7 @@ public class JDBCResultSet @Override public int getType() throws SQLException { - // TODO Auto-generated method stub - return 0; + return ResultSet.TYPE_FORWARD_ONLY; } @Override @@ -968,8 +1005,7 @@ public class JDBCResultSet } @Override - public InputStream getUnicodeStream(String columnLabel) - throws SQLException { + public InputStream getUnicodeStream(String columnLabel) throws SQLException { // TODO Auto-generated method stub return null; } @@ -1096,100 +1132,98 @@ public class JDBCResultSet @Override public void updateAsciiStream(int columnIndex, InputStream x, int length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateAsciiStream(int columnIndex, InputStream x, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateAsciiStream(int columnIndex, InputStream x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateAsciiStream(String columnLabel, InputStream x, int length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override - public void updateAsciiStream(String columnLabel, InputStream x, - long length) - throws SQLException { + public void updateAsciiStream(String columnLabel, InputStream x, long length) + throws SQLException { // TODO Auto-generated method stub } @Override public void updateAsciiStream(String columnLabel, InputStream x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateBigDecimal(int columnIndex, BigDecimal x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateBigDecimal(String columnLabel, BigDecimal x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateBinaryStream(int columnIndex, InputStream x, int length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateBinaryStream(int columnIndex, InputStream x, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateBinaryStream(int columnIndex, InputStream x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override - public void updateBinaryStream(String columnLabel, InputStream x, - int length) - throws SQLException { + public void updateBinaryStream(String columnLabel, InputStream x, int length) + throws SQLException { // TODO Auto-generated method stub } @Override public void updateBinaryStream(String columnLabel, InputStream x, - long length) throws SQLException { + long length) throws SQLException { // TODO Auto-generated method stub } @Override public void updateBinaryStream(String columnLabel, InputStream x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1201,16 +1235,15 @@ public class JDBCResultSet } @Override - public void updateBlob(int columnIndex, InputStream inputStream, - long length) - throws SQLException { + public void updateBlob(int columnIndex, InputStream inputStream, long length) + throws SQLException { // TODO Auto-generated method stub } @Override public void updateBlob(int columnIndex, InputStream inputStream) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1223,14 +1256,14 @@ public class JDBCResultSet @Override public void updateBlob(String columnLabel, InputStream inputStream, - long length) throws SQLException { + long length) throws SQLException { // TODO Auto-generated method stub } @Override public void updateBlob(String columnLabel, InputStream inputStream) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1243,7 +1276,7 @@ public class JDBCResultSet @Override public void updateBoolean(String columnLabel, boolean x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1274,42 +1307,42 @@ public class JDBCResultSet @Override public void updateCharacterStream(int columnIndex, Reader x, int length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateCharacterStream(int columnIndex, Reader x, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateCharacterStream(int columnIndex, Reader x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateCharacterStream(String columnLabel, Reader reader, - int length) throws SQLException { + int length) throws SQLException { // TODO Auto-generated method stub } @Override public void updateCharacterStream(String columnLabel, Reader reader, - long length) throws SQLException { + long length) throws SQLException { // TODO Auto-generated method stub } @Override public void updateCharacterStream(String columnLabel, Reader reader) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1322,7 +1355,7 @@ public class JDBCResultSet @Override public void updateClob(int columnIndex, Reader reader, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1341,14 +1374,14 @@ public class JDBCResultSet @Override public void updateClob(String columnLabel, Reader reader, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateClob(String columnLabel, Reader reader) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1415,28 +1448,28 @@ public class JDBCResultSet @Override public void updateNCharacterStream(int columnIndex, Reader x, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateNCharacterStream(int columnIndex, Reader x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateNCharacterStream(String columnLabel, Reader reader, - long length) throws SQLException { + long length) throws SQLException { // TODO Auto-generated method stub } @Override public void updateNCharacterStream(String columnLabel, Reader reader) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1449,49 +1482,48 @@ public class JDBCResultSet @Override public void updateNClob(int columnIndex, Reader reader, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override - public void updateNClob(int columnIndex, Reader reader) - throws SQLException { + public void updateNClob(int columnIndex, Reader reader) throws SQLException { // TODO Auto-generated method stub } @Override public void updateNClob(String columnLabel, NClob nClob) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateNClob(String columnLabel, Reader reader, long length) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateNClob(String columnLabel, Reader reader) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateNString(int columnIndex, String nString) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateNString(String columnLabel, String nString) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1510,7 +1542,7 @@ public class JDBCResultSet @Override public void updateObject(int columnIndex, Object x, int scaleOrLength) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1523,7 +1555,7 @@ public class JDBCResultSet @Override public void updateObject(String columnLabel, Object x, int scaleOrLength) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1566,14 +1598,14 @@ public class JDBCResultSet @Override public void updateSQLXML(int columnIndex, SQLXML xmlObject) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateSQLXML(String columnLabel, SQLXML xmlObject) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1616,14 +1648,14 @@ public class JDBCResultSet @Override public void updateTimestamp(int columnIndex, Timestamp x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @Override public void updateTimestamp(String columnLabel, Timestamp x) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub } @@ -1670,8 +1702,7 @@ public class JDBCResultSet @Override public int getColumnType(int column) throws SQLException { - // TODO Auto-generated method stub - return 0; + return 12; } @Override @@ -1766,15 +1797,11 @@ public class JDBCResultSet @Override public T getObject(String columnLabel, Class type) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return null; } - - - ////Metadata - - + // //Metadata }