update DR logging to log under one system
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / StatisticsServlet.java
index e79d470..34ba5d3 100755 (executable)
@@ -28,7 +28,6 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
-import java.sql.Statement;\r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
 import java.util.Calendar;\r
@@ -44,6 +43,8 @@ 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
@@ -64,13 +65,13 @@ public class StatisticsServlet extends BaseServlet {
    * DELETE a logging URL -- not supported.\r
    */\r
   @Override\r
-  public void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doDelete(HttpServletRequest req, HttpServletResponse resp) {\r
     String message = "DELETE not allowed for the logURL.";\r
     EventLogRecord elr = new EventLogRecord(req);\r
     elr.setMessage(message);\r
     elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);\r
-    eventlogger.info(elr);\r
-    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);\r
+    eventlogger.error(elr.toString());\r
+    sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
   }\r
 \r
   /**\r
@@ -78,24 +79,27 @@ public class StatisticsServlet extends BaseServlet {
    * <b>Statistics API</b> document for details on how this     method should be invoked.\r
    */\r
   @Override\r
-  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doGet(HttpServletRequest req, HttpServletResponse resp) {\r
 \r
     Map<String, String> map = buildMapFromRequest(req);\r
     if (map.get("err") != null) {\r
-      resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments: " + map.get("err"));\r
+      sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid arguments: " + map.get("err"), eventlogger);\r
       return;\r
     }\r
     // check Accept: header??\r
 \r
     resp.setStatus(HttpServletResponse.SC_OK);\r
     resp.setContentType(LOGLIST_CONTENT_TYPE);\r
-    ServletOutputStream out = resp.getOutputStream();\r
 \r
     String outputType = "json";\r
     String feedids = null;\r
 \r
     if (req.getParameter("feedid") == null && req.getParameter("groupid") == null) {\r
-      out.print("Invalid request, Feedid or Group ID is required.");\r
+      try {\r
+        resp.getOutputStream().print("Invalid request, Feedid or Group ID is required.");\r
+      } catch (IOException ioe) {\r
+        eventlogger.error("IOException: " + ioe.getMessage());\r
+      }\r
     }\r
 \r
     if (req.getParameter("feedid") != null && req.getParameter("groupid") == null) {\r
@@ -114,10 +118,8 @@ public class StatisticsServlet extends BaseServlet {
         System.out.println("groupid1" + groupid1.toString());\r
 \r
 \r
-      } catch (NumberFormatException e) {\r
-        e.printStackTrace();\r
-      } catch (SQLException e) {\r
-        e.printStackTrace();\r
+      } catch (NumberFormatException | SQLException e) {\r
+        eventlogger.error(e.getMessage());\r
       }\r
     }\r
     if (req.getParameter("groupid") != null && req.getParameter("feedid") != null) {\r
@@ -135,10 +137,8 @@ public class StatisticsServlet extends BaseServlet {
         System.out.println("groupid1" + groupid1.toString());\r
 \r
 \r
-      } catch (NumberFormatException e) {\r
-        e.printStackTrace();\r
-      } catch (SQLException e) {\r
-        e.printStackTrace();\r
+      } catch (NumberFormatException | SQLException e) {\r
+        eventlogger.error(e.getMessage());\r
       }\r
     }\r
 \r
@@ -179,40 +179,12 @@ public class StatisticsServlet extends BaseServlet {
     if (req.getParameter("output_type") != null) {\r
       outputType = req.getParameter("output_type");\r
     }\r
-\r
     try {\r
-\r
-      String filterQuery = this.queryGeneretor(map);\r
-      eventlogger.debug("SQL Query for Statistics resultset. " + filterQuery);\r
-\r
-      ResultSet rs = this.getRecordsForSQL(filterQuery);\r
-\r
-      if (outputType.equals("csv")) {\r
-        resp.setContentType("application/octet-stream");\r
-        Date date = new Date();\r
-        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");\r
-        resp.setHeader("Content-Disposition",\r
-            "attachment; filename=\"result:" + dateFormat.format(date) + ".csv\"");\r
-        eventlogger.info("Generating CSV file from Statistics resultset");\r
-\r
-        rsToCSV(rs, out);\r
-      } else {\r
-        eventlogger.info("Generating JSON for Statistics resultset");\r
-        this.rsToJson(rs, out);\r
-      }\r
-    } catch (IOException e) {\r
-      eventlogger.error("IOException - Generating JSON/CSV:" + e);\r
-      e.printStackTrace();\r
-    } catch (JSONException e) {\r
-      eventlogger.error("JSONException - executing SQL query:" + e);\r
-      e.printStackTrace();\r
-    } catch (SQLException e) {\r
-      eventlogger.error("SQLException - executing SQL query:" + e);\r
-      e.printStackTrace();\r
-    } catch (ParseException e) {\r
-      eventlogger.error("ParseException - executing SQL query:" + e);\r
-      e.printStackTrace();\r
+      this.getRecordsForSQL(map, outputType, resp.getOutputStream(), resp);\r
+    } catch (IOException ioe) {\r
+      eventlogger.error("IOException: " + ioe.getMessage());\r
     }\r
+\r
   }\r
 \r
 \r
@@ -319,7 +291,7 @@ public class StatisticsServlet extends BaseServlet {
           System.out.println("feedIds" + feedIds.toString());\r
       }\r
     } catch (SQLException e) {\r
-      e.printStackTrace();\r
+      eventlogger.error(e.getMessage());\r
     } finally {\r
       try {\r
         if (resultSet != null) {\r
@@ -330,7 +302,7 @@ public class StatisticsServlet extends BaseServlet {
           db.release(conn);\r
         }\r
       } catch (Exception e) {\r
-        e.printStackTrace();\r
+        eventlogger.error(e.getMessage());\r
       }\r
     }\r
     return feedIds;\r
@@ -430,26 +402,26 @@ public class StatisticsServlet extends BaseServlet {
    * PUT a Statistics URL -- not supported.\r
    */\r
   @Override\r
-  public void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doPut(HttpServletRequest req, HttpServletResponse resp) {\r
     String message = "PUT not allowed for the StatisticsURL.";\r
     EventLogRecord elr = new EventLogRecord(req);\r
     elr.setMessage(message);\r
     elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);\r
-    eventlogger.info(elr);\r
-    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);\r
+    eventlogger.error(elr.toString());\r
+    sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
   }\r
 \r
   /**\r
    * POST a Statistics URL -- not supported.\r
    */\r
   @Override\r
