adding FILENAME value to LOG_RECORDS table.
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / utils / LogfileLoader.java
index ff7893d..ab1a3a7 100644 (file)
@@ -100,7 +100,7 @@ public class LogfileLoader extends Thread {
     /**\r
      * The PreparedStatement which is loaded by a <i>Loadable</i>.\r
      */\r
-    public static final String INSERT_SQL = "insert into LOG_RECORDS values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";\r
+    public static final String INSERT_SQL = "insert into LOG_RECORDS values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";\r
     /**\r
      * Each server can assign this many IDs\r
      */\r
@@ -188,6 +188,7 @@ public class LogfileLoader extends Thread {
                         try {\r
                             Thread.sleep(1000L);\r
                         } catch (InterruptedException e) {\r
+                            Thread.currentThread().interrupt();\r
                         }\r
                         idle = false;\r
                     } else {\r
@@ -213,7 +214,6 @@ public class LogfileLoader extends Thread {
                 }\r
             } catch (Exception e) {\r
                 logger.warn("PROV0020: Caught exception in LogfileLoader: " + e);\r
-                e.printStackTrace();\r
             }\r
         }\r
     }\r
@@ -254,27 +254,27 @@ public class LogfileLoader extends Thread {
             try {\r
                 // Limit to a million at a time to avoid typing up the DB for too long.\r
                 conn = db.getConnection();\r
-                PreparedStatement ps = conn.prepareStatement("DELETE from LOG_RECORDS where EVENT_TIME < ? limit 1000000");\r
-                ps.setLong(1, cutoff);\r
-                while (count > 0) {\r
-                    if (!ps.execute()) {\r
-                        int dcount = ps.getUpdateCount();\r
-                        count -= dcount;\r
-                        logger.debug("  " + dcount + " rows deleted.");\r
-                        did1 |= (dcount != 0);\r
-                        if (dcount == 0)\r
-                            count = 0;    // prevent inf. loops\r
-                    } else {\r
-                        count = 0;    // shouldn't happen!\r
+                try(PreparedStatement ps = conn.prepareStatement("DELETE from LOG_RECORDS where EVENT_TIME < ? limit 1000000")) {\r
+                    ps.setLong(1, cutoff);\r
+                    while (count > 0) {\r
+                        if (!ps.execute()) {\r
+                            int dcount = ps.getUpdateCount();\r
+                            count -= dcount;\r
+                            logger.debug("  " + dcount + " rows deleted.");\r
+                            did1 |= (dcount != 0);\r
+                            if (dcount == 0)\r
+                                count = 0;    // prevent inf. loops\r
+                        } else {\r
+                            count = 0;    // shouldn't happen!\r
+                        }\r
                     }\r
                 }\r
-                ps.close();\r
-                Statement stmt = conn.createStatement();\r
-                stmt.execute("OPTIMIZE TABLE LOG_RECORDS");\r
-                stmt.close();\r
+             try(Statement stmt = conn.createStatement()) {\r
+                 stmt.execute("OPTIMIZE TABLE LOG_RECORDS");\r
+             }\r
             } catch (SQLException e) {\r
                 System.err.println(e);\r
-                e.printStackTrace();\r
+                logger.error(e);\r
             } finally {\r
                 db.release(conn);\r
             }\r
@@ -287,16 +287,16 @@ public class LogfileLoader extends Thread {
         Connection conn = null;\r
         try {\r
             conn = db.getConnection();\r
-            Statement stmt = conn.createStatement();\r
-            ResultSet rs = stmt.executeQuery("SELECT COUNT(*) as COUNT from LOG_RECORDS");\r
-            if (rs.next()) {\r
-                count = rs.getLong("COUNT");\r
-            }\r
-            rs.close();\r
-            stmt.close();\r
-        } catch (SQLException e) {\r
+           try(Statement stmt = conn.createStatement()) {\r
+               try(ResultSet rs = stmt.executeQuery("SELECT COUNT(*) as COUNT from LOG_RECORDS")) {\r
+                   if (rs.next()) {\r
+                       count = rs.getLong("COUNT");\r
+                   }\r
+               }\r
+           }\r
+         } catch (SQLException e) {\r
             System.err.println(e);\r
-            e.printStackTrace();\r
+            logger.error(e);\r
         } finally {\r
             db.release(conn);\r
         }\r
@@ -309,19 +309,19 @@ public class LogfileLoader extends Thread {
         try {\r
             logger.debug("  LOG_RECORD table histogram...");\r
             conn = db.getConnection();\r
-            Statement stmt = conn.createStatement();\r
-            ResultSet rs = stmt.executeQuery("SELECT FLOOR(EVENT_TIME/86400000) AS DAY, COUNT(*) AS COUNT FROM LOG_RECORDS GROUP BY DAY");\r
-            while (rs.next()) {\r
-                long day = rs.getLong("DAY");\r
-                long cnt = rs.getLong("COUNT");\r
-                map.put(day, cnt);\r
-                logger.debug("  " + day + "  " + cnt);\r
+            try(Statement stmt = conn.createStatement()) {\r
+                try(ResultSet rs = stmt.executeQuery("SELECT FLOOR(EVENT_TIME/86400000) AS DAY, COUNT(*) AS COUNT FROM LOG_RECORDS GROUP BY DAY")) {\r
+                    while (rs.next()) {\r
+                        long day = rs.getLong("DAY");\r
+                        long cnt = rs.getLong("COUNT");\r
+                        map.put(day, cnt);\r
+                        logger.debug("  " + day + "  " + cnt);\r
+                    }\r
+                }\r
             }\r
-            rs.close();\r
-            stmt.close();\r
-        } catch (SQLException e) {\r
+           } catch (SQLException e) {\r
             System.err.println(e);\r
-            e.printStackTrace();\r
+            logger.error(e);\r
         } finally {\r
             db.release(conn);\r
         }\r
@@ -332,26 +332,25 @@ public class LogfileLoader extends Thread {
         Connection conn = null;\r
         try {\r
             conn = db.getConnection();\r
-            Statement stmt = conn.createStatement();\r
-            // Build a bitset of all records in the LOG_RECORDS table\r
-            // We need to run this SELECT in stages, because otherwise we run out of memory!\r
             RLEBitSet nbs = new RLEBitSet();\r
-            final long stepsize = 6000000L;\r
-            boolean go_again = true;\r
-            for (long i = 0; go_again; i += stepsize) {\r
-                String sql = String.format("select RECORD_ID from LOG_RECORDS LIMIT %d,%d", i, stepsize);\r
-                ResultSet rs = stmt.executeQuery(sql);\r
-                go_again = false;\r
-                while (rs.next()) {\r
-                    long n = rs.getLong("RECORD_ID");\r
-                    nbs.set(n);\r
-                    go_again = true;\r
+            try(Statement stmt = conn.createStatement()) {\r
+                // Build a bitset of all records in the LOG_RECORDS table\r
+                // We need to run this SELECT in stages, because otherwise we run out of memory!\r
+                final long stepsize = 6000000L;\r
+                boolean go_again = true;\r
+                for (long i = 0; go_again; i += stepsize) {\r
+                    String sql = String.format("select RECORD_ID from LOG_RECORDS LIMIT %d,%d", i, stepsize);\r
+                    try (ResultSet rs = stmt.executeQuery(sql)) {\r
+                        go_again = false;\r
+                        while (rs.next()) {\r
+                            long n = rs.getLong("RECORD_ID");\r
+                            nbs.set(n);\r
+                            go_again = true;\r
+                        }\r
+                    }\r
                 }\r
-                rs.close();\r
             }\r
-            stmt.close();\r
             seq_set = nbs;\r
-\r
             // Compare with the range for this server\r
             // Determine the next ID for this set of record IDs\r
             RLEBitSet tbs = (RLEBitSet) nbs.clone();\r
@@ -376,7 +375,7 @@ public class LogfileLoader extends Thread {
             logger.debug(String.format("initializeNextid, next ID is %d (%x)", nextid, nextid));\r
         } catch (SQLException e) {\r
             System.err.println(e);\r
-            e.printStackTrace();\r
+            logger.error(e);\r
         } finally {\r
             db.release(conn);\r
         }\r
@@ -391,49 +390,45 @@ public class LogfileLoader extends Thread {
             Reader r = f.getPath().endsWith(".gz")\r
                     ? new InputStreamReader(new GZIPInputStream(new FileInputStream(f)))\r
                     : new FileReader(f);\r
-            LineNumberReader in = new LineNumberReader(r);\r
-            String line;\r
-            while ((line = in.readLine()) != null) {\r
-                try {\r
-                    for (Loadable rec : buildRecords(line)) {\r
-                        rec.load(ps);\r
-                        if (rec instanceof LogRecord) {\r
-                            LogRecord lr = ((LogRecord) rec);\r
-                            if (!seq_set.get(lr.getRecordId())) {\r
+            try(LineNumberReader in = new LineNumberReader(r)) {\r
+                String line;\r
+                while ((line = in.readLine()) != null) {\r
+                    try {\r
+                        for (Loadable rec : buildRecords(line)) {\r
+                            rec.load(ps);\r
+                            if (rec instanceof LogRecord) {\r
+                                LogRecord lr = ((LogRecord) rec);\r
+                                if (!seq_set.get(lr.getRecordId())) {\r
+                                    ps.executeUpdate();\r
+                                    seq_set.set(lr.getRecordId());\r
+                                } else\r
+                                    logger.debug("Duplicate record ignored: " + lr.getRecordId());\r
+                            } else {\r
+                                if (++nextid > set_end)\r
+                                    nextid = set_start;\r
+                                ps.setLong(18, nextid);\r
                                 ps.executeUpdate();\r
-                                seq_set.set(lr.getRecordId());\r
-                            } else\r
-                                logger.debug("Duplicate record ignored: " + lr.getRecordId());\r
-                        } else {\r
-                            if (++nextid > set_end)\r
-                                nextid = set_start;\r
-                            ps.setLong(18, nextid);\r
-                            ps.executeUpdate();\r
-                            seq_set.set(nextid);\r
+                                seq_set.set(nextid);\r
+                            }\r
+                            ps.clearParameters();\r
+                            ok++;\r
                         }\r
-                        ps.clearParameters();\r
-                        ok++;\r
+                    } catch (SQLException e) {\r
+                        logger.warn("PROV8003 Invalid value in record: " + line);\r
+                        logger.debug(e);\r
+                    } catch (NumberFormatException e) {\r
+                        logger.warn("PROV8004 Invalid number in record: " + line);\r
+                        logger.debug(e);\r
+                    } catch (ParseException e) {\r
+                        logger.warn("PROV8005 Invalid date in record: " + line);\r
+                        logger.debug(e);\r
+                    } catch (Exception e) {\r
+                        logger.warn("PROV8006 Invalid pattern in record: " + line);\r
+                        logger.debug(e);\r
                     }\r
-                } catch (SQLException e) {\r
-                    logger.warn("PROV8003 Invalid value in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
-                } catch (NumberFormatException e) {\r
-                    logger.warn("PROV8004 Invalid number in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
-                } catch (ParseException e) {\r
-                    logger.warn("PROV8005 Invalid date in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
-                } catch (Exception e) {\r
-                    logger.warn("PROV8006 Invalid pattern in record: " + line);\r
-                    logger.debug(e);\r
-                    e.printStackTrace();\r
+                    total++;\r
                 }\r
-                total++;\r
             }\r
-            in.close();\r
             ps.close();\r
             db.release(conn);\r
             conn = null;\r