From 5be2fd27cc3b05dca35853a9cba619f59c58bcff Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Tue, 19 Feb 2008 23:13:07 +0000
Subject: [PATCH] refactor: - make the ISimpleLogger.LogLevel a top level class
 change: - add LogLevel.UNDEFINED and LogLevel.TRACE

SVN: 4329
---
 .../concurrent/ConcurrencyUtilities.java      |  8 +++---
 .../cisd/common/logging/ConsoleLogger.java    |  2 +-
 .../cisd/common/logging/ISimpleLogger.java    |  5 +---
 .../common/logging/Log4jSimpleLogger.java     | 25 +++++++++++--------
 .../cisd/common/logging/LogAnnotation.java    |  2 +-
 .../cisd/common/logging/LogLevel.java         | 11 ++++++++
 .../utilities/DirectoryScanningTimerTask.java |  3 ++-
 .../cisd/common/utilities/FileUtilities.java  | 11 ++++----
 8 files changed, 41 insertions(+), 26 deletions(-)
 create mode 100644 common/source/java/ch/systemsx/cisd/common/logging/LogLevel.java

diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java b/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java
index 54a39590060..82188978dee 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java
+++ b/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java
@@ -27,7 +27,7 @@ import java.util.concurrent.TimeoutException;
 
 import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.common.logging.ISimpleLogger;
-import ch.systemsx.cisd.common.logging.ISimpleLogger.Level;
+import ch.systemsx.cisd.common.logging.LogLevel;
 
 /**
  * Concurrency related utility methods.
@@ -91,7 +91,7 @@ public final class ConcurrencyUtilities
             if (loggerOrNull != null)
             {
                 loggerOrNull
-                        .log(Level.DEBUG, String.format("%s took longer than %f s, cancelled.",
+                        .log(LogLevel.DEBUG, String.format("%s took longer than %f s, cancelled.",
                                 operationNameOrNull == null ? "UNKNOWN OPERATION" : operationNameOrNull,
                                 timeoutMillis / 1000f));
             }
@@ -101,7 +101,7 @@ public final class ConcurrencyUtilities
             future.cancel(true);
             if (loggerOrNull != null)
             {
-                loggerOrNull.log(Level.DEBUG, String.format("%s got interrupted.",
+                loggerOrNull.log(LogLevel.DEBUG, String.format("%s got interrupted.",
                         operationNameOrNull == null ? "UNKNOWN OPERATION" : operationNameOrNull));
             }
             return null;
@@ -110,7 +110,7 @@ public final class ConcurrencyUtilities
             final Throwable cause = ex.getCause();
             if (loggerOrNull != null)
             {
-                loggerOrNull.log(Level.ERROR, String.format("%s has caused an exception: %s",
+                loggerOrNull.log(LogLevel.ERROR, String.format("%s has caused an exception: %s",
                         operationNameOrNull == null ? "UNKNOWN OPERATION" : operationNameOrNull, cause.getClass()
                                 .getSimpleName(), cause.getMessage() != null ? cause.getMessage() : "<no message>"));
             }
diff --git a/common/source/java/ch/systemsx/cisd/common/logging/ConsoleLogger.java b/common/source/java/ch/systemsx/cisd/common/logging/ConsoleLogger.java
index 422e78c7b51..15705b96b78 100644
--- a/common/source/java/ch/systemsx/cisd/common/logging/ConsoleLogger.java
+++ b/common/source/java/ch/systemsx/cisd/common/logging/ConsoleLogger.java
@@ -24,7 +24,7 @@ package ch.systemsx.cisd.common.logging;
 public class ConsoleLogger implements ISimpleLogger
 {
 
-    public void log(Level level, String message)
+    public void log(LogLevel level, String message)
     {
         System.out.println(level.toString() + ": " + message);
     }
diff --git a/common/source/java/ch/systemsx/cisd/common/logging/ISimpleLogger.java b/common/source/java/ch/systemsx/cisd/common/logging/ISimpleLogger.java
index dc673bd1b80..800e1977810 100644
--- a/common/source/java/ch/systemsx/cisd/common/logging/ISimpleLogger.java
+++ b/common/source/java/ch/systemsx/cisd/common/logging/ISimpleLogger.java
@@ -24,10 +24,7 @@ package ch.systemsx.cisd.common.logging;
 public interface ISimpleLogger
 {
 
-    /** A simple form of log levels. */
-    public enum Level { ERROR, WARN, INFO, DEBUG }
-    
     /** Log <var>message</var> at log <var>level</var> out to some log file or display. */
