DMAAP-1195 [DR] Remove DR code smells
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / beans / LogRecord.java
index dbb2133..b26e551 100644 (file)
@@ -7,9 +7,9 @@
  * * Licensed under the Apache License, Version 2.0 (the "License");\r
  * * you may not use this file except in compliance with the License.\r
  * * You may obtain a copy of the License at\r
- * * \r
+ * *\r
  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
- * * \r
+ * *\r
  *  * Unless required by applicable law or agreed to in writing, software\r
  * * distributed under the License is distributed on an "AS IS" BASIS,\r
  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
 \r
 package org.onap.dmaap.datarouter.provisioning.beans;\r
 \r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
 import java.io.IOException;\r
 import java.io.OutputStream;\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.sql.Types;\r
 import java.text.ParseException;\r
 import java.util.Iterator;\r
@@ -38,198 +39,221 @@ import java.util.Iterator;
 import org.onap.dmaap.datarouter.provisioning.utils.DB;\r
 import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet;\r
 \r
+\r
 /**\r
- * The representation of a Log Record, as retrieved from the DB.  Since this record format is only used\r
- * to replicate between provisioning servers, it is very bare-bones; e.g. there are no field setters and only 1 getter.\r
+ * The representation of a Log Record, as retrieved from the DB.  Since this record format is only used to replicate\r
+ * between provisioning servers, it is very bare-bones; e.g. there are no field setters and only 1 getter.\r
+ *\r
  * @author Robert Eby\r
  * @version $Id: LogRecord.java,v 1.7 2014/03/12 19:45:41 eby Exp $\r
  */\r
 public class LogRecord extends BaseLogRecord {\r
-       /**\r
-        * Print all log records whose RECORD_IDs are in the bit set provided.\r
-        * @param os the {@link OutputStream} to print the records on\r
-        * @param bs the {@link RLEBitSet} listing the record IDs to print\r
-        * @throws IOException\r
-        */\r
-       public static void printLogRecords(OutputStream os, RLEBitSet bs) throws IOException {\r
-               final String sql = "select * from LOG_RECORDS where RECORD_ID >= ? AND RECORD_ID <= ?";\r
-               DB db = new DB();\r
-               Connection conn = null;\r
-               try {\r
-                       conn = db.getConnection();\r
-                       Statement stmt = conn.createStatement();\r
-                       Iterator<Long[]> iter = bs.getRangeIterator();\r
-                       PreparedStatement ps = conn.prepareStatement(sql);\r
-                       while (iter.hasNext()) {\r
-                               Long[] n = iter.next();\r
-                               ps.setLong(1, n[0]);\r
-                               ps.setLong(2, n[1]);\r
-                               ResultSet rs = ps.executeQuery();\r
-                               while (rs.next()) {\r
-                                       LogRecord lr = new LogRecord(rs);\r
-                                       os.write(lr.toString().getBytes());\r
-                               }\r
-                               rs.close();\r
-                               ps.clearParameters();\r
-                       }\r
-                       ps.close();\r
-                       stmt.close();\r
-               } catch (SQLException e) {\r
-                       e.printStackTrace();\r
-               } finally {\r
-                       if (conn != null)\r
-                               db.release(conn);\r
-               }\r
-       }\r
-\r
-       private final String type;\r
-       private final String feedFileid;\r
-       private final String remoteAddr;\r
-       private final String user;\r
-       private final int status;\r
-       private final int subid;\r
-       private final String fileid;\r
-       private final int result;\r
-       private final int attempts;\r
-       private final String reason;\r
-       private final long record_id;\r
-       private final long clength2;\r
-\r
-       public LogRecord(ResultSet rs) throws SQLException {\r
-               super(rs);\r
-               this.type       = rs.getString("TYPE");\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
-\r
-               this.subid      = rs.getInt("DELIVERY_SUBID");\r
-               this.fileid     = rs.getString("DELIVERY_FILEID");\r
-               this.result     = rs.getInt("RESULT");\r
-\r
-               this.attempts   = rs.getInt("ATTEMPTS");\r
-               this.reason     = rs.getString("REASON");\r
-\r
-               this.record_id  = rs.getLong("RECORD_ID");\r
-               this.clength2   = rs.getLong("CONTENT_LENGTH_2");\r
-       }\r
-       public LogRecord(String[] pp) throws ParseException {\r
-               super(pp);\r
-               this.type       = pp[8];\r
-               this.feedFileid = pp[9];\r
-               this.remoteAddr = pp[10];\r
-               this.user       = pp[11];\r
-               this.status     = Integer.parseInt(pp[12]);\r
-\r
-               this.subid      = Integer.parseInt(pp[13]);\r
-               this.fileid     = pp[14];\r
-               this.result     = Integer.parseInt(pp[15]);\r
-\r
-               this.attempts   = Integer.parseInt(pp[16]);\r
-               this.reason     = pp[17];\r
-\r
-               this.record_id  = Long.parseLong(pp[18]);\r
-               this.clength2   = (pp.length == 20) ? Long.parseLong(pp[19]) : 0;\r
-       }\r
-\r
-       public long getRecordId() {\r
-               return record_id;\r
-       }\r
-\r
-       @Override\r
-       public String toString() {\r
-               return\r
-                       sdf.format(getEventTime()) + "|"\r
-                       + "LOG|"\r
-                       + getPublishId() + "|"\r
-                       + getFeedid() + "|"\r
-                       + getRequestUri() + "|"\r
-                       + getMethod() + "|"\r
-                       + getContentType() + "|"\r
-                       + getContentLength() + "|"\r
-                       + type + "|"\r
-                       + feedFileid + "|"\r
-                       + remoteAddr + "|"\r
-                       + user + "|"\r
-                       + status + "|"\r
-                       + subid + "|"\r
-                       + fileid + "|"\r
-                       + result + "|"\r
-                       + attempts + "|"\r
-                       + reason + "|"\r
-                       + record_id + "|"\r
-                       + clength2\r
-                       + "\n";\r
-       }\r
-\r
-       @Override\r
-       public void load(PreparedStatement ps) throws SQLException {\r
-               ps.setString(1, type);\r
-               super.load(ps);                         // loads fields 2-8\r
-               if (type.equals("pub")) {\r
-                       ps.setString(9,  feedFileid);\r
-                       ps.setString(10, remoteAddr);\r
-                       ps.setString(11, user);\r
-                       ps.setInt   (12, status);\r
-                       ps.setNull  (13, Types.INTEGER);\r
-                       ps.setNull  (14, Types.VARCHAR);\r
-                       ps.setNull  (15, Types.INTEGER);\r
-                       ps.setNull  (16, Types.INTEGER);\r
-                       ps.setNull  (17, Types.VARCHAR);\r
-                       ps.setLong  (18, record_id);\r
-                       ps.setNull  (19, Types.BIGINT);\r
-               } else if (type.equals("del")) {\r
-                       ps.setNull  (9,  Types.VARCHAR);\r
-                       ps.setNull  (10, Types.VARCHAR);\r
-                       ps.setString(11, user);\r
-                       ps.setNull  (12, Types.INTEGER);\r
-                       ps.setInt   (13, subid);\r
-                       ps.setString(14, fileid);\r
-                       ps.setInt   (15, result);\r
-                       ps.setNull  (16, Types.INTEGER);\r
-                       ps.setNull  (17, Types.VARCHAR);\r
-                       ps.setLong  (18, record_id);\r
-                       ps.setNull  (19, Types.BIGINT);\r
-               } else if (type.equals("exp")) {\r
-                       ps.setNull  (9,  Types.VARCHAR);\r
-                       ps.setNull  (10, Types.VARCHAR);\r
-                       ps.setNull  (11, Types.VARCHAR);\r
-                       ps.setNull  (12, Types.INTEGER);\r
-                       ps.setInt   (13, subid);\r
-                       ps.setString(14, fileid);\r
-                       ps.setNull  (15, Types.INTEGER);\r
-                       ps.setInt   (16, attempts);\r
-                       ps.setString(17, reason);\r
-                       ps.setLong  (18, record_id);\r
-                       ps.setNull  (19, Types.BIGINT);\r
-               } else if (type.equals("pbf")) {\r
-                       ps.setString( 9, feedFileid);\r
-                       ps.setString(10, remoteAddr);\r
-                       ps.setString(11, user);\r
-                       ps.setNull  (12, Types.INTEGER);\r
-                       ps.setNull  (13, Types.INTEGER);\r
-                       ps.setNull  (14, Types.VARCHAR);\r
-                       ps.setNull  (15, Types.INTEGER);\r
-                       ps.setNull  (16, Types.INTEGER);\r
-                       ps.setNull  (17, Types.VARCHAR);\r
-                       ps.setLong  (18, record_id);\r
-                       ps.setLong  (19, clength2);\r
-               } else if (type.equals("dlx")) {\r
-                       ps.setNull  ( 9, Types.VARCHAR);\r
-                       ps.setNull  (10, Types.VARCHAR);\r
-                       ps.setNull  (11, Types.VARCHAR);\r
-                       ps.setNull  (12, Types.INTEGER);\r
-                       ps.setInt   (13, subid);\r
-                       ps.setNull  (14, Types.VARCHAR);\r
-                       ps.setNull  (15, Types.INTEGER);\r
-                       ps.setNull  (16, Types.INTEGER);\r
-                       ps.setNull  (17, Types.VARCHAR);\r
-                       ps.setLong  (18, record_id);\r
-                       ps.setLong  (19, clength2);\r
-               }\r
-       }\r
-\r
-       public static void main(String[] a) throws IOException {\r
-               LogRecord.printLogRecords(System.out, new RLEBitSet(a[0]));\r
-       }\r
+\r
+    /**\r
+     * Print all log records whose RECORD_IDs are in the bit set provided.\r
+     *\r
+     * @param os the {@link OutputStream} to print the records on\r
+     * @param bs the {@link RLEBitSet} listing the record IDs to print\r
+     * @throws IOException in case of I/O error\r
+     */\r
+    private static EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");\r
+    private final String type;\r
+    private final String feedFileID;\r
+    private final String remoteAddr;\r
+    private final String user;\r
+    private final int status;\r
+    private final int subID;\r
+    private final String fileID;\r
+    private final int result;\r
+    private final int attempts;\r
+    private final String reason;\r
+    private final long recordId;\r
+    private final long clength2;\r
+    private final String fileName;\r
+\r
+    /**\r
+     * LogRecord constructor.\r
+     * @param rs ResultSet from SQL statement\r
+     * @throws SQLException in case of SQL error\r
+     */\r
+    public LogRecord(ResultSet rs) throws SQLException {\r
+        super(rs);\r
+        this.type = rs.getString("TYPE");\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
+\r
+        this.subID = rs.getInt("DELIVERY_SUBID");\r
+        this.fileID = rs.getString("DELIVERY_FILEID");\r
+        this.result = rs.getInt("RESULT");\r
+\r
+        this.attempts = rs.getInt("ATTEMPTS");\r
+        this.reason = rs.getString("REASON");\r
+\r
+        this.recordId = rs.getLong("RECORD_ID");\r
+        this.clength2 = rs.getLong("CONTENT_LENGTH_2");\r
+        this.fileName = rs.getString("FILENAME");\r
+    }\r
+\r
+    /**\r
+     * LogRecord Constructor from string array.\r
+     * @param pp string array of LogRecord attributes\r
+     * @throws ParseException in case of parse error\r
+     */\r
+    public LogRecord(String[] pp) throws ParseException {\r
+        super(pp);\r
+        this.type = pp[8];\r
+        this.feedFileID = pp[9];\r
+        this.remoteAddr = pp[10];\r
+        this.user = pp[11];\r
+        this.status = Integer.parseInt(pp[12]);\r
+\r
+        this.subID = Integer.parseInt(pp[13]);\r
+        this.fileID = pp[14];\r
+        this.result = Integer.parseInt(pp[15]);\r
+\r
+        this.attempts = Integer.parseInt(pp[16]);\r
+        this.reason = pp[17];\r
+\r
+        this.recordId = Long.parseLong(pp[18]);\r
+        this.clength2 = (pp.length == 21) ? Long.parseLong(pp[19]) : 0;\r
+        this.fileName = pp[20];\r
+    }\r
+\r
+    /**\r
+     * Get Log Records.\r
+     * @param os outputstream\r
+     * @param bs RLEBitSet object\r
+     * @throws IOException in case of I/O error\r
+     */\r
+    public static void printLogRecords(OutputStream os, RLEBitSet bs) throws IOException {\r
+        final String sql = "select * from LOG_RECORDS where RECORD_ID >= ? AND RECORD_ID <= ?";\r
+        DB db = new DB();\r
+        try (Connection conn = db.getConnection()) {\r
+            Iterator<Long[]> iter = bs.getRangeIterator();\r
+            try (PreparedStatement ps = conn.prepareStatement(sql)) {\r
+                while (iter.hasNext()) {\r
+                    Long[] nxt = iter.next();\r
+                    ps.setLong(1, nxt[0]);\r
+                    ps.setLong(2, nxt[1]);\r
+                    try (ResultSet rs = ps.executeQuery()) {\r
+                        while (rs.next()) {\r
+                            LogRecord lr = new LogRecord(rs);\r
+                            os.write(lr.toString().getBytes());\r
+                        }\r
+                        ps.clearParameters();\r
+                    }\r
+                }\r
+            }\r
+        } catch (SQLException e) {\r
+            intlogger.error("PROV0001 printLogRecords: " + e.getMessage(), e);\r
+        }\r
+    }\r
+\r
+    public long getRecordId() {\r
+        return recordId;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return\r
+                sdf.format(getEventTime()) + "|"\r
+                        + "LOG|"\r
+                        + getPublishId() + "|"\r
+                        + getFeedid() + "|"\r
+                        + getRequestUri() + "|"\r
+                        + getMethod() + "|"\r
+                        + getContentType() + "|"\r
+                        + getContentLength() + "|"\r
+                        + type + "|"\r
+                        + feedFileID + "|"\r
+                        + remoteAddr + "|"\r
+                        + user + "|"\r
+                        + status + "|"\r
+                        + subID + "|"\r
+                        + fileID + "|"\r
+                        + result + "|"\r
+                        + attempts + "|"\r
+                        + reason + "|"\r
+                        + recordId + "|"\r
+                        + clength2\r
+                        + "\n";\r
+    }\r
+\r
+    @Override\r
+    public void load(PreparedStatement ps) throws SQLException {\r
+        ps.setString(1, type);\r
+        super.load(ps);                // loads fields 2-8\r
+        if (type.equals("pub")) {\r
+            ps.setString(9, feedFileID);\r
+            ps.setString(10, remoteAddr);\r
+            ps.setString(11, user);\r
+            ps.setInt(12, status);\r
+            ps.setNull(13, Types.INTEGER);\r
+            ps.setNull(14, Types.VARCHAR);\r
+            ps.setNull(15, Types.INTEGER);\r
+            ps.setNull(16, Types.INTEGER);\r
+            ps.setNull(17, Types.VARCHAR);\r
+            ps.setLong(18, recordId);\r
+            ps.setNull(19, Types.BIGINT);\r
+            ps.setString(20, fileName);\r
+        } else if (type.equals("del")) {\r
+            ps.setNull(9, Types.VARCHAR);\r
+            ps.setNull(10, Types.VARCHAR);\r
+            ps.setString(11, user);\r
+            ps.setNull(12, Types.INTEGER);\r
+            ps.setInt(13, subID);\r
+            ps.setString(14, fileID);\r
+            ps.setInt(15, result);\r
+            ps.setNull(16, Types.INTEGER);\r
+            ps.setNull(17, Types.VARCHAR);\r
+            ps.setLong(18, recordId);\r
+            ps.setNull(19, Types.BIGINT);\r
+            ps.setString(20, fileName);\r
+        } else if (type.equals("exp")) {\r
+            ps.setNull(9, Types.VARCHAR);\r
+            ps.setNull(10, Types.VARCHAR);\r
+            ps.setNull(11, Types.VARCHAR);\r
+            ps.setNull(12, Types.INTEGER);\r
+            ps.setInt(13, subID);\r
+            ps.setString(14, fileID);\r
+            ps.setNull(15, Types.INTEGER);\r
+            ps.setInt(16, attempts);\r
+            ps.setString(17, reason);\r
+            ps.setLong(18, recordId);\r
+            ps.setNull(19, Types.BIGINT);\r
+            ps.setString(20, fileName);\r
+        } else if (type.equals("pbf")) {\r
+            ps.setString(9, feedFileID);\r
+            ps.setString(10, remoteAddr);\r
+            ps.setString(11, user);\r
+            ps.setNull(12, Types.INTEGER);\r
+            ps.setNull(13, Types.INTEGER);\r
+            ps.setNull(14, Types.VARCHAR);\r
+            ps.setNull(15, Types.INTEGER);\r
+            ps.setNull(16, Types.INTEGER);\r
+            ps.setNull(17, Types.VARCHAR);\r
+            ps.setLong(18, recordId);\r
+            ps.setLong(19, clength2);\r
+            ps.setString(20, fileName);\r
+        } else if (type.equals("dlx")) {\r
+            ps.setNull(9, Types.VARCHAR);\r
+            ps.setNull(10, Types.VARCHAR);\r
+            ps.setNull(11, Types.VARCHAR);\r
+            ps.setNull(12, Types.INTEGER);\r
+            ps.setInt(13, subID);\r
+            ps.setNull(14, Types.VARCHAR);\r
+            ps.setNull(15, Types.INTEGER);\r
+            ps.setNull(16, Types.INTEGER);\r
+            ps.setNull(17, Types.VARCHAR);\r
+            ps.setLong(18, recordId);\r
+            ps.setLong(19, clength2);\r
+            ps.setString(20, fileName);\r
+        }\r
+    }\r
+\r
+    public static void main(String[] args) throws IOException {\r
+        LogRecord.printLogRecords(System.out, new RLEBitSet(args[0]));\r
+    }\r
 }\r