X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-xsql%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fxsql%2FXSQLAdapter.java;h=beab6d2fb1a0014e3dece9b1c07f77aa611ee090;hb=9b3246b5f5ed82559bf0c75141731dc3376125f9;hp=496f27ecaa1defe4f49d1cd724b58e8a3f673794;hpb=36f7cda0765248e257702addbff6f50da7ab0dd6;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java index 496f27ecaa..beab6d2fb1 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java @@ -63,6 +63,18 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { } + public void loadBluePrint(){ + try{ + InputStream in = this.getClass().getClassLoader().getResourceAsStream("BluePrintCache.dat"); + if(in!=null){ + this.bluePrint = XSQLBluePrint.load(in); + } + in.close(); + }catch(Exception err){ + err.printStackTrace(); + } + } + public static XSQLAdapter getInstance() { return a; } @@ -126,7 +138,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { return this.bluePrint; } - public List collectModuleRoots(XSQLBluePrintNode table) { + public List collectModuleRoots(XSQLBluePrintNode table,LogicalDatastoreType type) { if (table.getParent().isModule()) { try { List result = new LinkedList(); @@ -136,8 +148,9 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { .toInstance(); DOMDataReadTransaction t = this.domDataBroker .newReadOnlyTransaction(); - Object node = t.read(LogicalDatastoreType.OPERATIONAL, + Object node = t.read(type, instanceIdentifier).get(); + node = XSQLODLUtils.get(node, "reference"); if (node == null) { return result; @@ -157,14 +170,22 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { XSQLAdapter.log(err); } } else { - return collectModuleRoots(table.getParent()); + return collectModuleRoots(table.getParent(),type); } return null; } public void execute(JDBCResultSet rs) { + if(this.domDataBroker==null){ + rs.setFinished(true); + return; + } List tables = rs.getTables(); - List roots = collectModuleRoots(tables.get(0)); + List roots = collectModuleRoots(tables.get(0),LogicalDatastoreType.OPERATIONAL); + roots.addAll(collectModuleRoots(tables.get(0),LogicalDatastoreType.CONFIGURATION)); + if(roots.isEmpty()){ + rs.setFinished(true); + } XSQLBluePrintNode main = rs.getMainTable(); List tasks = new LinkedList(); @@ -277,6 +298,8 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { sout.close(); } catch (Exception err) { } + } else if (input.equals("save")) { + XSQLBluePrint.save(this.bluePrint); } else if (input.equals("tocsv")) { toCsv = !toCsv; sout.println("to csv file is " + toCsv); @@ -487,13 +510,15 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { out.print(prompt); char c = 0; byte data[] = new byte[1]; - while (c != '\n') { + while (!socket.isClosed() && socket.isConnected() && !socket.isInputShutdown() && c != '\n') { try { in.read(data); c = (char) data[0]; inputString.append(c); } catch (Exception err) { err.printStackTrace(out); + stopped = true; + break; } }