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%2FXSQLAdapter.java;h=386d925b00d02de486500cab807d0d5ce865ea0f;hp=96ddb9e0cea13478feba4edc40cd9394ab908d2e;hb=53b6d3519de3efe352a4a589c971cc30a82453e1;hpb=d313c1a52799705222817dfcaeb2b6ab2a6f9146 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 96ddb9e0ce..386d925b00 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 @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.controller.md.sal.dom.xsql; import java.io.File; @@ -8,7 +15,7 @@ import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.Arrays; -import java.util.Calendar; +import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -24,14 +31,22 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; - +/** + * @author Sharon Aicler(saichler@gmail.com) + **/ +/** + * To be removed in Nitrogen + */ +@Deprecated public class XSQLAdapter extends Thread implements SchemaContextListener { private static final int SLEEP = 10000; private static XSQLAdapter a = new XSQLAdapter(); private static PrintStream l = null; + private static String tmpDir = null; + private static File xqlLog = null; public boolean stopped = false; - private List elementHosts = new ArrayList(); + private List elementHosts = new ArrayList<>(); private String username; private String password; private String transport = "tcp"; @@ -39,7 +54,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { private int nThreads; private int qsize; private String applicationName = "NQL Adapter"; - private Map elements = new ConcurrentHashMap(); + private Map elements = new ConcurrentHashMap<>(); private StringBuffer lastInputString = new StringBuffer(); private XSQLBluePrint bluePrint = new XSQLBluePrint(); private boolean toCsv = false; @@ -49,6 +64,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { private String pinningFile; private ServerSocket serverSocket = null; private DOMDataBroker domDataBroker = null; + private static final String REFERENCE_FIELD_NAME = "reference"; private XSQLAdapter() { XSQLAdapter.log("Starting Adapter"); @@ -63,10 +79,28 @@ 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; } + public static File getXQLLogfile() { + tmpDir = System.getProperty("java.io.tmpdir"); + xqlLog = new File(tmpDir + "/xql.log"); + return xqlLog; + } + public static void main(String args[]) { XSQLAdapter adapter = new XSQLAdapter(); adapter.start(); @@ -78,11 +112,11 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { synchronized (XSQLAdapter.class) { if (l == null) { l = new PrintStream( - new FileOutputStream("/tmp/xql.log")); + new FileOutputStream(getXQLLogfile())); } } } - l.print(Calendar.getInstance().getTime()); + l.print(new Date()); l.print(" - "); l.println(str); } catch (Exception err) { @@ -96,11 +130,11 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { synchronized (XSQLAdapter.class) { if (l == null) { l = new PrintStream( - new FileOutputStream("/tmp/xql.log")); + new FileOutputStream(getXQLLogfile())); } } } - l.print(Calendar.getInstance().getTime()); + l.print(new Date()); l.print(" - "); e.printStackTrace(l); } catch (Exception err) { @@ -129,30 +163,21 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { public List collectModuleRoots(XSQLBluePrintNode table,LogicalDatastoreType type) { if (table.getParent().isModule()) { try { - List result = new LinkedList(); + List result = new LinkedList<>(); YangInstanceIdentifier instanceIdentifier = YangInstanceIdentifier .builder() - .node(XSQLODLUtils.getPath(table.getODLNode()).get(0)) - .toInstance(); + .node(XSQLODLUtils.getPath(table.getFirstFromSchemaNodes()).get(0)) + .build(); DOMDataReadTransaction t = this.domDataBroker .newReadOnlyTransaction(); Object node = t.read(type, instanceIdentifier).get(); - node = XSQLODLUtils.get(node, "reference"); + node = XSQLODLUtils.get(node, REFERENCE_FIELD_NAME); if (node == null) { return result; } - - // XSQLAdapter.log(""+node); - Map children = XSQLODLUtils.getChildren(node); - for (Object c : children.values()) { - Map sons = XSQLODLUtils.getChildren(c); - for (Object child : sons.values()) { - result.add(child); - } - } - + result.add(node); return result; } catch (Exception err) { XSQLAdapter.log(err); @@ -164,6 +189,10 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { } public void execute(JDBCResultSet rs) { + if(this.domDataBroker==null){ + rs.setFinished(true); + return; + } List tables = rs.getTables(); List roots = collectModuleRoots(tables.get(0),LogicalDatastoreType.OPERATIONAL); roots.addAll(collectModuleRoots(tables.get(0),LogicalDatastoreType.CONFIGURATION)); @@ -171,7 +200,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { rs.setFinished(true); } XSQLBluePrintNode main = rs.getMainTable(); - List tasks = new LinkedList(); + List tasks = new LinkedList<>(); for (Object entry : roots) { NETask task = new NETask(rs, entry, main, bluePrint); @@ -226,7 +255,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { sout.println("Unknown Interface " + substr); return; } - List fld = new ArrayList(); + List fld = new ArrayList<>(); for (XSQLBluePrintRelation r : node.getRelations()) { fld.add(r.toString()); } @@ -243,7 +272,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { sout.println("Unknown Interface " + substr); return; } - List fld = new ArrayList(); + List fld = new ArrayList<>(); for (XSQLColumn c : node.getColumns()) { fld.add(c.getName()); } @@ -282,6 +311,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); @@ -323,7 +354,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { JDBCResultSet rs = new JDBCResultSet(sql); try { int count = 0; - jdbcServer.execute(rs, this); + JDBCServer.execute(rs, this); boolean isFirst = true; int loc = rs.getFields().size() - 1; int totalWidth = 0; @@ -492,13 +523,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; } }