Introduce schema config param 71/44271/2
authordglFromAtt <dgl@research.att.com>
Mon, 23 Apr 2018 22:16:42 +0000 (18:16 -0400)
committerdglFromAtt <dgl@research.att.com>
Mon, 23 Apr 2018 23:36:26 +0000 (19:36 -0400)
Change-Id: Ic20853cbf2301fecdc56ba6de047c2f1c7f26475
Signed-off-by: dglFromAtt <dgl@research.att.com>
Issue-ID: DMAAP-434
Signed-off-by: dglFromAtt <dgl@research.att.com>
pom.xml
src/main/java/org/onap/dmaap/dbcapi/database/ConnectionFactory.java
src/main/java/org/onap/dmaap/dbcapi/database/LoadSchema.java
src/main/java/org/onap/dmaap/dbcapi/database/TableHandler.java
version.properties

diff --git a/pom.xml b/pom.xml
index 22dcc7a..68a2a8f 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <jettyVersion>9.3.9.v20160517</jettyVersion> 
                <eelf.version>0.0.1</eelf.version>
-               <artifact.version>1.0.5-SNAPSHOT</artifact.version>
+               <artifact.version>1.0.6-SNAPSHOT</artifact.version>
                <!-- SONAR -->
                <jacoco.version>0.7.7.201606060606</jacoco.version>
                <sonar-jacoco-listeners.version>3.2</sonar-jacoco-listeners.version>
index 1d93d68..38c063c 100644 (file)
@@ -52,12 +52,15 @@ public class ConnectionFactory      {
        private String  dbname;
        private String  dbuser;
        private String  dbcr;
+       private String  schema;
+       
        public ConnectionFactory() {
                Properties p = DmaapConfig.getConfig();
                host = p.getProperty("DB.host", "dcae-pstg-write-ftl.domain.notset.com");
                dbname = p.getProperty("DB.name", "dmaap");
                dbuser = p.getProperty("DB.user", "dmaap_admin");
                dbcr = p.getProperty("DB.cred", "test234-ftl");
+               schema = p.getProperty("DB.schema", "public");
        }
        public static ConnectionFactory getDefaultInstance() {
                return(instance);
@@ -77,6 +80,9 @@ public class ConnectionFactory        {
                p.put("password", dbcr);
                return(DriverManager.getConnection("jdbc:postgresql://" + host + "/" + dbname, p));
        }
+       public String getSchema() {
+               return(schema);
+       }
        public void release(Connection c) {
                synchronized(this) {
                        if (cur < pool.length) {
index 6e64c4a..2a7925b 100644 (file)
@@ -55,7 +55,7 @@ public class LoadSchema       {
                Connection c = null;
                Statement stmt = null;
                InputStream is = null;
-               try {
+               try { 
                        c = cf.get(true);
                        stmt = c.createStatement();
                        int newver = -1;
@@ -63,11 +63,17 @@ public class LoadSchema     {
                                newver = getVer(stmt);
                        } catch (Exception e) {}
                        logger.info("Database schema currently at version " + newver++);
+
                        while ((is = LoadSchema.class.getClassLoader().getResourceAsStream("schema_" + newver + ".sql")) != null) {
                                logger.info("Upgrading database schema to version " + newver);
                                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                                String s;
-                               String sofar = null;
+                               String sofar;
+                               if ( newver > 0 ) {
+                                       sofar = null;
+                               } else {
+                                       sofar = String.format( "SET search_path to %s;", cf.getSchema());
+                               }
                                while ((s = br.readLine()) != null) {
                                        logger.info("SCHEMA: " + s);
                                        s = s.trim();
index b43edc5..66539ed 100644 (file)
@@ -68,7 +68,8 @@ class TableHandler<C> {
        private void setup(DatabaseMetaData dmd, Class<C> cls, String tabname, String keyname) throws Exception {
                this.cls = cls;
                Vector<DBFieldHandler> h = new Vector<DBFieldHandler>();
-               ResultSet rs = dmd.getColumns("", "public", tabname, null);
+               String qualifiedTableName = String.format( "%s.%s", cf.getSchema(), tabname );
+               ResultSet rs = dmd.getColumns("", cf.getSchema(), tabname, null);
                StringBuffer sb1 = new StringBuffer();
                StringBuffer sb2 = new StringBuffer();
                StringBuffer sb3 = new StringBuffer();
@@ -100,15 +101,15 @@ class TableHandler<C>     {
                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()]);
        }
index 5416ded..ac41e7d 100644 (file)
@@ -27,7 +27,7 @@
 
 major=1
 minor=0
-patch=5
+patch=6
 base_version=${major}.${minor}.${patch}
 
 # Release must be completed with git revision # in Jenkins