-    public void log(Level level, String message);
+    public void log(LogLevel level, String message);
     
 }
diff --git a/common/source/java/ch/systemsx/cisd/common/logging/Log4jSimpleLogger.java b/common/source/java/ch/systemsx/cisd/common/logging/Log4jSimpleLogger.java
index 591d2d69e4f..557cc23cb7b 100644
--- a/common/source/java/ch/systemsx/cisd/common/logging/Log4jSimpleLogger.java
+++ b/common/source/java/ch/systemsx/cisd/common/logging/Log4jSimpleLogger.java
@@ -16,6 +16,7 @@
 
 package ch.systemsx.cisd.common.logging;
 
+import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.log4j.Priority;
 
@@ -30,20 +31,24 @@ public class Log4jSimpleLogger implements ISimpleLogger
 
     private final Logger log4jLogger;
 
-    private static final Priority toLog4jPriority(Level level)
+    static final Level toLog4jPriority(LogLevel level)
     {
         switch (level)
         {
-            case ERROR:
-                return org.apache.log4j.Level.ERROR;
-            case WARN:
-                return org.apache.log4j.Level.WARN;
-            case INFO:
-                return org.apache.log4j.Level.INFO;
+            case OFF:
+                return org.apache.log4j.Level.OFF;
+            case TRACE:
+                return org.apache.log4j.Level.TRACE;
             case DEBUG:
                 return org.apache.log4j.Level.DEBUG;
+            case INFO:
+                return org.apache.log4j.Level.INFO;
+            case WARN:
+                return org.apache.log4j.Level.WARN;
+            case ERROR:
+                return org.apache.log4j.Level.ERROR;
             default:
-                throw new IllegalArgumentException("Unknown log level " + level);
+                throw new IllegalArgumentException("Illegal log level " + level);
         }
     }
 
@@ -52,7 +57,7 @@ public class Log4jSimpleLogger implements ISimpleLogger
      * 
      * @param log4jLogger The log4j logger to use.
      * @param log4jOverridePriorityOrNull If not <code>null</code>, use this log level instead of the one provided to
