- private static final long TWENTYFOUR_HOURS = (24 * 60 * 60 * 1000L);\r
- private static final String fmt1 = "yyyy-MM-dd'T'HH:mm:ss'Z'";\r
- private static final String fmt2 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";\r
-\r
-\r
- /**\r
- * DELETE a logging URL -- not supported.\r
- */\r
- @Override\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.error(elr.toString());\r
- sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
- }\r
-\r
- /**\r
- * GET a Statistics URL -- retrieve Statistics data for a feed or subscription. See the\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) {\r
-\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
- return;\r
- }\r
- // check Accept: header??\r
+ private static final long TWENTYFOUR_HOURS = (24 * 60 * 60 * 1000L);\r
+ private static final String FMT1 = "yyyy-MM-dd'T'HH:mm:ss'Z'";\r
+ 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
+ */\r
+ @Override\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.error(elr.toString());\r
+ sendResponseError(resp, HttpServletResponse.SC_METHOD_NOT_ALLOWED, message, eventlogger);\r
+ }\r
+\r
+ /**\r
+ * GET a Statistics URL -- retrieve Statistics data for a feed or subscription. See the\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) {\r
+ Map<String, String> map = buildMapFromRequest(req);\r
+ if (map.get("err") != null) {\r
+ sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
+ "Invalid arguments: " + map.get("err"), eventlogger);\r
+ return;\r
+ }\r
+ // check Accept: header??\r
+ resp.setStatus(HttpServletResponse.SC_OK);\r
+ resp.setContentType(LOGLIST_CONTENT_TYPE);\r
+ String outputType = "json";\r
+ if (req.getParameter(FEEDID) == null && req.getParameter(GROUPID) == null) {\r
+ try {\r
+ resp.getOutputStream().print("Invalid request, Feedid or Group ID is required.");\r
+ } catch (IOException ioe) {\r
+ eventlogger.error("PROV0171 StatisticsServlet.doGet: " + ioe.getMessage(), ioe);\r
+ }\r
+ }\r
+ if (req.getParameter(FEEDID) != null && req.getParameter(GROUPID) == null) {\r
+ map.put(FEEDIDS, req.getParameter(FEEDID).replace("|", ","));\r
+ }\r
+ if (req.getParameter(GROUPID) != null && req.getParameter(FEEDID) == null) {\r
+ StringBuilder groupid1;\r
+ try {\r
+ groupid1 = this.getFeedIdsByGroupId(Integer.parseInt(req.getParameter(GROUPID)));\r
+ map.put(FEEDIDS, groupid1.toString());\r
+ } catch (NumberFormatException e) {\r
+ eventlogger.error("PROV0172 StatisticsServlet.doGet: " + e.getMessage(), e);\r
+ }\r
+ }\r
+ if (req.getParameter(GROUPID) != null && req.getParameter(FEEDID) != null) {\r
+ StringBuilder groupid1;\r
+ try {\r
+ groupid1 = this.getFeedIdsByGroupId(Integer.parseInt(req.getParameter(GROUPID)));\r
+ groupid1.append(",");\r
+ groupid1.append(req.getParameter(FEEDID).replace("|", ","));\r
+ map.put(FEEDIDS, groupid1.toString());\r
+ } catch (NumberFormatException e) {\r
+ eventlogger.error("PROV0173 StatisticsServlet.doGet: " + e.getMessage(), e);\r
+ }\r
+ }\r
+ if (req.getParameter(SUBID) != null && req.getParameter(FEEDID) != null) {\r
+ String subidstr = "and e.DELIVERY_SUBID in("\r
+ + req.getParameter(SUBID).replace("|", ",") + ")";\r
+ map.put(SUBID, subidstr);\r
+ }\r
+ if (req.getParameter(SUBID) != null && req.getParameter(GROUPID) != null) {\r
+ String subidstr = "and e.DELIVERY_SUBID in("\r
+ + req.getParameter(SUBID).replace("|", ",") + ")";\r
+ map.put(SUBID, subidstr);\r
+ }\r
+ if (req.getParameter("type") != null) {\r
+ map.put(EVENT_TYPE, req.getParameter("type").replace("|", ","));\r
+ }\r
+ if (req.getParameter(OUTPUT_TYPE) != null) {\r
+ map.put(OUTPUT_TYPE, req.getParameter(OUTPUT_TYPE));\r
+ }\r
+ if (req.getParameter(START_TIME) != null) {\r
+ map.put(START_TIME, req.getParameter(START_TIME));\r
+ }\r
+ if (req.getParameter(END_TIME) != null) {\r
+ map.put(END_TIME, req.getParameter(END_TIME));\r
+ }\r
+ if (req.getParameter("time") != null) {\r
+ map.put(START_TIME, req.getParameter("time"));\r
+ map.put(END_TIME, null);\r
+ }\r
+ if (req.getParameter(OUTPUT_TYPE) != null) {\r
+ outputType = req.getParameter(OUTPUT_TYPE);\r
+ }\r
+ try {\r
+ this.getRecordsForSQL(map, outputType, resp.getOutputStream(), resp);\r
+ } catch (IOException ioe) {\r
+ eventlogger.error("PROV0174 StatisticsServlet.doGet: " + ioe.getMessage(), ioe);\r
+ }\r