import java.text.ParseException;\r
import java.util.LinkedHashMap;\r
\r
+import org.apache.commons.lang3.StringUtils;\r
import org.onap.dmaap.datarouter.provisioning.utils.LOGJSONObject;\r
\r
\r
* @author Robert Eby\r
* @version $Id: PublishRecord.java,v 1.6 2013/10/28 18:06:53 eby Exp $\r
*/\r
+\r
public class PublishRecord extends BaseLogRecord {\r
+\r
+ public static final String STATUS_CODE = "statusCode";\r
+ public static final String SOURCE_IP = "sourceIP";\r
+ public static final String ENDPOINT_ID = "endpointId";\r
+ public static final String FILE_NAME = "fileName";\r
private String feedFileid;\r
private String remoteAddr;\r
private String user;\r
private int status;\r
+ private String fileName;\r
\r
+ /**\r
+ * Publish record constructor.\r
+ * @param pp string array of attributes\r
+ * @throws ParseException in case of parse error\r
+ */\r
public PublishRecord(String[] pp) throws ParseException {\r
super(pp);\r
-// This is too slow!\r
-// Matcher m = Pattern.compile(".*/publish/(\\d+)/(.*)$").matcher(pp[4]);\r
-// if (!m.matches())\r
-// throw new ParseException("bad pattern", 0);\r
-// this.feedFileid = m.group(2);\r
int ix = pp[4].indexOf("/publish/");\r
- if (ix < 0)\r
+ if (ix < 0) {\r
throw new ParseException("bad pattern", 0);\r
+ }\r
ix = pp[4].indexOf('/', ix + 9);\r
- if (ix < 0)\r
+ if (ix < 0) {\r
throw new ParseException("bad pattern", 0);\r
+ }\r
this.feedFileid = pp[4].substring(ix + 1);\r
this.remoteAddr = pp[8];\r
this.user = pp[9];\r
this.status = Integer.parseInt(pp[10]);\r
+ this.fileName = StringUtils.substringAfterLast(this.getRequestUri(), "/");\r
}\r
\r
+ /**\r
+ * Publish record constructor.\r
+ * @param rs ResultSet from DB\r
+ * @throws SQLException in case of SQL error\r
+ */\r
public PublishRecord(ResultSet rs) throws SQLException {\r
super(rs);\r
this.feedFileid = rs.getString("FEED_FILEID");\r
this.remoteAddr = rs.getString("REMOTE_ADDR");\r
this.user = rs.getString("USER");\r
this.status = rs.getInt("STATUS");\r
+ this.fileName = rs.getString("FILENAME");\r
}\r
\r
public String getFeedFileid() {\r
this.status = status;\r
}\r
\r
+ public String getFileName() {\r
+ return fileName;\r
+ }\r
+\r
+ public void setFileName(String fileName) {\r
+ this.fileName = fileName;\r
+ }\r
\r
+\r
+ /**\r
+ * Method to reorder json object.\r
+ * @param jo LOGJSONObject\r
+ * @return LOGJSONObject\r
+ */\r
public LOGJSONObject reOrderObject(LOGJSONObject jo) {\r
- LinkedHashMap<String, Object> logrecordObj = new LinkedHashMap<String, Object>();\r
+ LinkedHashMap<String, Object> logrecordObj = new LinkedHashMap<>();\r
\r
\r
- logrecordObj.put("statusCode", jo.get("statusCode"));\r
+ logrecordObj.put(STATUS_CODE, jo.get(STATUS_CODE));\r
logrecordObj.put("publishId", jo.get("publishId"));\r
logrecordObj.put("requestURI", jo.get("requestURI"));\r
- logrecordObj.put("sourceIP", jo.get("sourceIP"));\r
+ logrecordObj.put(SOURCE_IP, jo.get(SOURCE_IP));\r
logrecordObj.put("method", jo.get("method"));\r
logrecordObj.put("contentType", jo.get("contentType"));\r
- logrecordObj.put("endpointId", jo.get("endpointId"));\r
+ logrecordObj.put(ENDPOINT_ID, jo.get(ENDPOINT_ID));\r
logrecordObj.put("type", jo.get("type"));\r
logrecordObj.put("date", jo.get("date"));\r
logrecordObj.put("contentLength", jo.get("contentLength"));\r
+ logrecordObj.put(FILE_NAME, jo.get(FILE_NAME));\r
\r
- LOGJSONObject newjo = new LOGJSONObject(logrecordObj);\r
- return newjo;\r
+ return new LOGJSONObject(logrecordObj);\r
}\r
\r
+\r
@Override\r
public LOGJSONObject asJSONObject() {\r
LOGJSONObject jo = super.asJSONObject();\r
jo.put("type", "pub");\r
-// jo.put("feedFileid", feedFileid);\r
-// jo.put("remoteAddr", remoteAddr);\r
-// jo.put("user", user);\r
- jo.put("sourceIP", remoteAddr);\r
- jo.put("endpointId", user);\r
- jo.put("statusCode", status);\r
-\r
- LOGJSONObject newjo = this.reOrderObject(jo);\r
-\r
- return newjo;\r
+ jo.put("feedFileid", feedFileid);\r
+ jo.put("remoteAddr", remoteAddr);\r
+ jo.put("user", user);\r
+ jo.put(SOURCE_IP, remoteAddr);\r
+ jo.put(ENDPOINT_ID, user);\r
+ jo.put(STATUS_CODE, status);\r
+ jo.put(FILE_NAME, fileName);\r
+\r
+ return this.reOrderObject(jo);\r
}\r
\r
@Override\r
ps.setNull(16, Types.INTEGER);\r
ps.setNull(17, Types.VARCHAR);\r
ps.setNull(19, Types.BIGINT);\r
+ ps.setString(20, getFileName());\r
}\r
}\r