X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdbcapi%2Fdatabase%2FTableHandler.java;h=fc68aa24e4cb3650d55a60d13298544be013309e;hb=HEAD;hp=b43edc5ef0c0bfd1889ee738fa1843f76b3250b9;hpb=0bff051a842b164b680bc938f4a56db435dd5841;p=dmaap%2Fdbcapi.git diff --git a/src/main/java/org/onap/dmaap/dbcapi/database/TableHandler.java b/src/main/java/org/onap/dmaap/dbcapi/database/TableHandler.java index b43edc5..fc68aa2 100644 --- a/src/main/java/org/onap/dmaap/dbcapi/database/TableHandler.java +++ b/src/main/java/org/onap/dmaap/dbcapi/database/TableHandler.java @@ -20,9 +20,15 @@ package org.onap.dmaap.dbcapi.database; -import java.util.*; import java.lang.reflect.*; -import java.sql.*; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import java.util.Vector; class TableHandler { protected ConnectionFactory cf; @@ -34,22 +40,10 @@ class TableHandler { protected String initstmt; protected Class cls; protected DBFieldHandler[] fields; - private static Map> exceptions = new HashMap>(); - public static void setSpecialCase(String dbtabname, String dbfldname, DBFieldHandler.SqlOp handler) { - Map m = exceptions.get(dbtabname); - if (m == null) { - m = new HashMap(); - exceptions.put(dbtabname, m); - } - m.put(dbfldname, handler); - } - public static DBFieldHandler.SqlOp getSpecialCase(String dbtabname, String dbfldname) { - Map m = exceptions.get(dbtabname); - if (m != null) { - return(m.get(dbfldname)); - } - return(null); - } + private static Map> exceptions = new HashMap<>(); + private String select = "SELECT "; + private String from = " FROM "; + protected TableHandler(Class cls, String tabname, String keyname) throws Exception { this(ConnectionFactory.getDefaultInstance(), cls, tabname, keyname); } @@ -65,13 +59,31 @@ class TableHandler { } } } + + public static void setSpecialCase(String dbtabname, String dbfldname, DBFieldHandler.SqlOp handler) { + Map m = exceptions.get(dbtabname); + if (m == null) { + m = new HashMap<>(); + exceptions.put(dbtabname, m); + } + m.put(dbfldname, handler); + } + public static DBFieldHandler.SqlOp getSpecialCase(String dbtabname, String dbfldname) { + Map m = exceptions.get(dbtabname); + if (m != null) { + return(m.get(dbfldname)); + } + return(null); + } + private void setup(DatabaseMetaData dmd, Class cls, String tabname, String keyname) throws Exception { this.cls = cls; - Vector h = new Vector(); - ResultSet rs = dmd.getColumns("", "public", tabname, null); - StringBuffer sb1 = new StringBuffer(); - StringBuffer sb2 = new StringBuffer(); - StringBuffer sb3 = new StringBuffer(); + Vector h = new Vector<>(); + String qualifiedTableName = String.format( "%s.%s", cf.getSchema(), tabname ); + ResultSet rs = dmd.getColumns("", cf.getSchema(), tabname, null); + StringBuilder sb1 = new StringBuilder(); + StringBuilder sb2 = new StringBuilder(); + StringBuilder sb3 = new StringBuilder(); int count = 0; while (rs.next()) { if (!rs.getString(3).equals(tabname)) { @@ -100,15 +112,15 @@ class TableHandler { if (haskey) { count++; h.add(new DBFieldHandler(cls, keyname, count, getSpecialCase(tabname, keyname))); - delstmt = "DELETE FROM " + tabname + " WHERE " + keyname + " = ?"; - insorreplstmt = "INSERT INTO " + tabname + " (" + clist + ", " + keyname + ") VALUES (" + qlist + ", ?) ON CONFLICT(" + keyname + ") DO UPDATE SET (" + clist + ") = (" + elist + ")"; - getstmt = "SELECT " + clist + ", " + keyname + " FROM " + tabname + " WHERE " + keyname + " = ?"; - liststmt = "SELECT " + clist + ", " + keyname + " FROM " + tabname; + delstmt = "DELETE FROM " + qualifiedTableName + " WHERE " + keyname + " = ?"; + insorreplstmt = "INSERT INTO " + qualifiedTableName + " (" + clist + ", " + keyname + ") VALUES (" + qlist + ", ?) ON CONFLICT(" + keyname + ") DO UPDATE SET (" + clist + ") = (" + elist + ")"; + getstmt = select + clist + ", " + keyname + from + qualifiedTableName + " WHERE " + keyname + " = ?"; + liststmt = select + clist + ", " + keyname + from + qualifiedTableName; } else { - delstmt = "DELETE FROM " + tabname; - initstmt = "INSERT INTO " + tabname + " (" + clist + ") VALUES (" + qlist + ")"; - insorreplstmt = "UPDATE " + tabname + " SET (" + clist + ") = (" + qlist + ")"; - getstmt = "SELECT " + clist + ", " + keyname + " FROM " + tabname; + delstmt = "DELETE FROM " + qualifiedTableName; + initstmt = "INSERT INTO " + qualifiedTableName + " (" + clist + ") VALUES (" + qlist + ")"; + insorreplstmt = "UPDATE " + qualifiedTableName + " SET (" + clist + ") = (" + qlist + ")"; + getstmt = select + clist + ", " + keyname + from + qualifiedTableName; } fields = h.toArray(new DBFieldHandler[h.size()]); }