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
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
* 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
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
}\r
\r
/**\r
* <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
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
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
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
/**\r
* getFeedIdsByGroupId - Getting FEEDID's by GROUP ID.\r
*\r
- * @throws SQL Query SQLException.\r
+ * @throws SQLException Query SQLException.\r
*/\r
public StringBuffer getFeedIdsByGroupId(int groupIds) throws SQLException {\r
\r
DB db = null;\r
Connection conn = null;\r
- PreparedStatement prepareStatement = null;\r
+ //PreparedStatement prepareStatement = null;\r
ResultSet resultSet = null;\r
String sqlGoupid = null;\r
StringBuffer feedIds = new StringBuffer();\r
db = new DB();\r
conn = db.getConnection();\r
sqlGoupid = " SELECT FEEDID from FEEDS WHERE GROUPID = ?";\r
- prepareStatement = conn.prepareStatement(sqlGoupid);\r
- prepareStatement.setInt(1, groupIds);\r
- resultSet = prepareStatement.executeQuery();\r
- while (resultSet.next()) {\r
- feedIds.append(resultSet.getInt("FEEDID"));\r
- feedIds.append(",");\r
+ try(PreparedStatement prepareStatement = conn.prepareStatement(sqlGoupid)) {\r
+ prepareStatement.setInt(1, groupIds);\r
+ resultSet = prepareStatement.executeQuery();\r
+ while (resultSet.next()) {\r
+ feedIds.append(resultSet.getInt("FEEDID"));\r
+ feedIds.append(",");\r
+ }\r
+ feedIds.deleteCharAt(feedIds.length() - 1);\r
+ System.out.println("feedIds" + feedIds.toString());\r
}\r
- feedIds.deleteCharAt(feedIds.length() - 1);\r
- 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
resultSet.close();\r
resultSet = null;\r
}\r
-\r
- if (prepareStatement != null) {\r
- prepareStatement.close();\r
- prepareStatement = null;\r
- }\r
-\r
- if (conn != null) {\r
+ if (conn != null) {\r
db.release(conn);\r
}\r
} catch (Exception e) {\r
- e.printStackTrace();\r
+ eventlogger.error(e.getMessage());\r
}\r
}\r
return feedIds;\r
* 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
+ 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
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
}\r
\r
private Map<String, String> buildMapFromRequest(HttpServletRequest req) {\r
return -1;\r
}\r
\r
-\r
- private ResultSet getRecordsForSQL(String sql) {\r
- intlogger.debug(sql);\r
- long start = System.currentTimeMillis();\r
- DB db = new DB();\r
- Connection conn = null;\r
- ResultSet rs = null;\r
-\r
+ private void getRecordsForSQL(Map<String, String> map, String outputType, ServletOutputStream out, HttpServletResponse resp) {\r
try {\r
- conn = db.getConnection();\r
- Statement stmt = conn.createStatement();\r
- PreparedStatement pst = conn.prepareStatement(sql);\r
- rs = pst.executeQuery();\r
- //this.rsToJson(rs)\r
- //rs.close();\r
- stmt.close();\r
- } catch (SQLException e) {\r
- e.printStackTrace();\r
- } finally {\r
- if (conn != null) {\r
- db.release(conn);\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
+ ResultSet rs = null;\r
+ try (Connection conn = db.getConnection()) {\r
+ try (PreparedStatement pst = conn.prepareStatement(filterQuery)) {\r
+ rs = pst.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
+ } 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
- intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");\r
-\r
- return rs;\r
}\r
}\r
+\r