import com.att.eelf.configuration.EELFManager;\r
import java.io.IOException;\r
import java.sql.Connection;\r
+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.Date;\r
import javax.servlet.ServletOutputStream;\r
import javax.servlet.http.HttpServletRequest;\r
import javax.servlet.http.HttpServletResponse;\r
-\r
import org.onap.dmaap.datarouter.provisioning.beans.DeliveryRecord;\r
import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;\r
import org.onap.dmaap.datarouter.provisioning.beans.ExpiryRecord;\r
import org.onap.dmaap.datarouter.provisioning.beans.PublishRecord;\r
import org.onap.dmaap.datarouter.provisioning.beans.Subscription;\r
import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs;\r
-import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
import org.onap.dmaap.datarouter.provisioning.utils.LOGJSONObject;\r
-\r
-\r
-\r
+import org.onap.dmaap.datarouter.provisioning.utils.ProvDbUtils;\r
\r
\r
/**\r
\r
private final boolean isfeedlog;\r
\r
- public abstract class RowHandler {\r
+ public abstract static class RowHandler {\r
private final ServletOutputStream out;\r
private final String[] fields;\r
private boolean firstrow;\r
* @param fieldparam String field\r
* @param bool boolean\r
*/\r
- public RowHandler(ServletOutputStream out, String fieldparam, boolean bool) {\r
+ RowHandler(ServletOutputStream out, String fieldparam, boolean bool) {\r
this.out = out;\r
this.firstrow = bool;\r
this.fields = (fieldparam != null) ? fieldparam.split(":") : null;\r
* Handling row from DB.\r
* @param rs DB Resultset\r
*/\r
- public void handleRow(ResultSet rs) {\r
+ void handleRow(ResultSet rs) {\r
try {\r
LOGJSONable js = buildJSONable(rs);\r
LOGJSONObject jo = js.asJSONObject();\r
public abstract LOGJSONable buildJSONable(ResultSet rs) throws SQLException;\r
}\r
\r
- public class PublishRecordRowHandler extends RowHandler {\r
- public PublishRecordRowHandler(ServletOutputStream out, String fields, boolean bool) {\r
+ public static class PublishRecordRowHandler extends RowHandler {\r
+ PublishRecordRowHandler(ServletOutputStream out, String fields, boolean bool) {\r
super(out, fields, bool);\r
}\r
\r
}\r
}\r
\r
- public class DeliveryRecordRowHandler extends RowHandler {\r
- public DeliveryRecordRowHandler(ServletOutputStream out, String fields, boolean bool) {\r
+ public static class DeliveryRecordRowHandler extends RowHandler {\r
+ DeliveryRecordRowHandler(ServletOutputStream out, String fields, boolean bool) {\r
super(out, fields, bool);\r
}\r
\r
}\r
}\r
\r
- public class ExpiryRecordRowHandler extends RowHandler {\r
- public ExpiryRecordRowHandler(ServletOutputStream out, String fields, boolean bool) {\r
+ public static class ExpiryRecordRowHandler extends RowHandler {\r
+ ExpiryRecordRowHandler(ServletOutputStream out, String fields, boolean bool) {\r
super(out, fields, bool);\r
}\r
\r
\r
/**\r
* This class must be created from either a {@link FeedLogServlet} or a {@link SubLogServlet}.\r
- * @param isFeedLog boolean to handle those places where a feedlog request is different from\r
- * a sublog request\r
+ * @param isFeedLog boolean to handle those places where a feedlog request is different from a sublog request\r
*/\r
- protected LogServlet(boolean isFeedLog) {\r
+ LogServlet(boolean isFeedLog) {\r
this.isfeedlog = isFeedLog;\r
}\r
\r
eelfLogger.info(EelfMsgs.ENTRY);\r
try {\r
eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID,\r
- req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
+ req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
String message = "DELETE not allowed for the logURL.";\r
EventLogRecord elr = new EventLogRecord(req);\r
elr.setMessage(message);\r
eelfLogger.info(EelfMsgs.ENTRY);\r
try {\r
eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID,\r
- req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
+ req.getHeader(BEHALF_HEADER), getIdFromPath(req) + "");\r
int id = getIdFromPath(req);\r
if (id < 0) {\r
sendResponseError(resp, HttpServletResponse.SC_BAD_REQUEST,\r
- "Missing or bad feed/subscription number.", eventlogger);\r
+ "Missing or bad feed/subscription number.", eventlogger);\r
return;\r
}\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
+ "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
-\r
try (ServletOutputStream out = resp.getOutputStream()) {\r
final String fields = req.getParameter("fields");\r
-\r
out.print("[");\r
if (isfeedlog) {\r
// Handle /feedlog/feedid request\r
boolean firstrow = true;\r
-\r
// 1. Collect publish records for this feed\r
RowHandler rh = new PublishRecordRowHandler(out, fields, firstrow);\r
getPublishRecordsForFeed(id, rh, map);\r
firstrow = rh.firstrow;\r
-\r
// 2. Collect delivery records for subscriptions to this feed\r
rh = new DeliveryRecordRowHandler(out, fields, firstrow);\r
getDeliveryRecordsForFeed(id, rh, map);\r
firstrow = rh.firstrow;\r
-\r
// 3. Collect expiry records for subscriptions to this feed\r
rh = new ExpiryRecordRowHandler(out, fields, firstrow);\r
getExpiryRecordsForFeed(id, rh, map);\r
// 1. Collect publish records for the feed this subscription feeds\r
RowHandler rh = new PublishRecordRowHandler(out, fields, true);\r
getPublishRecordsForFeed(sub.getFeedid(), rh, map);\r
-\r
// 2. Collect delivery records for this subscription\r
rh = new DeliveryRecordRowHandler(out, fields, rh.firstrow);\r
getDeliveryRecordsForSubscription(id, rh, map);\r
-\r
// 3. Collect expiry records for this subscription\r
rh = new ExpiryRecordRowHandler(out, fields, rh.firstrow);\r
getExpiryRecordsForSubscription(id, rh, map);\r
eelfLogger.info(EelfMsgs.ENTRY);\r
try {\r
eelfLogger.info(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID,\r
- req.getHeader(BEHALF_HEADER),getIdFromPath(req) + "");\r
+ req.getHeader(BEHALF_HEADER),getIdFromPath(req) + "");\r
String message = "PUT not allowed for the logURL.";\r
EventLogRecord elr = new EventLogRecord(req);\r
elr.setMessage(message);\r
str = req.getParameter("expiryReason");\r
if (str != null) {\r
map.put("type", "exp");\r
- if ("notRetryable".equals(str)) {\r
- map.put(REASON_SQL, " AND REASON = 'notRetryable'");\r
- } else if ("retriesExhausted".equals(str)) {\r
- map.put(REASON_SQL, " AND REASON = 'retriesExhausted'");\r
- } else if ("diskFull".equals(str)) {\r
- map.put(REASON_SQL, " AND REASON = 'diskFull'");\r
- } else if ("other".equals(str)) {\r
- map.put(REASON_SQL, " AND REASON = 'other'");\r
- } else {\r
- map.put("err", "bad expiryReason");\r
- return map;\r
+ switch (str) {\r
+ case "notRetryable":\r
+ map.put(REASON_SQL, " AND REASON = 'notRetryable'");\r
+ break;\r
+ case "retriesExhausted":\r
+ map.put(REASON_SQL, " AND REASON = 'retriesExhausted'");\r
+ break;\r
+ case "diskFull":\r
+ map.put(REASON_SQL, " AND REASON = 'diskFull'");\r
+ break;\r
+ case "other":\r
+ map.put(REASON_SQL, " AND REASON = 'other'");\r
+ break;\r
+ default:\r
+ map.put("err", "bad expiryReason");\r
+ return map;\r
}\r
}\r
\r
private void getRecordsForSQL(String sql, RowHandler rh) {\r
intlogger.debug(sql);\r
long start = System.currentTimeMillis();\r
- DB db = new DB();\r
- Connection conn = null;\r
- try {\r
- conn = db.getConnection();\r
- try (Statement stmt = conn.createStatement()) {\r
- try (ResultSet rs = stmt.executeQuery(sql)) {\r
- while (rs.next()) {\r
- rh.handleRow(rs);\r
- }\r
- }\r
+ try (Connection conn = ProvDbUtils.getInstance().getConnection();\r
+ PreparedStatement ps = conn.prepareStatement(sql);\r
+ ResultSet rs = ps.executeQuery()) {\r
+ while (rs.next()) {\r
+ rh.handleRow(rs);\r
}\r
} catch (SQLException sqlException) {\r
intlogger.info("Failed to get Records. Exception = " + sqlException.getMessage(),sqlException);\r
- } finally {\r
- if (conn != null) {\r
- db.release(conn);\r
- }\r
}\r
intlogger.debug("Time: " + (System.currentTimeMillis() - start) + " ms");\r
}\r