Remove major and minor code smells in dr-node
[dmaap/datarouter.git] / datarouter-node / src / main / java / org / onap / dmaap / datarouter / node / LogManager.java
index 6ffb760..3277408 100644 (file)
@@ -20,6 +20,7 @@
  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * *
  ******************************************************************************/
  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * *
  ******************************************************************************/
+
 package org.onap.dmaap.datarouter.node;
 
 import com.att.eelf.configuration.EELFLogger;
 package org.onap.dmaap.datarouter.node;
 
 import com.att.eelf.configuration.EELFLogger;
@@ -35,16 +36,18 @@ import java.util.Arrays;
 import java.util.TimerTask;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.TimerTask;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Cleanup of old log files.
 
 /**
  * Cleanup of old log files.
- * <p>
- * Periodically scan the log directory for log files that are older than the log file retention interval, and delete
+ *
+ * <p>Periodically scan the log directory for log files that are older than the log file retention interval, and delete
  * them.  In a future release, This class will also be responsible for uploading events logs to the log server to
  * support the log query APIs.
  */
 
 public class LogManager extends TimerTask {
  * them.  In a future release, This class will also be responsible for uploading events logs to the log server to
  * support the log query APIs.
  */
 
 public class LogManager extends TimerTask {
+
     private EELFLogger logger = EELFManager.getInstance().getLogger(LogManager.class);
     private NodeConfigManager config;
     private Matcher isnodelog;
     private EELFLogger logger = EELFManager.getInstance().getLogger(LogManager.class);
     private NodeConfigManager config;
     private Matcher isnodelog;
@@ -53,8 +56,55 @@ public class LogManager extends TimerTask {
     private String uploaddir;
     private String logdir;
 
     private String uploaddir;
     private String logdir;
 
+    /**
+     * Construct a log manager
+     *
+     * <p>The log manager will check for expired log files every 5 minutes at 20 seconds after the 5 minute boundary.
+     * (Actually, the interval is the event log rollover interval, which defaults to 5 minutes).
+     */
+    public LogManager(NodeConfigManager config) {
+        this.config = config;
+        try {
+            isnodelog = Pattern.compile("node\\.log\\.\\d{8}").matcher("");
+            iseventlog = Pattern.compile("events-\\d{12}\\.log").matcher("");
+        } catch (Exception e) {
+            logger.error("Exception", e);
+        }
+        logdir = config.getLogDir();
+        uploaddir = logdir + "/.spool";
+        (new File(uploaddir)).mkdirs();
+        long now = System.currentTimeMillis();
+        long intvl = StatusLog.parseInterval(config.getEventLogInterval(), 30000);
+        long when = now - now % intvl + intvl + 20000L;
+        config.getTimer().scheduleAtFixedRate(this, when - now, intvl);
+        worker = new Uploader();
+    }
+
+    /**
+     * Trigger check for expired log files and log files to upload.
+     */
+    public void run() {
+        worker.poke();
+    }
+
     private class Uploader extends Thread implements DeliveryQueueHelper {
     private class Uploader extends Thread implements DeliveryQueueHelper {
+
+        private static final String EXCEPTION = "Exception";
+        private static final String META = "/.meta";
         private EELFLogger logger = EELFManager.getInstance().getLogger(Uploader.class);
         private EELFLogger logger = EELFManager.getInstance().getLogger(Uploader.class);
+        private DeliveryQueue dq;
+
+        Uploader() {
+            dq = new DeliveryQueue(this,
+                    new DestInfoBuilder().setName("LogUpload").setSpool(uploaddir).setSubid(null).setLogdata(null)
+                            .setUrl(null).setAuthuser(config.getMyName()).setAuthentication(config.getMyAuth())
+                            .setMetaonly(false).setUse100(false).setPrivilegedSubscriber(false)
+                            .setFollowRedirects(false)
+                            .setDecompress(false).createDestInfo());
+            setDaemon(true);
+            setName("Log Uploader");
+            start();
+        }
 
         public long getInitFailureTimer() {
             return (10000L);
 
         public long getInitFailureTimer() {
             return (10000L);
@@ -89,6 +139,7 @@ public class LogManager extends TimerTask {
         }
 
         public void handleUnreachable(DestInfo destinationInfo) {
         }
 
         public void handleUnreachable(DestInfo destinationInfo) {
+            throw new UnsupportedOperationException();
         }
 
         public boolean handleRedirection(DestInfo destinationInfo, String location, String fileid) {
         }
 
         public boolean handleRedirection(DestInfo destinationInfo, String location, String fileid) {
@@ -103,24 +154,11 @@ public class LogManager extends TimerTask {
             return (null);
         }
 
             return (null);
         }
 
-        private DeliveryQueue dq;
-
-        public Uploader() {
-            dq = new DeliveryQueue(this,
-                new DestInfo.DestInfoBuilder().setName("LogUpload").setSpool(uploaddir).setSubid(null).setLogdata(null)
-                    .setUrl(null).setAuthuser(config.getMyName()).setAuthentication(config.getMyAuth())
-                    .setMetaonly(false).setUse100(false).setPrivilegedSubscriber(false).setFollowRedirects(false)
-                    .setDecompress(false).createDestInfo());
-            setDaemon(true);
-            setName("Log Uploader");
-            start();
-        }
-
         private synchronized void snooze() {
             try {
                 wait(10000);
             } catch (Exception e) {
         private synchronized void snooze() {
             try {
                 wait(10000);
             } catch (Exception e) {
-                logger.error("InterruptedException", e);
+                logger.error(EXCEPTION, e);
             }
         }
 
             }
         }
 
@@ -145,73 +183,48 @@ public class LogManager extends TimerTask {
             String curlog = StatusLog.getCurLogFile();
             curlog = curlog.substring(curlog.lastIndexOf('/') + 1);
             try {
             String curlog = StatusLog.getCurLogFile();
             curlog = curlog.substring(curlog.lastIndexOf('/') + 1);
             try {
-                Writer w = new FileWriter(uploaddir + "/.meta");
-                w.write("POST\tlogdata\nContent-Type\ttext/plain\n");
-                w.close();
+                Writer writer = new FileWriter(uploaddir + META);
+                writer.write("POST\tlogdata\nContent-Type\ttext/plain\n");
+                writer.close();
                 BufferedReader br = new BufferedReader(new FileReader(uploaddir + "/.lastqueued"));
                 lastqueued = br.readLine();
                 br.close();
             } catch (Exception e) {
                 BufferedReader br = new BufferedReader(new FileReader(uploaddir + "/.lastqueued"));
                 lastqueued = br.readLine();
                 br.close();
             } catch (Exception e) {
-                logger.error("Exception", e);
+                logger.error(EXCEPTION, e);
             }
             for (String fn : fns) {
                 if (!isnodelog.reset(fn).matches()) {
                     if (!iseventlog.reset(fn).matches()) {
                         continue;
                     }
             }
             for (String fn : fns) {
                 if (!isnodelog.reset(fn).matches()) {
                     if (!iseventlog.reset(fn).matches()) {
                         continue;
                     }
-                    if (lastqueued.compareTo(fn) < 0 && curlog.compareTo(fn) > 0) {
-                        lastqueued = fn;
-                        try {
-                            String pid = config.getPublishId();
-                            Files.createLink(Paths.get(uploaddir + "/" + pid), Paths.get(logdir + "/" + fn));
-                            Files.createLink(Paths.get(uploaddir + "/" + pid + ".M"), Paths.get(uploaddir + "/.meta"));
-                        } catch (Exception e) {
-                            logger.error("Exception", e);
-                        }
-                    }
+                    lastqueued = setLastQueued(lastqueued, curlog, fn);
                 }
                 }
-                File f = new File(dir, fn);
-                if (f.lastModified() < threshold) {
-                    f.delete();
+                File file = new File(dir, fn);
+                if (file.lastModified() < threshold) {
+                    file.delete();
                 }
             }
             try (Writer w = new FileWriter(uploaddir + "/.lastqueued")) {
                 }
             }
             try (Writer w = new FileWriter(uploaddir + "/.lastqueued")) {
-                (new File(uploaddir + "/.meta")).delete();
+                (new File(uploaddir + META)).delete();
                 w.write(lastqueued + "\n");
             } catch (Exception e) {
                 w.write(lastqueued + "\n");
             } catch (Exception e) {
-                logger.error("Exception", e);
+                logger.error(EXCEPTION, e);
             }
         }
             }
         }
-    }
 
 
-    /**
-     * Construct a log manager
-     * <p>
-     * The log manager will check for expired log files every 5 minutes at 20 seconds after the 5 minute boundary.
-     * (Actually, the interval is the event log rollover interval, which defaults to 5 minutes).
-     */
-    public LogManager(NodeConfigManager config) {
-        this.config = config;
-        try {
-            isnodelog = Pattern.compile("node\\.log\\.\\d{8}").matcher("");
-            iseventlog = Pattern.compile("events-\\d{12}\\.log").matcher("");
-        } catch (Exception e) {
-            logger.error("Exception", e);
+        @NotNull
+        private String setLastQueued(String lastqueued, String curlog, String fn) {
+            if (lastqueued.compareTo(fn) < 0 && curlog.compareTo(fn) > 0) {
+                lastqueued = fn;
+                try {
+                    String pid = config.getPublishId();
+                    Files.createLink(Paths.get(uploaddir + "/" + pid), Paths.get(logdir + "/" + fn));
+                    Files.createLink(Paths.get(uploaddir + "/" + pid + ".M"), Paths.get(uploaddir + META));
+                } catch (Exception e) {
+                    logger.error(EXCEPTION, e);
+                }
+            }
+            return lastqueued;
         }
         }
-        logdir = config.getLogDir();
-        uploaddir = logdir + "/.spool";
-        (new File(uploaddir)).mkdirs();
-        long now = System.currentTimeMillis();
-        long intvl = StatusLog.parseInterval(config.getEventLogInterval(), 30000);
-        long when = now - now % intvl + intvl + 20000L;
-        config.getTimer().scheduleAtFixedRate(this, when - now, intvl);
-        worker = new Uploader();
-    }
-
-    /**
-     * Trigger check for expired log files and log files to upload
-     */
-    public void run() {
-        worker.poke();
     }
 }
     }
 }