\r
package org.onap.dmaap.datarouter.provisioning.utils;\r
\r
-import org.apache.log4j.Logger;\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileReader;\r
+import java.io.IOException;\r
+import java.io.LineNumberReader;\r
+import java.sql.Connection;\r
+import java.sql.DatabaseMetaData;\r
+import java.sql.DriverManager;\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.sql.Statement;\r
+import java.util.HashSet;\r
+import java.util.LinkedList;\r
+import java.util.NoSuchElementException;\r
+import java.util.Properties;\r
+import java.util.Queue;\r
+import java.util.Set;\r
\r
-import java.io.*;\r
-import java.sql.*;\r
-import java.util.*;\r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
\r
/**\r
* Load the DB JDBC driver, and manage a simple pool of connections to the DB.\r
*/\r
public class DB {\r
\r
- private static Logger intlogger = Logger.getLogger("org.onap.dmaap.datarouter.provisioning.internal");\r
+ private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");\r
\r
private static String DB_URL;\r
private static String DB_LOGIN;\r
private static Properties props;\r
private static final Queue<Connection> queue = new LinkedList<>();\r
\r
- public static String HTTPS_PORT;\r
- public static String HTTP_PORT;\r
+ private static String HTTPS_PORT;\r
+ private static String HTTP_PORT;\r
\r
/**\r
* Construct a DB object. If this is the very first creation of this object, it will load a copy of the properties\r
- * for the server, and attempt to load the JDBC driver for the database. If a fatal error occurs (e.g. either the\r
+ * for the server, and attempt to load the JDBC driver for the database. If a fatal error occurs (e.g. either the\r
* properties file or the DB driver is missing), the JVM will exit.\r
*/\r
public DB() {\r
HTTP_PORT = (String) props.get("org.onap.dmaap.datarouter.provserver.http.port");\r
Class.forName(DB_DRIVER);\r
} catch (IOException e) {\r
- intlogger.fatal("PROV9003 Opening properties: " + e.getMessage());\r
- e.printStackTrace();\r
+ intlogger.error("PROV9003 Opening properties: " + e.getMessage(), e);\r
System.exit(1);\r
} catch (ClassNotFoundException e) {\r
- intlogger.fatal("PROV9004 cannot find the DB driver: " + e);\r
- e.printStackTrace();\r
+ intlogger.error("PROV9004 cannot find the DB driver: " + e);\r
System.exit(1);\r
}\r
}\r
try {\r
connection = queue.remove();\r
} catch (NoSuchElementException nseEx) {\r
+ intlogger.error("PROV9006 No connection on queue: " + nseEx.getMessage(), nseEx);\r
int n = 0;\r
do {\r
// Try up to 3 times to get a connection\r
return retroFit1();\r
}\r
\r
+\r
+ public static String getHttpsPort() {\r
+ return HTTPS_PORT;\r
+ }\r
+\r
+ public static String getHttpPort() {\r
+ return HTTP_PORT;\r
+ }\r
+\r
/**\r
* Retrofit 1 - Make sure the expected tables are in DB and are initialized. Uses sql_init_01.sql to setup the DB.\r
*\r
connection = getConnection();\r
Set<String> actualTables = getTableSet(connection);\r
boolean initialize = false;\r
- for (String table : expectedTables) {\r
- initialize |= !actualTables.contains(table.toLowerCase());\r
+ for (String tableName : expectedTables) {\r
+ initialize |= !actualTables.contains(tableName);\r
}\r
if (initialize) {\r
intlogger.info("PROV9001: First time startup; The database is being initialized.");\r
runInitScript(connection, 1);\r
}\r
} catch (SQLException e) {\r
- intlogger.fatal("PROV9000: The database credentials are not working: " + e.getMessage());\r
+ intlogger.error("PROV9000: The database credentials are not working: " + e.getMessage(), e);\r
return false;\r
} finally {\r
if (connection != null) {\r
* @return the set of table names\r
*/\r
private Set<String> getTableSet(Connection connection) {\r
- Set<String> tables = new HashSet<String>();\r
+ Set<String> tables = new HashSet<>();\r
try {\r
DatabaseMetaData md = connection.getMetaData();\r
ResultSet rs = md.getTables(null, null, "%", null);\r
if (rs != null) {\r
while (rs.next()) {\r
- tables.add(rs.getString("TABLE_NAME"));\r
+ tables.add(rs.getString("TABLE_NAME").toUpperCase());\r
}\r
rs.close();\r
}\r
} catch (SQLException e) {\r
- intlogger.fatal("PROV9010: Failed to get TABLE data from DB: " + e.getMessage());\r
+ intlogger.error("PROV9010: Failed to get TABLE data from DB: " + e.getMessage(), e);\r
}\r
return tables;\r
}\r
\r
/**\r
* Initialize the tables by running the initialization scripts located in the directory specified by the property\r
- * <i>org.onap.dmaap.datarouter.provserver.dbscripts</i>. Scripts have names of the form sql_init_NN.sql\r
+ * <i>org.onap.dmaap.datarouter.provserver.dbscripts</i>. Scripts have names of the form\r
+ * sql_init_NN.sql\r
*\r
* @param connection a DB connection\r
* @param scriptId the number of the sql_init_NN.sql script to run\r
try {\r
String scriptFile = String.format("%s/sql_init_%02d.sql", scriptDir, scriptId);\r
if (!(new File(scriptFile)).exists()) {\r
- intlogger.fatal("PROV9005 Failed to load sql script from : " + scriptFile);\r
+ intlogger.error("PROV9005 Failed to load sql script from : " + scriptFile);\r
System.exit(1);\r
}\r
LineNumberReader lineReader = new LineNumberReader(new FileReader(scriptFile));\r
lineReader.close();\r
strBuilder.setLength(0);\r
} catch (Exception e) {\r
- intlogger.fatal("PROV9002 Error when initializing table: " + e.getMessage());\r
+ intlogger.error("PROV9002 Error when initializing table: " + e.getMessage(), e);\r
System.exit(1);\r
}\r
}\r