Update project structure to org.onap
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / beans / NetworkRoute.java
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/NetworkRoute.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/NetworkRoute.java
new file mode 100644 (file)
index 0000000..74c5406
--- /dev/null
@@ -0,0 +1,229 @@
+/*******************************************************************************\r
+ * ============LICENSE_START==================================================\r
+ * * org.onap.dmaap\r
+ * * ===========================================================================\r
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * * ===========================================================================\r
+ * * 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
+ *  *      http://www.apache.org/licenses/LICENSE-2.0\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
+ * * See the License for the specific language governing permissions and\r
+ * * limitations under the License.\r
+ * * ============LICENSE_END====================================================\r
+ * *\r
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ * *\r
+ ******************************************************************************/\r
+\r
+\r
+package org.onap.dmaap.datarouter.provisioning.beans;\r
+\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.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
+\r
+/**\r
+ * The representation of one route in the Network Route Table.\r
+ *\r
+ * @author Robert P. Eby\r
+ * @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