-  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {\r
+  public void doPost(HttpServletRequest req, HttpServletResponse resp) {\r
     String message = "POST not allowed for the StatisticsURL.";\r
     EventLogRecord elr = new EventLogRecord(req);\r
     elr.setMessage(message);\r
     elr.setResult(HttpServletResponse.SC_METHOD_NOT_ALLOWED);\r
-    eventlogger.info(elr);\r
-    resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, message);\r
+    eventlogger.error(elr.toString());\r
+    sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
   }\r
 \r
   private Map<String, String> buildMapFromRequest(HttpServletRequest req) {\r
@@ -565,44 +537,42 @@ public class StatisticsServlet extends BaseServlet {
     intlogger.info("Error parsing time=" + s);\r
     return -1;\r
   }\r
-  private ResultSet getRecordsForSQL(String sql) {\r
-      intlogger.debug(sql);\r
+\r
+  private void getRecordsForSQL(Map<String, String> map, String outputType, ServletOutputStream out, HttpServletResponse resp) {\r
+    try {\r
+\r
+      String filterQuery = this.queryGeneretor(map);\r
+      eventlogger.debug("SQL Query for Statistics resultset. " + filterQuery);\r
+      intlogger.debug(filterQuery);\r
       long start = System.currentTimeMillis();\r
       DB db = new DB();\r
-      Connection conn = null;\r
-      ResultSet rs = null;\r
-      Statement stmt = null;\r
-      PreparedStatement pst = null;\r
-      try {\r
-          conn = db.getConnection();\r
-          stmt = conn.createStatement();\r
-          pst = conn.prepareStatement(sql);\r
-          rs = pst.executeQuery();\r
-      } catch (SQLException e) {\r
-          e.printStackTrace();\r
-      } finally {\r
-\r
-          try {\r
-              if (conn != null) {\r
-                  db.release(conn);\r
-              }\r
-              if (stmt != null) {\r
-                  stmt.close();\r
-              }\r
-              if (pst != null) {\r
-                  pst.close();\r
-              }\r
-              if (rs != null) {\r
-                  rs.close();\r
-              }\r
-\r
-          } catch (SQLException sqlException) {\r
-              intlogger.error("Exception in getting SQl Records",sqlException);\r
+      try (Connection conn = db.getConnection()) {\r
+        try (ResultSet rs = conn.prepareStatement(filterQuery).executeQuery()) {\r
+          if (outputType.equals("csv")) {\r
+            resp.setContentType("application/octet-stream");\r
+            Date date = new Date();\r
+            SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");\r
+            resp.setHeader("Content-Disposition",\r
+                    "attachment; filename=\"result:" + dateFormat.format(date) + ".csv\"");\r
+            eventlogger.info("Generating CSV file from Statistics resultset");\r
+\r
+            rsToCSV(rs, out);\r
+          } else {\r
+            eventlogger.info("Generating JSON for Statistics resultset");\r
+            this.rsToJson(rs, out);\r
           }\r
-\r
-          intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");\r
-\r
-          return rs;\r
+        }\r
+      } catch (SQLException e) {\r
+        eventlogger.error("SQLException:" + e);\r
       }\r
+      intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");\r
+    } catch (IOException e) {\r
+      eventlogger.error("IOException - Generating JSON/CSV:" + e);\r
+    } catch (JSONException e) {\r
+      eventlogger.error("JSONException - executing SQL query:" + e);\r
+    } catch (ParseException e) {\r
+      eventlogger.error("ParseException - executing SQL query:" + e);\r
+    }\r
   }\r
 }\r
+\r