Fixed sonar blocker issue in VolumeReport.java 11/63711/1
authorAmaresh Kumar <kamaresh@in.ibm.com>
Thu, 30 Aug 2018 07:57:40 +0000 (13:27 +0530)
committerAmaresh Kumar <kamaresh@in.ibm.com>
Thu, 30 Aug 2018 08:01:45 +0000 (13:31 +0530)
fixed 3 blocker issues.

"https://sonar.onap.org/project/issues?fileUuids=AWHFaQitEU5FCDfKtnER
&id=org.onap.dmaap.datarouter%3Aparent&open=AWHFaQlfEU5FCDfKtnIp&resolved=false&severities=BLOCKER"

"https://sonar.onap.org/project/issues?fileUuids=AWHFaQitEU5FCDfKtnER
&id=org.onap.dmaap.datarouter%3Aparent&open=AWHFaQlfEU5FCDfKtnIo&resolved=false&severities=BLOCKER"

"https://sonar.onap.org/project/issues?fileUuids=AWHFaQitEU5FCDfKtnER
&id=org.onap.dmaap.datarouter%3Aparent&open=AWHFaQlfEU5FCDfKtnIq&resolved=false&severities=BLOCKER"

Issue-ID: DMAAP-675
Change-Id: I1eba5aa926dba7c83e6180c544854879b835bf94
Signed-off-by: Amaresh Kumar <kamaresh@in.ibm.com>
datarouter-prov/src/main/java/org/onap/dmaap/datarouter/reports/VolumeReport.java

index 169db0d..34e158a 100644 (file)
@@ -36,6 +36,7 @@ import java.util.HashMap;
 import java.util.Map;\r
 import java.util.TreeSet;\r
 \r
+import org.apache.log4j.Logger;\r
 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
 \r
 /**\r
@@ -57,7 +58,7 @@ import org.onap.dmaap.datarouter.provisioning.utils.DB;
 public class VolumeReport extends ReportBase {\r
     private static final String SELECT_SQL = "select EVENT_TIME, TYPE, FEEDID, CONTENT_LENGTH, RESULT" +\r
             " from LOG_RECORDS where EVENT_TIME >= ? and EVENT_TIME <= ? LIMIT ?, ?";\r
-\r
+    private Logger loggerVolumeReport=Logger.getLogger("org.onap.dmaap.datarouter.reports");\r
     private class Counters {\r
         public int filespublished, filesdelivered, filesexpired;\r
         public long bytespublished, bytesdelivered, bytesexpired;\r
@@ -83,58 +84,64 @@ public class VolumeReport extends ReportBase {
             final long stepsize = 6000000L;\r
             boolean go_again = true;\r
             for (long i = 0; go_again; i += stepsize) {\r
-                PreparedStatement ps = conn.prepareStatement(SELECT_SQL);\r
-                ps.setLong(1, from);\r
-                ps.setLong(2, to);\r
-                ps.setLong(3, i);\r
-                ps.setLong(4, stepsize);\r
-                ResultSet rs = ps.executeQuery();\r
-                go_again = false;\r
-                while (rs.next()) {\r
-                    go_again = true;\r
-                    long etime = rs.getLong("EVENT_TIME");\r
-                    String type = rs.getString("TYPE");\r
-                    int feed = rs.getInt("FEEDID");\r
-                    long clen = rs.getLong("CONTENT_LENGTH");\r
-                    String key = sdf.format(new Date(etime)) + ":" + feed;\r
-                    Counters c = map.get(key);\r
-                    if (c == null) {\r
-                        c = new Counters();\r
-                        map.put(key, c);\r
-                    }\r
-                    if (type.equalsIgnoreCase("pub")) {\r
-                        c.filespublished++;\r
-                        c.bytespublished += clen;\r
-                    } else if (type.equalsIgnoreCase("del")) {\r
-                        // Only count successful deliveries\r
-                        int statusCode = rs.getInt("RESULT");\r
-                        if (statusCode >= 200 && statusCode < 300) {\r
-                            c.filesdelivered++;\r
-                            c.bytesdelivered += clen;\r
+                try (PreparedStatement ps = conn.prepareStatement(SELECT_SQL)) {\r
+                    ps.setLong(1, from);\r
+                    ps.setLong(2, to);\r
+                    ps.setLong(3, i);\r
+                    ps.setLong(4, stepsize);\r
+                    try(ResultSet rs = ps.executeQuery()) {\r
+                        go_again = false;\r
+                        while (rs.next()) {\r
+                            go_again = true;\r
+                            long etime = rs.getLong("EVENT_TIME");\r
+                            String type = rs.getString("TYPE");\r
+                            int feed = rs.getInt("FEEDID");\r
+                            long clen = rs.getLong("CONTENT_LENGTH");\r
+                            String key = sdf.format(new Date(etime)) + ":" + feed;\r
+                            Counters c = map.get(key);\r
+                            if (c == null) {\r
+                                c = new Counters();\r
+                                map.put(key, c);\r
+                            }\r
+                            if (type.equalsIgnoreCase("pub")) {\r
+                                c.filespublished++;\r
+                                c.bytespublished += clen;\r
+                            } else if (type.equalsIgnoreCase("del")) {\r
+                                // Only count successful deliveries\r
+                                int statusCode = rs.getInt("RESULT");\r
+                                if (statusCode >= 200 && statusCode < 300) {\r
+                                    c.filesdelivered++;\r
+                                    c.bytesdelivered += clen;\r
+                                }\r
+                            } else if (type.equalsIgnoreCase("exp")) {\r
+                                c.filesexpired++;\r
+                                c.bytesexpired += clen;\r
+                            }\r
                         }\r
-                    } else if (type.equalsIgnoreCase("exp")) {\r
-                        c.filesexpired++;\r
-                        c.bytesexpired += clen;\r
                     }\r
+\r
+                }\r
+                catch (SQLException sqlException)\r
+                {\r
+                    loggerVolumeReport.error("SqlException",sqlException);\r
                 }\r
-                rs.close();\r
-                ps.close();\r
             }\r
+\r
             db.release(conn);\r
         } catch (SQLException e) {\r
             e.printStackTrace();\r
         }\r
         logger.debug("Query time: " + (System.currentTimeMillis() - start) + " ms");\r
-        try {\r
-            PrintWriter os = new PrintWriter(outfile);\r
+        try (PrintWriter os = new PrintWriter(outfile)) {\r
             os.println("date,feedid,filespublished,bytespublished,filesdelivered,bytesdelivered,filesexpired,bytesexpired");\r
-            for (String key : new TreeSet<String>(map.keySet())) {\r
+            for(String key :new TreeSet<String>(map.keySet()))\r
+            {\r
                 Counters c = map.get(key);\r
                 String[] p = key.split(":");\r
                 os.println(String.format("%s,%s,%s", p[0], p[1], c.toString()));\r
             }\r
-            os.close();\r
-        catch (FileNotFoundException e) {\r
+        }\r
+        catch (FileNotFoundException e) {\r
             System.err.println("File cannot be written: " + outfile);\r
         }\r
     }\r