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%2FXSQLBluePrint.java;h=76152966d06e8448f0056ed363ec564d761295ec;hp=1a31662020e8dc6856e9e68adee83e5a10ac6c71;hb=2801b4929e60938cdac4c84dff6422e24e93d11d;hpb=6d73d16b194435ea1ea783a37d1b51fc1f558a1f diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java index 1a31662020..76152966d0 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java @@ -1,5 +1,19 @@ +/* + * 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.DataInputStream; +import java.io.DataOutputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; @@ -16,19 +30,23 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +/** + * @author Sharon Aicler(saichler@gmail.com) + **/ +public class XSQLBluePrint implements DatabaseMetaData, Serializable { -public class XSQLBluePrint implements DatabaseMetaData { + private static final long serialVersionUID = 1L; - public static final String CACHE_FILE_NAME = "BluePrintCache.dat"; + public static final String CACHE_FILE_NAME = "./BluePrintCache.dat"; private Map tableNameToBluePrint = new HashMap(); - private Map> odlNameToBluePrint = new HashMap>(); + private Map> odlNameToBluePrint = new HashMap>(); private boolean cacheLoadedSuccessfuly = false; private DatabaseMetaData myProxy = null; public static final String replaceAll(String source, String toReplace, - String withThis) { + String withThis) { int index = source.indexOf(toReplace); int index2 = 0; StringBuffer result = new StringBuffer(); @@ -47,9 +65,41 @@ public class XSQLBluePrint implements DatabaseMetaData { public XSQLBluePrint() { } + public static void save(XSQLBluePrint bp) { + ObjectOutputStream out = null; + try { + out = new ObjectOutputStream(new DataOutputStream( + new FileOutputStream(CACHE_FILE_NAME))); + out.writeObject(bp); + } catch (Exception err) { + err.printStackTrace(); + } finally { + try { + out.close(); + } catch (Exception err) { + } + } + } + + public static XSQLBluePrint load(InputStream ins) { + ObjectInputStream in = null; + try { + in = new ObjectInputStream(new DataInputStream(ins)); + return (XSQLBluePrint) in.readObject(); + } catch (Exception err) { + err.printStackTrace(); + } finally { + try { + in.close(); + } catch (Exception err) { + } + } + return null; + } + private class NQLBluePrintProxy implements InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { + throws Throwable { System.out.println("Method " + method); return method.invoke(XSQLBluePrint.this, args); } @@ -58,9 +108,9 @@ public class XSQLBluePrint implements DatabaseMetaData { public DatabaseMetaData getProxy() { if (myProxy == null) { try { - myProxy = (DatabaseMetaData) Proxy - .newProxyInstance(getClass().getClassLoader(), - new Class[] {DatabaseMetaData.class}, + myProxy = (DatabaseMetaData) Proxy.newProxyInstance(getClass() + .getClassLoader(), + new Class[] { DatabaseMetaData.class }, new NQLBluePrintProxy()); } catch (Exception err) { err.printStackTrace(); @@ -69,22 +119,13 @@ public class XSQLBluePrint implements DatabaseMetaData { return myProxy; } - /* - public void loadBluePrintCache(String hostName) { - try { - ObjectInputStream in = new ObjectInputStream( - new FileInputStream(hostName + "-" + CACHE_FILE_NAME)); - cache = (Map) in.readObject(); - in.close(); - cacheLoadedSuccessfuly = true; - } catch (Exception err) { - //err.printStackTrace(); + public XSQLBluePrintNode[] getBluePrintNodeByODLTableName( + String odlTableName) { + Map map = this.odlNameToBluePrint + .get(odlTableName); + if (map == null) { + return null; } - }*/ - - public XSQLBluePrintNode[] getBluePrintNodeByODLTableName(String odlTableName) { - Map map = this.odlNameToBluePrint.get(odlTableName); - if(map==null) return null; return map.values().toArray(new XSQLBluePrintNode[map.size()]); } @@ -106,47 +147,49 @@ public class XSQLBluePrint implements DatabaseMetaData { } for (XSQLBluePrintNode n : tableNameToBluePrint.values()) { - if (n.getBluePrintNodeName().toLowerCase().endsWith(tableName.toLowerCase())) { + if (n.getBluePrintNodeName().toLowerCase() + .endsWith(tableName.toLowerCase())) { return n; } } for (XSQLBluePrintNode n : tableNameToBluePrint.values()) { - if (n.getBluePrintNodeName().toLowerCase().equals(tableName.toLowerCase())) { + if (n.getBluePrintNodeName().toLowerCase() + .equals(tableName.toLowerCase())) { return n; } } for (XSQLBluePrintNode n : tableNameToBluePrint.values()) { - if (n.getBluePrintNodeName().toLowerCase().indexOf(tableName.toLowerCase())!= -1) { + if (n.getBluePrintNodeName().toLowerCase() + .indexOf(tableName.toLowerCase()) != -1) { return n; } } return null; } - public boolean isCacheLoaded() { return cacheLoadedSuccessfuly; } - private static Map> superClassMap = new HashMap>(); + private static Map, Set>> superClassMap = new HashMap<>(); - public static Set getInheritance(Class myObjectClass, - Class returnType) { + public static Set> getInheritance(Class myObjectClass, + Class returnType) { if (returnType != null && myObjectClass.equals(returnType)) { - return new HashSet(); + return new HashSet<>(); } - Set result = superClassMap.get(myObjectClass); + Set> result = superClassMap.get(myObjectClass); if (result != null) { return result; } - result = new HashSet(); + result = new HashSet<>(); superClassMap.put(myObjectClass, result); if (returnType != null) { if (!returnType.equals(myObjectClass)) { - Class mySuperClass = myObjectClass.getSuperclass(); + Class mySuperClass = myObjectClass.getSuperclass(); while (mySuperClass != null) { result.add(mySuperClass); mySuperClass = mySuperClass.getSuperclass(); @@ -157,11 +200,11 @@ public class XSQLBluePrint implements DatabaseMetaData { return result; } - public static Set collectInterfaces(Class cls) { - Set result = new HashSet(); - Class myInterfaces[] = cls.getInterfaces(); + public static Set> collectInterfaces(Class cls) { + Set> result = new HashSet<>(); + Class myInterfaces[] = cls.getInterfaces(); if (myInterfaces != null) { - for (Class in : myInterfaces) { + for (Class in : myInterfaces) { result.add(in); result.addAll(collectInterfaces(in)); } @@ -169,30 +212,39 @@ public class XSQLBluePrint implements DatabaseMetaData { return result; } - public void addToBluePrintCache(XSQLBluePrintNode blNode) { - this.tableNameToBluePrint.put(blNode.getBluePrintNodeName(), blNode); - Map map = this.odlNameToBluePrint.get(blNode.getODLTableName()); - if(map==null){ - map = new HashMap(); - this.odlNameToBluePrint.put(blNode.getODLTableName(),map); + public XSQLBluePrintNode addToBluePrintCache(XSQLBluePrintNode blNode,XSQLBluePrintNode parent) { + XSQLBluePrintNode existingNode = this.tableNameToBluePrint.get(blNode.getBluePrintNodeName()); + if(existingNode!=null){ + existingNode.mergeAugmentation(blNode); + return existingNode; + }else{ + this.tableNameToBluePrint.put(blNode.getBluePrintNodeName(), blNode); + Map map = this.odlNameToBluePrint.get(blNode.getODLTableName()); + if (map == null) { + map = new HashMap(); + this.odlNameToBluePrint.put(blNode.getODLTableName(), map); + } + map.put(blNode.getBluePrintNodeName(), blNode); + if(parent!=null) + parent.addChild(blNode); + return blNode; } - map.put(blNode.getBluePrintNodeName(), blNode); } - public Class getGenericType(ParameterizedType type) { + public Class getGenericType(ParameterizedType type) { Type[] typeArguments = type.getActualTypeArguments(); for (Type typeArgument : typeArguments) { if (typeArgument instanceof ParameterizedType) { ParameterizedType pType = (ParameterizedType) typeArgument; - return (Class) pType.getRawType(); + return (Class) pType.getRawType(); } else if (typeArgument instanceof Class) { - return (Class) typeArgument; + return (Class) typeArgument; } } return null; } - public Class getMethodReturnTypeFromGeneric(Method m) { + public Class getMethodReturnTypeFromGeneric(Method m) { Type rType = m.getGenericReturnType(); if (rType instanceof ParameterizedType) { return getGenericType((ParameterizedType) rType); @@ -265,15 +317,15 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getAttributes(String catalog, String schemaPattern, - String typeNamePattern, String attributeNamePattern) - throws SQLException { + String typeNamePattern, String attributeNamePattern) + throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getBestRowIdentifier(String catalog, String schema, - String table, int scope, boolean nullable) throws SQLException { + String table, int scope, boolean nullable) throws SQLException { // TODO Auto-generated method stub return null; } @@ -304,15 +356,15 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getColumnPrivileges(String catalog, String schema, - String table, String columnNamePattern) throws SQLException { + String table, String columnNamePattern) throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getColumns(String catalog, String schemaPattern, - String tableNamePattern, String columnNamePattern) - throws SQLException { + String tableNamePattern, String columnNamePattern) + throws SQLException { // TODO Auto-generated method stub return null; } @@ -325,8 +377,8 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getCrossReference(String parentCatalog, - String parentSchema, String parentTable, String foreignCatalog, - String foreignSchema, String foreignTable) throws SQLException { + String parentSchema, String parentTable, String foreignCatalog, + String foreignSchema, String foreignTable) throws SQLException { // TODO Auto-generated method stub return null; } @@ -344,7 +396,7 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public String getDatabaseProductName() throws SQLException { - return "VNE Query Language"; + return "OpenDayLight"; } @Override @@ -383,9 +435,8 @@ public class XSQLBluePrint implements DatabaseMetaData { } @Override - public ResultSet getExportedKeys(String catalog, String schema, - String table) - throws SQLException { + public ResultSet getExportedKeys(String catalog, String schema, String table) + throws SQLException { // TODO Auto-generated method stub return null; } @@ -398,15 +449,15 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getFunctionColumns(String catalog, String schemaPattern, - String functionNamePattern, String columnNamePattern) - throws SQLException { + String functionNamePattern, String columnNamePattern) + throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getFunctions(String catalog, String schemaPattern, - String functionNamePattern) throws SQLException { + String functionNamePattern) throws SQLException { // TODO Auto-generated method stub return null; } @@ -418,16 +469,15 @@ public class XSQLBluePrint implements DatabaseMetaData { } @Override - public ResultSet getImportedKeys(String catalog, String schema, - String table) - throws SQLException { + public ResultSet getImportedKeys(String catalog, String schema, String table) + throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getIndexInfo(String catalog, String schema, String table, - boolean unique, boolean approximate) throws SQLException { + boolean unique, boolean approximate) throws SQLException { // TODO Auto-generated method stub return null; } @@ -572,22 +622,22 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getPrimaryKeys(String catalog, String schema, String table) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getProcedureColumns(String catalog, String schemaPattern, - String procedureNamePattern, String columnNamePattern) - throws SQLException { + String procedureNamePattern, String columnNamePattern) + throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getProcedures(String catalog, String schemaPattern, - String procedureNamePattern) throws SQLException { + String procedureNamePattern) throws SQLException { // TODO Auto-generated method stub return null; } @@ -618,7 +668,7 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getSchemas(String catalog, String schemaPattern) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return null; } @@ -655,14 +705,14 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getSuperTables(String catalog, String schemaPattern, - String tableNamePattern) throws SQLException { + String tableNamePattern) throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getSuperTypes(String catalog, String schemaPattern, - String typeNamePattern) throws SQLException { + String typeNamePattern) throws SQLException { // TODO Auto-generated method stub return null; } @@ -675,14 +725,14 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getTablePrivileges(String catalog, String schemaPattern, - String tableNamePattern) throws SQLException { + String tableNamePattern) throws SQLException { // TODO Auto-generated method stub return null; } @Override public ResultSet getTables(String catalog, String schemaPattern, - String tableNamePattern, String[] types) throws SQLException { + String tableNamePattern, String[] types) throws SQLException { return new TablesResultSet(this); } @@ -706,7 +756,7 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getUDTs(String catalog, String schemaPattern, - String typeNamePattern, int[] types) throws SQLException { + String typeNamePattern, int[] types) throws SQLException { // TODO Auto-generated method stub return null; } @@ -725,7 +775,7 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getVersionColumns(String catalog, String schema, - String table) throws SQLException { + String table) throws SQLException { // TODO Auto-generated method stub return null; } @@ -905,8 +955,7 @@ public class XSQLBluePrint implements DatabaseMetaData { } @Override - public boolean supportsCatalogsInPrivilegeDefinitions() - throws SQLException { + public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException { // TODO Auto-generated method stub return false; } @@ -937,7 +986,7 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public boolean supportsConvert(int fromType, int toType) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return false; } @@ -956,21 +1005,20 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public boolean supportsDataDefinitionAndDataManipulationTransactions() - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return false; } @Override public boolean supportsDataManipulationTransactionsOnly() - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return false; } @Override - public boolean supportsDifferentTableCorrelationNames() - throws SQLException { + public boolean supportsDifferentTableCorrelationNames() throws SQLException { // TODO Auto-generated method stub return false; } @@ -1133,14 +1181,14 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public boolean supportsResultSetConcurrency(int type, int concurrency) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return false; } @Override public boolean supportsResultSetHoldability(int holdability) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return false; } @@ -1200,8 +1248,7 @@ public class XSQLBluePrint implements DatabaseMetaData { } @Override - public boolean supportsStoredFunctionsUsingCallSyntax() - throws SQLException { + public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException { // TODO Auto-generated method stub return false; } @@ -1244,7 +1291,7 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public boolean supportsTransactionIsolationLevel(int level) - throws SQLException { + throws SQLException { // TODO Auto-generated method stub return false; } @@ -1299,8 +1346,8 @@ public class XSQLBluePrint implements DatabaseMetaData { @Override public ResultSet getPseudoColumns(String catalog, String schemaPattern, - String tableNamePattern, String columnNamePattern) - throws SQLException { + String tableNamePattern, String columnNamePattern) + throws SQLException { // TODO Auto-generated method stub return null; }