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;
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<XSQLBluePrintNode> tablesInQuery =
- new ArrayList<XSQLBluePrintNode>();
- private Map<String, XSQLBluePrintNode> tablesInQueryMap =
- new ConcurrentHashMap<String, XSQLBluePrintNode>();
+ private List<XSQLBluePrintNode> tablesInQuery = new ArrayList<XSQLBluePrintNode>();
+ private Map<String, XSQLBluePrintNode> tablesInQueryMap = new ConcurrentHashMap<String, XSQLBluePrintNode>();
private List<XSQLColumn> fieldsInQuery = new ArrayList<XSQLColumn>();
private transient LinkedList<Map> records = new LinkedList<Map>();
private transient Map currentRecord = null;
private int id = 0;
private static Integer nextID = new Integer(0);
public int numberOfTasks = 0;
- private Map<String, Map<XSQLColumn, List<XSQLCriteria>>> criteria =
- new ConcurrentHashMap<String, Map<XSQLColumn, List<XSQLCriteria>>>();
+ private Map<String, Map<XSQLColumn, List<XSQLCriteria>>> criteria = new ConcurrentHashMap<String, Map<XSQLColumn, List<XSQLCriteria>>>();
private Exception err = null;
private List<Record> EMPTY_RESULT = new LinkedList<Record>();
+ private transient Map<String,JDBCResultSet> subQueries = new HashMap<String,JDBCResultSet>();
+
+ 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<String,JDBCResultSet>();
+ JDBCResultSet rs = new JDBCResultSet(_sql);
+ this.subQueries.put(logicalName,rs);
+ return rs;
+ }
+
+ public Map<String,JDBCResultSet> getSubQueries() {
+ if(this.subQueries==null)
+ this.subQueries = new HashMap<>();
+ return this.subQueries;
+ }
public JDBCResultSet(String _sql) {
synchronized (JDBCResultSet.class) {
}
public int isObjectFitCriteria(Map objValues, String tableName) {
- Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria.get(tableName);
+ Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria
+ .get(tableName);
if (tblCriteria == null) {
return 1;
}
for (Map.Entry<XSQLColumn, List<XSQLCriteria>> cc : tblCriteria
- .entrySet()) {
+ .entrySet()) {
for (XSQLCriteria c : cc.getValue()) {
Object value = objValues.get(cc.getKey().toString());
int result = c.checkValue(value);
return 1;
}
- public int isObjectFitCriteria(Object element, Class cls) {
- Map<XSQLColumn, List<XSQLCriteria>> tblCriteria =
- criteria.get(cls.getName());
+ public int isObjectFitCriteria(Object element, Class<?> cls) {
+ Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria.get(cls
+ .getName());
if (tblCriteria == null) {
return 1;
}
for (Map.Entry<XSQLColumn, List<XSQLCriteria>> 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;
}
}
}
-
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) {
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());
}
}
}
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) {
return false;
}
- public List<Object> getChildren(Object node, String tableName,XSQLBluePrint bluePrint) {
+ public List<Object> getChildren(Object node, String tableName,
+ XSQLBluePrint bluePrint) {
List<Object> children = XSQLODLUtils.getMChildren(node);
List<Object> result = new LinkedList<Object>();
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<Object> _children = XSQLODLUtils.getMChildren(child);
for (Object c : _children) {
- if (c.getClass().getName().endsWith("ImmutableContainerNode")) {
+ if (c.getClass().getName()
+ .endsWith("ImmutableContainerNode")) {
result.add(c);
}
}
return result;
}
- public List<Record> addRecords(Object element, XSQLBluePrintNode node,boolean root, String tableName,XSQLBluePrint bluePrint) {
+ public List<Record> addRecords(Object element, XSQLBluePrintNode node,
+ boolean root, String tableName, XSQLBluePrint bluePrint) {
List<Record> result = new LinkedList<Record>();
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);
}
XSQLBluePrintNode parent = node.getParent();
- List<Record> subRecords = addRecords(element, parent, false, tableName,bluePrint);
+ List<Record> subRecords = addRecords(element, parent, false, tableName,
+ bluePrint);
for (Record subRec : subRecords) {
- List<Object> subO = getChildren(subRec.element, tableName,bluePrint);
+ List<Object> subO = getChildren(subRec.element, tableName,
+ bluePrint);
if (subO != null) {
for (Object subData : subO) {
Record rec = new Record();
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;
}
if (isObjectInCriteria) {
if (root) {
- if(!rec.data.isEmpty())
+ if (!rec.data.isEmpty())
addRecord(rec.data);
} else {
result.add(rec);
@Override
public BigDecimal getBigDecimal(int columnIndex, int scale)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public BigDecimal getBigDecimal(String columnLabel, int scale)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Object getObject(int columnIndex, Map<String, Class<?>> 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<String, Class<?>> map)
- throws SQLException {
- // TODO Auto-generated method stub
- return null;
+ throws SQLException {
+ return getObject(columnLabel);
}
@Override
@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
@Override
public Timestamp getTimestamp(int columnIndex, Calendar cal)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Timestamp getTimestamp(String columnLabel, Calendar cal)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public int getType() throws SQLException {
- // TODO Auto-generated method stub
- return 0;
+ return ResultSet.TYPE_FORWARD_ONLY;
}
@Override
}
@Override
- public InputStream getUnicodeStream(String columnLabel)
- throws SQLException {
+ public InputStream getUnicodeStream(String columnLabel) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@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
}
}
@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
}
@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
}
@Override
public void updateBoolean(String columnLabel, boolean x)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
}
@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
}
@Override
public void updateClob(int columnIndex, Reader reader, long length)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
}
@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
}
@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
}
@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
}
@Override
public void updateObject(int columnIndex, Object x, int scaleOrLength)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void updateObject(String columnLabel, Object x, int scaleOrLength)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
}
@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
}
@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
}
@Override
public int getColumnType(int column) throws SQLException {
- // TODO Auto-generated method stub
- return 0;
+ return 12;
}
@Override
@Override
public <T> T getObject(String columnLabel, Class<T> type)
- throws SQLException {
+ throws SQLException {
// TODO Auto-generated method stub
return null;
}
-
-
- ////Metadata
-
-
+ // //Metadata
}