Refactor Prov DB handling
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / beans / NetworkRoute.java
index 74c5406..2ada1ff 100644 (file)
@@ -7,9 +7,9 @@
  * * Licensed under the Apache License, Version 2.0 (the "License");\r
  * * you may not use this file except in compliance with the License.\r
  * * You may obtain a copy of the License at\r
- * * \r
+ * *\r
  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
- * * \r
+ * *\r
  *  * Unless required by applicable law or agreed to in writing, software\r
  * * distributed under the License is distributed on an "AS IS" BASIS,\r
  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
 \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
 import java.sql.SQLException;\r
-import java.sql.Statement;\r
+import java.util.Objects;\r
 import java.util.SortedSet;\r
 import java.util.TreeSet;\r
-\r
-import org.apache.log4j.Logger;\r
 import org.json.JSONObject;\r
-import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
+import org.onap.dmaap.datarouter.provisioning.utils.ProvDbUtils;\r
 \r
 /**\r
  * The representation of one route in the Network Route Table.\r
@@ -43,187 +43,188 @@ import org.onap.dmaap.datarouter.provisioning.utils.DB;
  * @version $Id: NetworkRoute.java,v 1.2 2013/12/16 20:30:23 eby Exp $\r
  */\r
 public class NetworkRoute extends NodeClass implements Comparable<NetworkRoute> {\r
-       private static Logger intlogger = Logger.getLogger("org.onap.dmaap.datarouter.provisioning.internal");\r
-       private final int fromnode;\r
-       private final int tonode;\r
-       private final int vianode;\r
-\r
-       /**\r
-        * Get a set of all Network Routes in the DB.  The set is sorted according to the natural sorting order\r
-        * of the routes (based on the from and to node names in each route).\r
-        * @return the sorted set\r
-        */\r
-       public static SortedSet<NetworkRoute> getAllNetworkRoutes() {\r
-               SortedSet<NetworkRoute> set = new TreeSet<NetworkRoute>();\r
-               try {\r
-                       DB db = new DB();\r
-                       @SuppressWarnings("resource")\r
-                       Connection conn = db.getConnection();\r
-                       Statement  stmt = conn.createStatement();\r
-                       ResultSet    rs = stmt.executeQuery("select FROMNODE, TONODE, VIANODE from NETWORK_ROUTES");\r
-                       while (rs.next()) {\r
-                               int fromnode = rs.getInt("FROMNODE");\r
-                               int tonode   = rs.getInt("TONODE");\r
-                               int vianode  = rs.getInt("VIANODE");\r
-                               set.add(new NetworkRoute(fromnode, tonode, vianode));\r
-                       }\r
-                       rs.close();\r
-                       stmt.close();\r
-                       db.release(conn);\r
-               } catch (SQLException e) {\r
-                       e.printStackTrace();\r
-               }\r
-               return set;\r
-       }\r
-\r
-       public NetworkRoute(String fromnode, String tonode) throws IllegalArgumentException {\r
-               this.fromnode = lookupNodeName(fromnode);\r
-               this.tonode   = lookupNodeName(tonode);\r
-               this.vianode  = -1;\r
-       }\r
-\r
-       public NetworkRoute(String fromnode, String tonode, String vianode) throws IllegalArgumentException {\r
-               this.fromnode = lookupNodeName(fromnode);\r
-               this.tonode   = lookupNodeName(tonode);\r
-               this.vianode  = lookupNodeName(vianode);\r
-       }\r
-\r
-       public NetworkRoute(JSONObject jo) throws IllegalArgumentException {\r
-               this.fromnode = lookupNodeName(jo.getString("from"));\r
-               this.tonode   = lookupNodeName(jo.getString("to"));\r
-               this.vianode  = lookupNodeName(jo.getString("via"));\r
-       }\r
-\r
-       public NetworkRoute(int fromnode, int tonode, int vianode) throws IllegalArgumentException {\r
-               this.fromnode = fromnode;\r
-               this.tonode   = tonode;\r
-               this.vianode  = vianode;\r
-       }\r
-\r
-       public int getFromnode() {\r
-               return fromnode;\r
-       }\r
-\r
-       public int getTonode() {\r
-               return tonode;\r
-       }\r
-\r
-       public int getVianode() {\r
-               return vianode;\r
-       }\r
-\r
-       @Override\r
-       public boolean doDelete(Connection c) {\r
-               boolean rv = true;\r
-               PreparedStatement ps = null;\r
-               try {\r
-                       String sql = "delete from NETWORK_ROUTES where FROMNODE = ? AND TONODE = ?";\r
-                       ps = c.prepareStatement(sql);\r
-                       ps.setInt(1, fromnode);\r
-                       ps.setInt(2, tonode);\r
-                       ps.execute();\r
-               } catch (SQLException e) {\r
-                       rv = false;\r
-                       intlogger.warn("PROV0007 doDelete: "+e.getMessage());\r
-                       e.printStackTrace();\r
-               } finally {\r
-                       try {\r
-                               ps.close();\r
-                       } catch (SQLException e) {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-               return rv;\r
-       }\r
-\r
-       @Override\r
-       public boolean doInsert(Connection c) {\r
-               boolean rv = false;\r
-               if (this.vianode >= 0) {\r
-                       PreparedStatement ps = null;\r
-                       try {\r
-                               // Create the NETWORK_ROUTES row\r
-                               String sql = "insert into NETWORK_ROUTES (FROMNODE, TONODE, VIANODE) values (?, ?, ?)";\r
-                               ps = c.prepareStatement(sql);\r
-                               ps.setInt(1, this.fromnode);\r
-                               ps.setInt(2, this.tonode);\r
-                               ps.setInt(3, this.vianode);\r
-                               ps.execute();\r
-                               ps.close();\r
-                               rv = true;\r
-                       } catch (SQLException e) {\r
-                               intlogger.warn("PROV0005 doInsert: "+e.getMessage());\r
-                               e.printStackTrace();\r
-                       } finally {\r
-                               try {\r
-                                       ps.close();\r
-                               } catch (SQLException e) {\r
-                                       e.printStackTrace();\r
-                               }\r
-                       }\r
-               }\r
-               return rv;\r
-       }\r
-\r
-       @Override\r
-       public boolean doUpdate(Connection c) {\r
-               boolean rv = true;\r
-               PreparedStatement ps = null;\r
-               try {\r
-                       String sql = "update NETWORK_ROUTES set VIANODE = ? where FROMNODE = ? and TONODE = ?";\r
-                       ps = c.prepareStatement(sql);\r
-                       ps.setInt(1, vianode);\r
-                       ps.setInt(2, fromnode);\r
-                       ps.setInt(3, tonode);\r
-                       ps.executeUpdate();\r
-               } catch (SQLException e) {\r
-                       rv = false;\r
-                       intlogger.warn("PROV0006 doUpdate: "+e.getMessage());\r
-                       e.printStackTrace();\r
-               } finally {\r
-                       try {\r
-                               ps.close();\r
-                       } catch (SQLException e) {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-               return rv;\r
-       }\r
-\r
-       @Override\r
-       public JSONObject asJSONObject() {\r
-               JSONObject jo = new JSONObject();\r
-               jo.put("from", lookupNodeID(fromnode));\r
-               jo.put("to",   lookupNodeID(tonode));\r
-               jo.put("via",  lookupNodeID(vianode));\r
-               return jo;\r
-       }\r
-\r
-       @Override\r
-       public String getKey() {\r
-               return lookupNodeID(fromnode)+":"+lookupNodeID(tonode);\r
-       }\r
-\r
-       @Override\r
-       public boolean equals(Object obj) {\r
-               if (!(obj instanceof NetworkRoute))\r
-                       return false;\r
-               NetworkRoute on = (NetworkRoute)obj;\r
-               return (fromnode == on.fromnode) && (tonode == on.tonode) && (vianode == on.vianode);\r
-       }\r
-\r
-       @Override\r
-       public int compareTo(NetworkRoute o) {\r
-               if (this.fromnode == o.fromnode) {\r
-                       if (this.tonode == o.tonode)\r
-                               return this.vianode - o.vianode;\r
-                       return this.tonode - o.tonode;\r
-               }\r
-               return this.fromnode - o.fromnode;\r
-       }\r
-\r
-       @Override\r
-       public String toString() {\r
-               return String.format("NETWORK: from=%d, to=%d, via=%d", fromnode, tonode, vianode);\r
-       }\r
+\r
+    private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");\r
+    private static final String SQLEXCEPTION = "SQLException: ";\r
+    private final int fromnode;\r
+    private final int tonode;\r
+    private final int vianode;\r
+\r
+    /**\r
+     * NetworkRoute Constructor.\r
+     * @param fromnode node source\r
+     * @param tonode node destination\r
+     */\r
+    public NetworkRoute(String fromnode, String tonode) {\r
+        this.fromnode = lookupNodeName(fromnode);\r
+        this.tonode = lookupNodeName(tonode);\r
+        this.vianode = -1;\r
+    }\r
+\r
+    /**\r
+     * NetworkRoute Constructor.\r
+     * @param fromnode node source\r
+     * @param tonode node destination\r
+     * @param vianode via node\r
+     */\r
+    public NetworkRoute(String fromnode, String tonode, String vianode) {\r
+        this.fromnode = lookupNodeName(fromnode);\r
+        this.tonode = lookupNodeName(tonode);\r
+        this.vianode = lookupNodeName(vianode);\r
+    }\r
+\r
+    /**\r
+     * NetworkRoute Constructor.\r
+     * @param jo JSONObject of attributes\r
+     */\r
+    public NetworkRoute(JSONObject jo) {\r
+        this.fromnode = lookupNodeName(jo.getString("from"));\r
+        this.tonode = lookupNodeName(jo.getString("to"));\r
+        this.vianode = lookupNodeName(jo.getString("via"));\r
+    }\r
+\r
+    /**\r
+     * NetworkRoute Constructor.\r
+     * @param fromnode integer source node\r
+     * @param tonode integer destination node\r
+     * @param vianode integer via node\r
+     */\r
+    private NetworkRoute(int fromnode, int tonode, int vianode) {\r
+        this.fromnode = fromnode;\r
+        this.tonode = tonode;\r
+        this.vianode = vianode;\r
+    }\r
+\r
+    /**\r
+     * Get a set of all Network Routes in the DB.  The set is sorted according to the natural sorting order of the\r
+     * routes (based on the from and to node names in each route).\r
+     *\r
+     * @return the sorted set\r
+     */\r
+    public static SortedSet<NetworkRoute> getAllNetworkRoutes() {\r
+        SortedSet<NetworkRoute> set = new TreeSet<>();\r
+        try (Connection conn = ProvDbUtils.getInstance().getConnection();\r
+            PreparedStatement ps = conn.prepareStatement("select FROMNODE, TONODE, VIANODE from NETWORK_ROUTES");\r
+            ResultSet rs = ps.executeQuery()) {\r
+            addNetworkRouteToSet(set, rs);\r
+        } catch (SQLException e) {\r
+            intlogger.error(SQLEXCEPTION + e.getMessage(), e);\r
+        }\r
+        return set;\r
+    }\r
+\r
+    private static void addNetworkRouteToSet(SortedSet<NetworkRoute> set, ResultSet rs) throws SQLException {\r
+        while (rs.next()) {\r
+            int fromnode = rs.getInt("FROMNODE");\r
+            int tonode = rs.getInt("TONODE");\r
+            int vianode = rs.getInt("VIANODE");\r
+            set.add(new NetworkRoute(fromnode, tonode, vianode));\r
+        }\r
+    }\r
+\r
+    public int getFromnode() {\r
+        return fromnode;\r
+    }\r
+\r
+    public int getTonode() {\r
+        return tonode;\r
+    }\r
+\r
+    int getVianode() {\r
+        return vianode;\r
+    }\r
+\r
+    @Override\r
+    public boolean doDelete(Connection conn) {\r
+        boolean rv = true;\r
+        try (PreparedStatement ps = conn.prepareStatement(\r
+            "delete from NETWORK_ROUTES where FROMNODE = ? AND TONODE = ?")) {\r
+            ps.setInt(1, fromnode);\r
+            ps.setInt(2, tonode);\r
+            ps.execute();\r
+        } catch (SQLException e) {\r
+            rv = false;\r
+            intlogger.warn("PROV0007 doDelete: " + e.getMessage(), e);\r
+        }\r
+        return rv;\r
+    }\r
+\r
+    @Override\r
+    public boolean doInsert(Connection conn) {\r
+        boolean rv = false;\r
+        if (this.vianode >= 0) {\r
+            try (PreparedStatement ps = conn.prepareStatement(\r
+                "insert into NETWORK_ROUTES (FROMNODE, TONODE, VIANODE) values (?, ?, ?)")) {\r
+                // Create the NETWORK_ROUTES row\r
+                ps.setInt(1, this.fromnode);\r
+                ps.setInt(2, this.tonode);\r
+                ps.setInt(3, this.vianode);\r
+                ps.execute();\r
+                rv = true;\r
+            } catch (SQLException e) {\r
+                intlogger.warn("PROV0005 doInsert: " + e.getMessage(), e);\r
+            }\r
+        }\r
+        return rv;\r
+    }\r
+\r
+    @Override\r
+    public boolean doUpdate(Connection conn) {\r
+        boolean rv = true;\r
+        try (PreparedStatement ps = conn.prepareStatement(\r
+            "update NETWORK_ROUTES set VIANODE = ? where FROMNODE = ? and TONODE = ?")) {\r
+            ps.setInt(1, vianode);\r
+            ps.setInt(2, fromnode);\r
+            ps.setInt(3, tonode);\r
+            ps.executeUpdate();\r
+        } catch (SQLException e) {\r
+            rv = false;\r
+            intlogger.warn("PROV0006 doUpdate: " + e.getMessage(), e);\r
+        }\r
+        return rv;\r
+    }\r
+\r
+    @Override\r
+    public JSONObject asJSONObject() {\r
+        JSONObject jo = new JSONObject();\r
+        jo.put("from", lookupNodeID(fromnode));\r
+        jo.put("to", lookupNodeID(tonode));\r
+        jo.put("via", lookupNodeID(vianode));\r
+        return jo;\r
+    }\r
+\r
+    @Override\r
+    public String getKey() {\r
+        return lookupNodeID(fromnode) + ":" + lookupNodeID(tonode);\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (!(obj instanceof NetworkRoute)) {\r
+            return false;\r
+        }\r
+        NetworkRoute on = (NetworkRoute) obj;\r
+        return (fromnode == on.fromnode) && (tonode == on.tonode) && (vianode == on.vianode);\r
+    }\r
+\r
+    @Override\r
+    public int hashCode() {\r
+        return Objects.hash(fromnode, tonode, vianode);\r
+    }\r
+\r
+    @Override\r
+    public int compareTo(NetworkRoute nr) {\r
+        if (this.fromnode == nr.fromnode) {\r
+            if (this.tonode == nr.tonode) {\r
+                return this.vianode - nr.vianode;\r
+            }\r
+            return this.tonode - nr.tonode;\r
+        }\r
+        return this.fromnode - nr.fromnode;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return String.format("NETWORK: from=%d, to=%d, via=%d", fromnode, tonode, vianode);\r
+    }\r
 }\r