Code style cleanup for prov authz and beans
[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 com.att.eelf.configuration.EELFLogger;\r
28 import com.att.eelf.configuration.EELFManager;\r
29 import java.sql.Connection;\r
30 import java.sql.PreparedStatement;\r
31 import java.sql.ResultSet;\r
32 import java.sql.SQLException;\r
33 import java.sql.Statement;\r
34 import java.util.Objects;\r
35 import java.util.SortedSet;\r
36 import java.util.TreeSet;\r
37 import org.json.JSONObject;\r
38 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
39 \r
40 /**\r
41  * The representation of one route in the Network Route Table.\r
42  *\r
43  * @author Robert P. Eby\r
44  * @version $Id: NetworkRoute.java,v 1.2 2013/12/16 20:30:23 eby Exp $\r
45  */\r
46 public class NetworkRoute extends NodeClass implements Comparable<NetworkRoute> {\r
47 \r
48     private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");\r
49     private static final String SQLEXCEPTION = "SQLException: ";\r
50     private final int fromnode;\r
51     private final int tonode;\r
52     private final int vianode;\r
53 \r
54     /**\r
55      * NetworkRoute Constructor.\r
56      * @param fromnode node source\r
57      * @param tonode node destination\r
58      */\r
59     public NetworkRoute(String fromnode, String tonode) {\r
60         this.fromnode = lookupNodeName(fromnode);\r
61         this.tonode = lookupNodeName(tonode);\r
62         this.vianode = -1;\r
63     }\r
64 \r
65     /**\r
66      * NetworkRoute Constructor.\r
67      * @param fromnode node source\r
68      * @param tonode node destination\r
69      * @param vianode via node\r
70      */\r
71     public NetworkRoute(String fromnode, String tonode, String vianode) {\r
72         this.fromnode = lookupNodeName(fromnode);\r
73         this.tonode = lookupNodeName(tonode);\r
74         this.vianode = lookupNodeName(vianode);\r
75     }\r
76 \r
77     /**\r
78      * NetworkRoute Constructor.\r
79      * @param jo JSONObject of attributes\r
80      */\r
81     public NetworkRoute(JSONObject jo) {\r
82         this.fromnode = lookupNodeName(jo.getString("from"));\r
83         this.tonode = lookupNodeName(jo.getString("to"));\r
84         this.vianode = lookupNodeName(jo.getString("via"));\r
85     }\r
86 \r
87     /**\r
88      * NetworkRoute Constructor.\r
89      * @param fromnode integer source node\r
90      * @param tonode integer destination node\r
91      * @param vianode integer via node\r
92      */\r
93     private NetworkRoute(int fromnode, int tonode, int vianode) {\r
94         this.fromnode = fromnode;\r
95         this.tonode = tonode;\r
96         this.vianode = vianode;\r
97     }\r
98 \r
99     /**\r
100      * Get a set of all Network Routes in the DB.  The set is sorted according to the natural sorting order of the\r
101      * routes (based on the from and to node names in each route).\r
102      *\r
103      * @return the sorted set\r
104      */\r
105     public static SortedSet<NetworkRoute> getAllNetworkRoutes() {\r
106         SortedSet<NetworkRoute> set = new TreeSet<>();\r
107         try {\r
108             DB db = new DB();\r
109             @SuppressWarnings("resource")\r
110             Connection conn = db.getConnection();\r
111             try (Statement stmt = conn.createStatement()) {\r
112                 try (ResultSet rs = stmt.executeQuery("select FROMNODE, TONODE, VIANODE from NETWORK_ROUTES")) {\r
113                     addNetworkRouteToSet(set, rs);\r
114                 }\r
115             } finally {\r
116                 db.release(conn);\r
117             }\r
118         } catch (SQLException e) {\r
119             intlogger.error(SQLEXCEPTION + e.getMessage(), e);\r
120         }\r
121         return set;\r
122     }\r
123 \r
124     private static void addNetworkRouteToSet(SortedSet<NetworkRoute> set, ResultSet rs) throws SQLException {\r
125         while (rs.next()) {\r
126             int fromnode = rs.getInt("FROMNODE");\r
127             int tonode = rs.getInt("TONODE");\r
128             int vianode = rs.getInt("VIANODE");\r
129             set.add(new NetworkRoute(fromnode, tonode, vianode));\r
130         }\r
131     }\r
132 \r
133     public int getFromnode() {\r
134         return fromnode;\r
135     }\r
136 \r
137     public int getTonode() {\r
138         return tonode;\r
139     }\r
140 \r
141     public int getVianode() {\r
142         return vianode;\r
143     }\r
144 \r
145     @Override\r
146     public boolean doDelete(Connection conn) {\r
147         boolean rv = true;\r
148         String sql = "delete from NETWORK_ROUTES where FROMNODE = ? AND TONODE = ?";\r
149         try (PreparedStatement ps = conn.prepareStatement(sql)) {\r
150             ps.setInt(1, fromnode);\r
151             ps.setInt(2, tonode);\r
152             ps.execute();\r
153         } catch (SQLException e) {\r
154             rv = false;\r
155             intlogger.warn("PROV0007 doDelete: " + e.getMessage(), e);\r
156         }\r
157         return rv;\r
158     }\r
159 \r
160     @Override\r
161     public boolean doInsert(Connection conn) {\r
162         boolean rv = false;\r
163         String sql = "insert into NETWORK_ROUTES (FROMNODE, TONODE, VIANODE) values (?, ?, ?)";\r
164         if (this.vianode >= 0) {\r
165             try (PreparedStatement ps = conn.prepareStatement(sql)) {\r
166                 // Create the NETWORK_ROUTES row\r
167                 ps.setInt(1, this.fromnode);\r
168                 ps.setInt(2, this.tonode);\r
169                 ps.setInt(3, this.vianode);\r
170                 ps.execute();\r
171                 rv = true;\r
172             } catch (SQLException e) {\r
173                 intlogger.warn("PROV0005 doInsert: " + e.getMessage(), e);\r
174             }\r
175         }\r
176         return rv;\r
177     }\r
178 \r
179     @Override\r
180     public boolean doUpdate(Connection conn) {\r
181         boolean rv = true;\r
182         String sql = "update NETWORK_ROUTES set VIANODE = ? where FROMNODE = ? and TONODE = ?";\r
183         try (PreparedStatement ps = conn.prepareStatement(sql)) {\r
184             ps.setInt(1, vianode);\r
185             ps.setInt(2, fromnode);\r
186             ps.setInt(3, tonode);\r
187             ps.executeUpdate();\r
188         } catch (SQLException e) {\r
189             rv = false;\r
190             intlogger.warn("PROV0006 doUpdate: " + e.getMessage(), e);\r
191         }\r
192         return rv;\r
193     }\r
194 \r
195     @Override\r
196     public JSONObject asJSONObject() {\r
197         JSONObject jo = new JSONObject();\r
198         jo.put("from", lookupNodeID(fromnode));\r
199         jo.put("to", lookupNodeID(tonode));\r
200         jo.put("via", lookupNodeID(vianode));\r
201         return jo;\r
202     }\r
203 \r
204     @Override\r
205     public String getKey() {\r
206         return lookupNodeID(fromnode) + ":" + lookupNodeID(tonode);\r
207     }\r
208 \r
209     @Override\r
210     public boolean equals(Object obj) {\r
211         if (!(obj instanceof NetworkRoute)) {\r
212             return false;\r
213         }\r
214         NetworkRoute on = (NetworkRoute) obj;\r
215         return (fromnode == on.fromnode) && (tonode == on.tonode) && (vianode == on.vianode);\r
216     }\r
217 \r
218     @Override\r
219     public int hashCode() {\r
220         return Objects.hash(fromnode, tonode, vianode);\r
221     }\r
222 \r
223     @Override\r
224     public int compareTo(NetworkRoute nr) {\r
225         if (this.fromnode == nr.fromnode) {\r
226             if (this.tonode == nr.tonode) {\r
227                 return this.vianode - nr.vianode;\r
228             }\r
229             return this.tonode - nr.tonode;\r
230         }\r
231         return this.fromnode - nr.fromnode;\r
232     }\r
233 \r
234     @Override\r
235     public String toString() {\r
236         return String.format("NETWORK: from=%d, to=%d, via=%d", fromnode, tonode, vianode);\r
237     }\r
238 }\r