More unit test coverage and code cleanup
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / beans / NodeClass.java
index f3ef5d6..d11c20f 100755 (executable)
@@ -23,6 +23,8 @@
 \r
 package org.onap.dmaap.datarouter.provisioning.beans;\r
 \r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
 import java.sql.Connection;\r
 import java.sql.PreparedStatement;\r
 import java.sql.ResultSet;\r
@@ -32,9 +34,6 @@ import java.util.HashMap;
 import java.util.Map;\r
 import java.util.Set;\r
 import java.util.TreeSet;\r
-\r
-import com.att.eelf.configuration.EELFLogger;\r
-import com.att.eelf.configuration.EELFManager;\r
 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
 \r
 /**\r
@@ -45,9 +44,11 @@ import org.onap.dmaap.datarouter.provisioning.utils.DB;
  */\r
 public abstract class NodeClass extends Syncable {\r
 \r
+    private static final String PROV_0005_DO_INSERT = "PROV0005 doInsert: ";\r
     private static Map<String, Integer> map;\r
     private static EELFLogger intLogger = EELFManager.getInstance().getLogger("InternalLog");\r
-    public NodeClass() {\r
+\r
+    NodeClass() {\r
         // init on first use\r
         if (map == null) {\r
             reload();\r
@@ -77,67 +78,50 @@ public abstract class NodeClass extends Syncable {
             if (!map.containsKey(node)) {\r
                 intLogger.info("..adding " + node + " to NODES with index " + nextid);\r
                 map.put(node, nextid);\r
-                PreparedStatement ps = null;\r
-                try {\r
-                    DB db = new DB();\r
-                    @SuppressWarnings("resource")\r
-                    Connection conn = db.getConnection();\r
-                    ps = conn.prepareStatement("insert into NODES (NODEID, NAME, ACTIVE) values (?, ?, 1)");\r
-                    ps.setInt(1, nextid);\r
-                    ps.setString(2, node);\r
-                    ps.execute();\r
-                    ps.close();\r
-                    db.release(conn);\r
-                } catch (SQLException e) {\r
-                    intLogger.error("PROV0005 doInsert: " + e.getMessage(),e);\r
-                } finally {\r
-                    try {\r
-                        if(ps!=null){\r
-                            ps.close();\r
-                        }\r
-                    } catch (SQLException e) {\r
-                        intLogger.error("Error in closing PreparedStatement: " + e.getMessage(),e);\r
-                    }\r
-                }\r
+                insertNodesToTable(nextid, node);\r
                 nextid++;\r
             }\r
         }\r
     }\r
 \r
-    public static void reload() {\r
-        Map<String, Integer> m = new HashMap<String, Integer>();\r
-        PreparedStatement ps = null;\r
+    private static void insertNodesToTable(int nextid, String node) {\r
+        DB db = new DB();\r
+        try (Connection conn = db.getConnection()) {\r
+            try (PreparedStatement ps = conn\r
+                    .prepareStatement("insert into NODES (NODEID, NAME, ACTIVE) values (?, ?, 1)")) {\r
+                ps.setInt(1, nextid);\r
+                ps.setString(2, node);\r
+                ps.execute();\r
+            } finally {\r
+                db.release(conn);\r
+            }\r
+        } catch (SQLException e) {\r
+            intLogger.error(PROV_0005_DO_INSERT + e.getMessage(), e);\r
+        }\r
+    }\r
 \r
-        try {\r
-            DB db = new DB();\r
-            @SuppressWarnings("resource")\r
-            Connection conn = db.getConnection();\r
-            String sql = "select NODEID, NAME from NODES";\r
-            ps = conn.prepareStatement(sql);\r
-            try(ResultSet rs = ps.executeQuery()) {\r
+    private static void reload() {\r
+        Map<String, Integer> m = new HashMap<>();\r
+        String sql = "select NODEID, NAME from NODES";\r
+        DB db = new DB();\r
+        try (Connection conn = db.getConnection();\r
+                PreparedStatement ps = conn.prepareStatement(sql)) {\r
+            try (ResultSet rs = ps.executeQuery()) {\r
                 while (rs.next()) {\r
                     int id = rs.getInt("NODEID");\r
                     String name = rs.getString("NAME");\r
                     m.put(name, id);\r
                 }\r
+            } finally {\r
+                db.release(conn);\r
             }\r
-            ps.close();\r
-            db.release(conn);\r
         } catch (SQLException e) {\r
-            intLogger.error("PROV0005 doInsert: " + e.getMessage(),e);\r
-        } finally {\r
-            try {\r
-                if(ps!=null){\r
-                    ps.close();\r
-                }\r
-            } catch (SQLException e) {\r
-                intLogger.error("PROV0005 doInsert: " + e.getMessage(),e);\r
-            }\r
+            intLogger.error(PROV_0005_DO_INSERT + e.getMessage(),e);\r
         }\r
         map = m;\r
     }\r
 \r
-    public static Integer lookupNodeName(final String name) {\r
+    static Integer lookupNodeName(final String name) {\r
         Integer n = map.get(name);\r
         if (n == null) {\r
             throw new IllegalArgumentException("Invalid node name: " + name);\r
@@ -146,16 +130,11 @@ public abstract class NodeClass extends Syncable {
     }\r
 \r
     public static Collection<String> lookupNodeNames(String patt) {\r
-        Collection<String> coll = new TreeSet<String>();\r
+        Collection<String> coll = new TreeSet<>();\r
         final Set<String> keyset = map.keySet();\r
         for (String s : patt.toLowerCase().split(",")) {\r
             if (s.endsWith("*")) {\r
-                s = s.substring(0, s.length() - 1);\r
-                for (String s2 : keyset) {\r
-                    if (s2.startsWith(s)) {\r
-                        coll.add(s2);\r
-                    }\r
-                }\r
+                addNodeToCollection(coll, keyset, s);\r
             } else if (keyset.contains(s)) {\r
                 coll.add(s);\r
             } else if (keyset.contains(normalizeNodename(s))) {\r
@@ -167,6 +146,15 @@ public abstract class NodeClass extends Syncable {
         return coll;\r
     }\r
 \r
+    private static void addNodeToCollection(Collection<String> coll, Set<String> keyset, String s) {\r
+        s = s.substring(0, s.length() - 1);\r
+        for (String s2 : keyset) {\r
+            if (s2.startsWith(s)) {\r
+                coll.add(s2);\r
+            }\r
+        }\r
+    }\r
+\r
     public static String normalizeNodename(String s) {\r
         if (s != null && s.indexOf('.') <= 0) {\r
             Parameters p = Parameters.getParameter(Parameters.PROV_DOMAIN);\r
@@ -175,17 +163,16 @@ public abstract class NodeClass extends Syncable {
                 s += "." + domain;\r
             }\r
             return s.toLowerCase();\r
-        }\r
-        else{\r
+        } else {\r
             return s;\r
         }\r
 \r
     }\r
 \r
-    protected String lookupNodeID(int n) {\r
-        for (String s : map.keySet()) {\r
-            if (map.get(s) == n) {\r
-                return s;\r
+    String lookupNodeID(int n) {\r
+        for (Map.Entry<String, Integer> entry : map.entrySet()) {\r
+            if (entry.getValue() == n) {\r
+                return entry.getKey();\r
             }\r
         }\r
         return null;\r