From c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:08:27 +0200 Subject: add: graphs et rushs --- .../java/fr/epita/assistants/logger/Logger.java | 62 ++++++++++++++++++++++ .../assistants/singleton/SingletonEnumLogger.java | 49 +++++++++++++++++ .../singleton/StaticSingletonLogger.java | 54 +++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 graphs/java/singleton/src/main/java/fr/epita/assistants/logger/Logger.java create mode 100644 graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/SingletonEnumLogger.java create mode 100644 graphs/java/singleton/src/main/java/fr/epita/assistants/singleton/StaticSingletonLogger.java (limited to 'graphs/java/singleton/src/main') 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; + } +} -- cgit v1.2.3