[DR] Remove DR code smells - additional
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / StatisticsServlet.java
index b069544..aba230b 100755 (executable)
@@ -23,6 +23,8 @@
 \r
 package org.onap.dmaap.datarouter.provisioning;\r
 \r
+import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;\r
+\r
 import java.io.IOException;\r
 import java.sql.Connection;\r
 import java.sql.PreparedStatement;\r
@@ -43,17 +45,17 @@ import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;
 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
 import org.onap.dmaap.datarouter.provisioning.utils.LOGJSONObject;\r
 \r
-import static org.onap.dmaap.datarouter.provisioning.utils.HttpServletUtils.sendResponseError;\r
 \r
 /**\r
  * This Servlet handles requests to the <Statistics API> and  <Statistics consilidated\r
- * resultset>,\r
+ * resultset>.\r
  *\r
  * @author Manish Singh\r
  * @version $Id: StatisticsServlet.java,v 1.11 2016/08/10 17:27:02 Manish Exp $\r
  */\r
 @SuppressWarnings("serial")\r
 \r
+\r
 public class StatisticsServlet extends BaseServlet {\r
 \r
     private static final long TWENTYFOUR_HOURS = (24 * 60 * 60 * 1000L);\r
@@ -61,6 +63,21 @@ public class StatisticsServlet extends BaseServlet {
     private static final String FMT2 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";\r
     public static final String FEEDID = "FEEDID";\r
 \r
+    //sql Strings\r
+    private static final String SQL_SELECT_NAME = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(";\r
+    private static final String SQL_FEED_ID = ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, ";\r
+    private static final String SQL_SELECT_COUNT = "(SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in(";\r
+    private static final String SQL_TYPE_PUB = ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,";\r
+    private static final String SQL_SELECT_SUM = "(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in(";\r
+    private static final String SQL_PUBLISH_LENGTH = ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED,";\r
+    private static final String SQL_SUBSCRIBER_URL = " sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL,";\r
+    private static final String SQL_SUB_ID = " e.DELIVERY_SUBID as SUBID, ";\r
+    private static final String SQL_DELIVERY_TIME = " e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME, ";\r
+    private static final String SQL_AVERAGE_DELAY = " AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS";\r
+    private static final String SQL_JOIN_RECORDS = " e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN (";\r
+    private static final String SQL_STATUS_204 = " AND m.STATUS=204 AND e.RESULT=204 ";\r
+    private static final String SQL_GROUP_SUB_ID = " group by SUBID";\r
+\r
 \r
     /**\r
      * DELETE a logging URL -- not supported.\r
@@ -83,7 +100,8 @@ public class StatisticsServlet extends BaseServlet {
     public void doGet(HttpServletRequest req, HttpServletResponse resp) {\r
         Map<String, String> map = buildMapFromRequest(req);\r
         if (map.get("err") != null) {\r
-            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments: " + map.get("err"), eventlogger);\r
+            sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+                    "Invalid arguments: " + map.get("err"), eventlogger);\r
             return;\r
         }\r
         // check Accept: header??\r
@@ -159,10 +177,12 @@ public class StatisticsServlet extends BaseServlet {
 \r
 \r
     /**\r
-     * rsToJson - Converting RS to JSON object\r
+     * rsToJson - Converting RS to JSON object.\r
      *\r
-     * @param out ServletOutputStream, rs as ResultSet\r
-     * @throws IOException, SQLException\r
+     * @param out ServletOutputStream\r
+     * @param rs as ResultSet\r
+     * @throws IOException input/output exception\r
+     * @throws SQLException SQL exception\r
      */\r
     public void rsToCSV(ResultSet rs, ServletOutputStream out) throws IOException, SQLException {\r
         String header = "FEEDNAME,FEEDID,FILES_PUBLISHED,PUBLISH_LENGTH, FILES_DELIVERED, "\r
@@ -199,10 +219,12 @@ public class StatisticsServlet extends BaseServlet {
     }\r
 \r
     /**\r
-     * rsToJson - Converting RS to JSON object\r
+     * rsToJson - Converting RS to JSON object.\r
      *\r
-     * @param out ServletOutputStream, rs as ResultSet\r
-     * @throws IOException, SQLException\r
+     * @param out ServletOutputStream\r
+     * @param rs as ResultSet\r
+     * @throws IOException input/output exception\r
+     * @throws SQLException SQL exception\r
      */\r
     private void rsToJson(ResultSet rs, ServletOutputStream out) throws IOException, SQLException {\r
         String[] fields = {"FEEDNAME", FEEDID, "FILES_PUBLISHED", "PUBLISH_LENGTH", "FILES_DELIVERED",\r
@@ -213,9 +235,9 @@ public class StatisticsServlet extends BaseServlet {
         while (rs.next()) {\r
             LOGJSONObject j2 = new LOGJSONObject();\r
             for (String key : fields) {\r
-                Object v = rs.getString(key);\r
-                if (v != null) {\r
-                    j2.put(key.toLowerCase(), v);\r
+                Object val = rs.getString(key);\r
+                if (val != null) {\r
+                    j2.put(key.toLowerCase(), val);\r
                 } else {\r
                     j2.put(key.toLowerCase(), "");\r
                 }\r
@@ -271,7 +293,7 @@ public class StatisticsServlet extends BaseServlet {
 \r
 \r
     /**\r
-     * queryGeneretor - Generating sql query\r
+     * queryGeneretor - Generating sql query.\r
      *\r
      * @param map as key value pare of all user input fields\r
      */\r
@@ -306,13 +328,12 @@ public class StatisticsServlet extends BaseServlet {
 \r
         if (endTime == null && startTime == null) {\r
 \r
-            sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids\r
-                + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("\r
-                + feedids\r
-                + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("\r
-                + feedids\r
-                + ")  and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED,  sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME,  AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("\r
-                + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204  group by SUBID";\r
+            sql =  SQL_SELECT_NAME + feedids + SQL_FEED_ID + SQL_SELECT_COUNT + feedids + SQL_TYPE_PUB\r
+                    + SQL_SELECT_SUM\r
+                    + feedids + SQL_PUBLISH_LENGTH\r
+                + SQL_SUBSCRIBER_URL + SQL_SUB_ID + SQL_DELIVERY_TIME + SQL_AVERAGE_DELAY + SQL_JOIN_RECORDS\r
+                    + feedids + ") " + subid\r
+                    + SQL_STATUS_204 + SQL_GROUP_SUB_ID;\r
 \r
             return sql;\r
         } else if (startTime != null && endTime == null) {\r
@@ -322,15 +343,12 @@ public class StatisticsServlet extends BaseServlet {
             long currentTimeInMilli = cal.getTimeInMillis();\r
             long compareTime = currentTimeInMilli - inputTimeInMilli;\r
 \r
-            sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids\r
-                + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("\r
-                + feedids\r
-                + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("\r
-                + feedids\r
-                + ")  and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED,  sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME,  AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("\r
-                + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204 and e.event_time>="\r
-                + compareTime + " group by SUBID";\r
-\r
+            sql = SQL_SELECT_NAME + feedids + SQL_FEED_ID + SQL_SELECT_COUNT + feedids + SQL_TYPE_PUB\r
+                    + SQL_SELECT_SUM\r
+                    + feedids + SQL_PUBLISH_LENGTH\r
+                + SQL_SUBSCRIBER_URL + SQL_SUB_ID + SQL_DELIVERY_TIME + SQL_AVERAGE_DELAY + SQL_JOIN_RECORDS\r
+                    + feedids + ") " + subid\r
+                + SQL_STATUS_204 + " and e.event_time>=" + compareTime + SQL_GROUP_SUB_ID;\r
             return sql;\r
 \r
         } else {\r
@@ -341,15 +359,11 @@ public class StatisticsServlet extends BaseServlet {
             long startInMillis = startDate.getTime();\r
             long endInMillis = endDate.getTime();\r
 \r
-            sql = "SELECT (SELECT NAME FROM FEEDS AS f WHERE f.FEEDID in(" + feedids\r
-                + ") and f.FEEDID=e.FEEDID) AS FEEDNAME, e.FEEDID as FEEDID, (SELECT COUNT(*) FROM LOG_RECORDS AS c WHERE c.FEEDID in("\r
-                + feedids\r
-                + ") and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS FILES_PUBLISHED,(SELECT SUM(content_length) FROM LOG_RECORDS AS c WHERE c.FEEDID in("\r
-                + feedids\r
-                + ")  and c.FEEDID=e.FEEDID AND c.TYPE='PUB') AS PUBLISH_LENGTH, COUNT(e.EVENT_TIME) as FILES_DELIVERED,  sum(m.content_length) as DELIVERED_LENGTH,SUBSTRING_INDEX(e.REQURI,'/',+3) as SUBSCRIBER_URL, e.DELIVERY_SUBID as SUBID, e.EVENT_TIME AS PUBLISH_TIME, m.EVENT_TIME AS DELIVERY_TIME,  AVG(e.EVENT_TIME - m.EVENT_TIME)/1000 as AverageDelay FROM LOG_RECORDS e JOIN LOG_RECORDS m ON m.PUBLISH_ID = e.PUBLISH_ID AND e.FEEDID IN ("\r
-                + feedids + ") " + subid + " AND m.STATUS=204 AND e.RESULT=204 and e.event_time between " + startInMillis\r
-                + " and " + endInMillis + " group by SUBID";\r
-\r
+            sql = SQL_SELECT_NAME + feedids + SQL_FEED_ID + SQL_SELECT_COUNT + feedids + SQL_TYPE_PUB\r
+                    + SQL_SELECT_SUM\r
+                    + feedids + SQL_PUBLISH_LENGTH + SQL_SUBSCRIBER_URL\r
+                    + SQL_SUB_ID + SQL_DELIVERY_TIME + SQL_AVERAGE_DELAY + SQL_JOIN_RECORDS + feedids + ")" + subid + SQL_STATUS_204\r
+                    +" and e.event_time between " + startInMillis + " and " + endInMillis + SQL_GROUP_SUB_ID;\r
 \r
             return sql;\r
         }\r
@@ -384,10 +398,10 @@ public class StatisticsServlet extends BaseServlet {
 \r
     private Map<String, String> buildMapFromRequest(HttpServletRequest req) {\r
         Map<String, String> map = new HashMap<>();\r
-        String s = req.getParameter("type");\r
-        if (s != null) {\r
-            if ("pub".equals(s) || "del".equals(s) || "exp".equals(s)) {\r
-                map.put("type", s);\r
+        String str = req.getParameter("type");\r
+        if (str != null) {\r
+            if ("pub".equals(str) || "del".equals(str) || "exp".equals(str)) {\r
+                map.put("type", str);\r
             } else {\r
                 map.put("err", "bad type");\r
                 return map;\r
@@ -400,19 +414,19 @@ public class StatisticsServlet extends BaseServlet {
         map.put("resultSQL", "");\r
         map.put(REASON_SQL, "");\r
 \r
-        s = req.getParameter("publishId");\r
-        if (s != null) {\r
-            if (s.indexOf("'") >= 0) {\r
+        str = req.getParameter("publishId");\r
+        if (str != null) {\r
+            if (str.indexOf("'") >= 0) {\r
                 map.put("err", "bad publishId");\r
                 return map;\r
             }\r
-            map.put("publishSQL", " AND PUBLISH_ID = '" + s + "'");\r
+            map.put("publishSQL", " AND PUBLISH_ID = '" + str + "'");\r
         }\r
 \r
-        s = req.getParameter("statusCode");\r
-        if (s != null) {\r
+        str = req.getParameter("statusCode");\r
+        if (str != null) {\r
             String sql = null;\r
-            switch (s) {\r
+            switch (str) {\r
                 case "success":\r
                     sql = " AND STATUS >= 200 AND STATUS < 300";\r
                     break;\r
@@ -424,9 +438,9 @@ public class StatisticsServlet extends BaseServlet {
                     break;\r
                 default:\r
                     try {\r
-                        int n = Integer.parseInt(s);\r
-                        if ((n >= 100 && n < 600) || (n == -1)) {\r
-                            sql = " AND STATUS = " + n;\r
+                        int statusCode = Integer.parseInt(str);\r
+                        if ((statusCode >= 100 && statusCode < 600) || (statusCode == -1)) {\r
+                            sql = " AND STATUS = " + statusCode;\r
                         }\r
                     } catch (NumberFormatException e) {\r
                         eventlogger.error("Failed to parse input", e);\r
@@ -441,10 +455,10 @@ public class StatisticsServlet extends BaseServlet {
             map.put("resultSQL", sql.replaceAll("STATUS", "RESULT"));\r
         }\r
 \r
-        s = req.getParameter("expiryReason");\r
-        if (s != null) {\r
+        str = req.getParameter("expiryReason");\r
+        if (str != null) {\r
             map.put("type", "exp");\r
-            switch (s) {\r
+            switch (str) {\r
                 case "notRetryable":\r
                     map.put(REASON_SQL, " AND REASON = 'notRetryable'");\r
                     break;\r
@@ -485,30 +499,31 @@ public class StatisticsServlet extends BaseServlet {
         return map;\r
     }\r
 \r
-    private long getTimeFromParam(final String s) {\r
-        if (s == null) {\r
+    private long getTimeFromParam(final String str) {\r
+        if (str == null) {\r
             return 0;\r
         }\r
         try {\r
             // First, look for an RFC 3339 date\r
-            String fmt = (s.indexOf('.') > 0) ? FMT2 : FMT1;\r
+            String fmt = (str.indexOf('.') > 0) ? FMT2 : FMT1;\r
             SimpleDateFormat sdf = new SimpleDateFormat(fmt);\r
-            Date d = sdf.parse(s);\r
-            return d.getTime();\r
+            Date date = sdf.parse(str);\r
+            return date.getTime();\r
         } catch (ParseException e) {\r
             intlogger.error("Exception in getting Time :- " + e.getMessage(), e);\r
         }\r
         try {\r
             // Also allow a long (in ms); useful for testing\r
-            return Long.parseLong(s);\r
+            return Long.parseLong(str);\r
         } catch (NumberFormatException e) {\r
             intlogger.error("Exception in getting Time :- " + e.getMessage(), e);\r
         }\r
-        intlogger.info("Error parsing time=" + s);\r
+        intlogger.info("Error parsing time=" + str);\r
         return -1;\r
     }\r
 \r
-    private void getRecordsForSQL(Map<String, String> map, String outputType, ServletOutputStream out, HttpServletResponse resp) {\r
+    private void getRecordsForSQL(Map<String, String> map, String outputType, ServletOutputStream out,\r
+            HttpServletResponse resp) {\r
         try {\r
             String filterQuery = this.queryGeneretor(map);\r
             eventlogger.debug("SQL Query for Statistics resultset. " + filterQuery);\r