diff options
Diffstat (limited to 'graphs/java/singleton/src/main')
3 files changed, 165 insertions, 0 deletions
diff --git a/graphs/java/singleton/src/main/java/fr/epita/assistants/logger/Logger.java b/graphs/java/singleton/src/main/java/fr/epita/assistants/logger/Logger.java new file mode 100644 index 0000000..4cc59f8 --- /dev/null +++ b/graphs/java/singleton/src/main/java/fr/epita/assistants/logger/Logger.java @@ -0,0 +1,62 @@ +package fr.epita.assistants.logger; + +/** + * A standard logger interface + */ +public interface Logger { + /** + * The Level enum, representing the gravity of a log message. + */ + enum Level { + INFO, + WARN, + ERROR + } + + /** + * Formats a message and returns it as a string + * @param level The gravity level of the logged message. + * @param message The logged message. + * @return + */ + static String getFormattedLog(final Level level, final String message) { + return '[' + + level.toString() + + "] " + + message; + } + + /** + * Outputs the logged message with the format '[LEVEL] Message' to stderr. + * + * @param level The gravity level of the logged message. + * @param message The logged message. + */ + void log(final Level level, final String message); + + /** + * Getter for infoCounter. + * + * @return infoCounter. + */ + int getInfoCounter(); + + /** + * Getter for warnCounter. + * + * @return warnCounter. + */ + int getWarnCounter(); + + /** + * Getter for errorCounter. + * + * @return errorCounter. + */ + int getErrorCounter(); + + /** + * Resets the counters. + */ + void reset(); +} diff --git a/graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/SingletonEnumLogger.java b/graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/SingletonEnumLogger.java new file mode 100644 index 0000000..4fb969e --- /dev/null +++ b/graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/SingletonEnumLogger.java @@ -0,0 +1,49 @@ +package fr.epita.assistants.singleton; + +import fr.epita.assistants.logger.Logger; + +public enum SingletonEnumLogger implements Logger { + INSTANCE; + int infoCounter; + int errorCounter; + int warnCounter; + + @Override + public void log(Level level, String message) { + switch (level) + { + case INFO: + infoCounter++; + break; + case WARN: + warnCounter++; + break; + case ERROR: + errorCounter++; + break; + } + System.err.println(Logger.getFormattedLog(level, message)); + } + + @Override + public int getInfoCounter() { + return infoCounter; + } + + @Override + public int getWarnCounter() { + return warnCounter; + } + + @Override + public int getErrorCounter() { + return errorCounter; + } + + @Override + public void reset() { + infoCounter = 0; + warnCounter = 0; + errorCounter = 0; + } +} diff --git a/graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/StaticSingletonLogger.java b/graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/StaticSingletonLogger.java new file mode 100644 index 0000000..51d1801 --- /dev/null +++ b/graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/StaticSingletonLogger.java @@ -0,0 +1,54 @@ +package fr.epita.assistants.singleton; + +import fr.epita.assistants.logger.Logger; + +public class StaticSingletonLogger implements Logger { + int infoCounter; + int errorCounter; + int warnCounter; + private StaticSingletonLogger() { + infoCounter = 0; + errorCounter = 0; + warnCounter = 0; + } + + private static class InstanceHolder { + private static final StaticSingletonLogger _INSTANCE = new StaticSingletonLogger(); + } + + public static StaticSingletonLogger getInstance() { + return InstanceHolder._INSTANCE; + } + @Override + public void log(Level level, String message) { + switch (level) + { + case INFO -> infoCounter++; + case WARN -> warnCounter++; + case ERROR -> errorCounter++; + } + System.err.println(Logger.getFormattedLog(level, message)); + } + + @Override + public int getInfoCounter() { + return infoCounter; + } + + @Override + public int getWarnCounter() { + return warnCounter; + } + + @Override + public int getErrorCounter() { + return errorCounter; + } + + @Override + public void reset() { + infoCounter = 0; + warnCounter = 0; + errorCounter = 0; + } +} |