-     *            the {@link ISimpleLogger#log(ch.systemsx.cisd.common.logging.ISimpleLogger.Level, String)}.
+     *            the {@link ISimpleLogger#log(ch.systemsx.cisd.common.logging.LogLevel, String)}.
      */
     public Log4jSimpleLogger(Logger log4jLogger, Priority log4jOverridePriorityOrNull)
     {
@@ -70,7 +75,7 @@ public class Log4jSimpleLogger implements ISimpleLogger
         this(log4jLogger, null);
     }
 
-    public void log(Level level, String message)
+    public void log(LogLevel level, String message)
     {
         if (log4jOverridePriorityOrNull != null)
         {
diff --git a/common/source/java/ch/systemsx/cisd/common/logging/LogAnnotation.java b/common/source/java/ch/systemsx/cisd/common/logging/LogAnnotation.java
index 881eec39a0d..4e3b46f6c9d 100644
--- a/common/source/java/ch/systemsx/cisd/common/logging/LogAnnotation.java
+++ b/common/source/java/ch/systemsx/cisd/common/logging/LogAnnotation.java
@@ -22,7 +22,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-
 /**
  * Log annotation for methods invoked by {@link LogInvocationHandler}.
  *
@@ -34,4 +33,5 @@ import java.lang.annotation.Target;
 public @interface LogAnnotation
 {
     public LogCategory logCategory() default LogCategory.ACCESS;
+    public LogLevel logLevel() default LogLevel.UNDEFINED;
 }
diff --git a/common/source/java/ch/systemsx/cisd/common/logging/LogLevel.java b/common/source/java/ch/systemsx/cisd/common/logging/LogLevel.java
new file mode 100644
index 00000000000..4062e4ddd25
--- /dev/null
+++ b/common/source/java/ch/systemsx/cisd/common/logging/LogLevel.java
@@ -0,0 +1,11 @@
+package ch.systemsx.cisd.common.logging;
+
+/** 
+ * A simple form of log levels.
+ * 
+ *  @author Bernd RInn
+ */
+public enum LogLevel
+{
+    UNDEFINED, OFF, TRACE, DEBUG, INFO, WARN, ERROR
+}
\ No newline at end of file
diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java b/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
index 214dc8a2f46..c58fa5b3989 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/DirectoryScanningTimerTask.java
@@ -27,6 +27,7 @@ import org.apache.log4j.Logger;
 import ch.systemsx.cisd.common.logging.ISimpleLogger;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.logging.LogLevel;
 
 /**
  * A {@link TimerTask} that scans a source directory for entries that are accepted by some {@link FileFilter} and
@@ -304,7 +305,7 @@ public final class DirectoryScanningTimerTask extends TimerTask
     {
         return new ISimpleLogger()
             {
-                public void log(ISimpleLogger.Level dummyLevel, String message)
+                public void log(LogLevel dummyLevel, String message)
                 {
                     if (category == LogCategory.NOTIFY)
                     {
diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/FileUtilities.java b/common/source/java/ch/systemsx/cisd/common/utilities/FileUtilities.java
index 42e1298841e..af65a6fe58d 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/FileUtilities.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/FileUtilities.java
@@ -46,6 +46,7 @@ import org.apache.commons.lang.StringUtils;
 import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.common.logging.ISimpleLogger;
+import ch.systemsx.cisd.common.logging.LogLevel;
 
 /**
  * Some useful utility methods for files and directories.
@@ -398,7 +399,7 @@ public final class FileUtilities
                 {
                     if (loggerOrNull != null)
                     {
-                        loggerOrNull.log(ISimpleLogger.Level.INFO, String.format("Deleting file '%s'", file.getPath()));
+                        loggerOrNull.log(LogLevel.INFO, String.format("Deleting file '%s'", file.getPath()));
                     }
                     file.delete();
                 }
@@ -406,7 +407,7 @@ public final class FileUtilities
         }
         if (loggerOrNull != null)
         {
-            loggerOrNull.log(ISimpleLogger.Level.INFO, String.format("Deleting directory '%s'", path.getPath()));
+            loggerOrNull.log(LogLevel.INFO, String.format("Deleting directory '%s'", path.getPath()));
         }
         return path.delete();
     }
@@ -780,18 +781,18 @@ public final class FileUtilities
         {
             if (directory.isFile())
             {
-                logger.log(ISimpleLogger.Level.ERROR, String.format(
+                logger.log(LogLevel.ERROR, String.format(
                         "Failed to get listing of directory '%s' (path is file instead of directory).", directory));
             } else
             {
-                logger.log(ISimpleLogger.Level.ERROR, String.format(
+                logger.log(LogLevel.ERROR, String.format(
                         "Failed to get listing of directory '%s' (path not found).", directory));
             }
         } else
         {
             StringWriter exStackWriter = new StringWriter();
             exOrNull.printStackTrace(new PrintWriter(exStackWriter));
-            logger.log(ISimpleLogger.Level.ERROR, String.format(
+            logger.log(LogLevel.ERROR, String.format(
                     "Failed to get listing of directory '%s'. Exception: %s", directory, exStackWriter.toString()));
         }
     }
-- 
GitLab