Merge "Unit test base"
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / beans / NetworkRoute.java
1 /*******************************************************************************\r
2  * ============LICENSE_START==================================================\r
3  * * org.onap.dmaap\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * ===========================================================================\r
7  * * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * * you may not use this file except in compliance with the License.\r
9  * * You may obtain a copy of the License at\r
10  * *\r
11  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * *\r
13  *  * Unless required by applicable law or agreed to in writing, software\r
14  * * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * * See the License for the specific language governing permissions and\r
17  * * limitations under the License.\r
18  * * ============LICENSE_END====================================================\r
19  * *\r
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 \r
24 \r
25 package org.onap.dmaap.datarouter.provisioning.beans;\r
26 \r
27 import java.sql.Connection;\r
28 import java.sql.PreparedStatement;\r
29 import java.sql.ResultSet;\r
30 import java.sql.SQLException;\r
31 import java.sql.Statement;\r
32 import java.util.SortedSet;\r
33 import java.util.TreeSet;\r
34 \r
35 import org.apache.log4j.Logger;\r
36 import org.json.JSONObject;\r
37 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
38 \r
39 /**\r
40  * The representation of one route in the Network Route Table.\r
41  *\r
42  * @author Robert P. Eby\r
43  * @version $Id: NetworkRoute.java,v 1.2 2013/12/16 20:30:23 eby Exp $\r
44  */\r
45 public class NetworkRoute extends NodeClass implements Comparable<NetworkRoute> {\r
46     private static Logger intlogger = Logger.getLogger("org.onap.dmaap.datarouter.provisioning.internal");\r
47     private final int fromnode;\r
48     private final int tonode;\r
49     private final int vianode;\r
50 \r
51     /**\r
52      * Get a set of all Network Routes in the DB.  The set is sorted according to the natural sorting order\r
53      * of the routes (based on the from and to node names in each route).\r
54      *\r
55      * @return the sorted set\r
56      */\r
57     public static SortedSet<NetworkRoute> getAllNetworkRoutes() {\r
58         SortedSet<NetworkRoute> set = new TreeSet<NetworkRoute>();\r
59         try {\r
60             DB db = new DB();\r
61             @SuppressWarnings("resource")\r
62             Connection conn = db.getConnection();\r
63             Statement stmt = conn.createStatement();\r
64             ResultSet rs = stmt.executeQuery("select FROMNODE, TONODE, VIANODE from NETWORK_ROUTES");\r
65             while (rs.next()) {\r
66                 int fromnode = rs.getInt("FROMNODE");\r
67                 int tonode = rs.getInt("TONODE");\r
68                 int vianode = rs.getInt("VIANODE");\r
69                 set.add(new NetworkRoute(fromnode, tonode, vianode));\r
70             }\r
71             rs.close();\r
72             stmt.close();\r
73             db.release(conn);\r
74         } catch (SQLException e) {\r
75             e.printStackTrace();\r
76         }\r
77         return set;\r
78     }\r
79 \r
80     public NetworkRoute(String fromnode, String tonode) throws IllegalArgumentException {\r
81         this.fromnode = lookupNodeName(fromnode);\r
82         this.tonode = lookupNodeName(tonode);\r
83         this.vianode = -1;\r
84     }\r
85 \r
86     public NetworkRoute(String fromnode, String tonode, String vianode) throws IllegalArgumentException {\r
87         this.fromnode = lookupNodeName(fromnode);\r
88         this.tonode = lookupNodeName(tonode);\r
89         this.vianode = lookupNodeName(vianode);\r
90     }\r
91 \r
92     public NetworkRoute(JSONObject jo) throws IllegalArgumentException {\r
93         this.fromnode = lookupNodeName(jo.getString("from"));\r
94         this.tonode = lookupNodeName(jo.getString("to"));\r
95         this.vianode = lookupNodeName(jo.getString("via"));\r
96     }\r
97 \r
98     public NetworkRoute(int fromnode, int tonode, int vianode) throws IllegalArgumentException {\r
99         this.fromnode = fromnode;\r
100         this.tonode = tonode;\r
101         this.vianode = vianode;\r
102     }\r
103 \r
104     public int getFromnode() {\r
105         return fromnode;\r
106     }\r
107 \r
108     public int getTonode() {\r
109         return tonode;\r
110     }\r
111 \r
112     public int getVianode() {\r
113         return vianode;\r
114     }\r
115 \r
116     @Override\r
117     public boolean doDelete(Connection c) {\r
118         boolean rv = true;\r
119         PreparedStatement ps = null;\r
120         try {\r
121             String sql = "delete from NETWORK_ROUTES where FROMNODE = ? AND TONODE = ?";\r
122             ps = c.prepareStatement(sql);\r
123             ps.setInt(1, fromnode);\r
124             ps.setInt(2, tonode);\r
125             ps.execute();\r
126         } catch (SQLException e) {\r
127             rv = false;\r
128             intlogger.warn("PROV0007 doDelete: " + e.getMessage());\r
129             e.printStackTrace();\r
130         } finally {\r
131             try {\r
132                 ps.close();\r
133             } catch (SQLException e) {\r
134                 e.printStackTrace();\r
135             }\r
136         }\r
137         return rv;\r
138     }\r
139 \r
140     @Override\r
141     public boolean doInsert(Connection c) {\r
142         boolean rv = false;\r
143         if (this.vianode >= 0) {\r
144             PreparedStatement ps = null;\r
145             try {\r
146                 // Create the NETWORK_ROUTES row\r
147                 String sql = "insert into NETWORK_ROUTES (FROMNODE, TONODE, VIANODE) values (?, ?, ?)";\r
148                 ps = c.prepareStatement(sql);\r
149                 ps.setInt(1, this.fromnode);\r
150                 ps.setInt(2, this.tonode);\r
151                 ps.setInt(3, this.vianode);\r
152                 ps.execute();\r
153                 ps.close();\r
154                 rv = true;\r
155             } catch (SQLException e) {\r
156                 intlogger.warn("PROV0005 doInsert: " + e.getMessage());\r
157                 e.printStackTrace();\r
158             } finally {\r
159                 try {\r
160                     ps.close();\r
161                 } catch (SQLException e) {\r
162                     e.printStackTrace();\r
163                 }\r
164             }\r
165         }\r
166         return rv;\r
167     }\r
168 \r
169     @Override\r
170     public boolean doUpdate(Connection c) {\r
171         boolean rv = true;\r
172         PreparedStatement ps = null;\r
173         try {\r
174             String sql = "update NETWORK_ROUTES set VIANODE = ? where FROMNODE = ? and TONODE = ?";\r
175             ps = c.prepareStatement(sql);\r
176             ps.setInt(1, vianode);\r
177             ps.setInt(2, fromnode);\r
178             ps.setInt(3, tonode);\r
179             ps.executeUpdate();\r
180         } catch (SQLException e) {\r
181             rv = false;\r
182             intlogger.warn("PROV0006 doUpdate: " + e.getMessage());\r
183             e.printStackTrace();\r
184         } finally {\r
185             try {\r
186                 ps.close();\r
187             } catch (SQLException e) {\r
188                 e.printStackTrace();\r
189             }\r
190         }\r
191         return rv;\r
192     }\r
193 \r
194     @Override\r
195     public JSONObject asJSONObject() {\r
196         JSONObject jo = new JSONObject();\r
197         jo.put("from", lookupNodeID(fromnode));\r
198         jo.put("to", lookupNodeID(tonode));\r
199         jo.put("via", lookupNodeID(vianode));\r
200         return jo;\r
201     }\r
202 \r
203     @Override\r
204     public String getKey() {\r
205         return lookupNodeID(fromnode) + ":" + lookupNodeID(tonode);\r
206     }\r
207 \r
208     @Override\r
209     public boolean equals(Object obj) {\r
210         if (!(obj instanceof NetworkRoute))\r
211             return false;\r
212         NetworkRoute on = (NetworkRoute) obj;\r
213         return (fromnode == on.fromnode) && (tonode == on.tonode) && (vianode == on.vianode);\r
214     }\r
215 \r
216     @Override\r
217     public int compareTo(NetworkRoute o) {\r
218         if (this.fromnode == o.fromnode) {\r
219             if (this.tonode == o.tonode)\r
220                 return this.vianode - o.vianode;\r
221             return this.tonode - o.tonode;\r
222         }\r
223         return this.fromnode - o.fromnode;\r
224     }\r
225 \r
226     @Override\r
227     public String toString() {\r
228         return String.format("NETWORK: from=%d, to=%d, via=%d", fromnode, tonode, vianode);\r
229     }\r
230 }\r