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 --- graphs/java/singleton/.gitignore | 38 ++++++ graphs/java/singleton/pom.xml | 141 +++++++++++++++++++++ .../java/fr/epita/assistants/logger/Logger.java | 62 +++++++++ .../assistants/singleton/SingletonEnumLogger.java | 49 +++++++ .../singleton/StaticSingletonLogger.java | 54 ++++++++ 5 files changed, 344 insertions(+) create mode 100644 graphs/java/singleton/.gitignore create mode 100644 graphs/java/singleton/pom.xml 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') diff --git a/graphs/java/singleton/.gitignore b/graphs/java/singleton/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/graphs/java/singleton/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/graphs/java/singleton/pom.xml b/graphs/java/singleton/pom.xml new file mode 100644 index 0000000..6bb46cb --- /dev/null +++ b/graphs/java/singleton/pom.xml @@ -0,0 +1,141 @@ + + + 4.0.0 + fr.epita.assistants + singleton + 1.0 + + + 21 + 5.9.1 + 3.13.0 + 3.5.0 + 3.1.1 + 3.1.0 + 1.7.36 + 1.2.0 + + UTF-8 + + ${project.build.directory}/surefire-reports + + + + + org.junit.jupiter + junit-jupiter + ${versions.junit} + + + com.tngtech.archunit + archunit-junit5 + ${versions.archunit} + test + + + org.apache.maven.surefire + surefire-junit-platform + ${versions.maven-surefire-plugin} + + + org.apache.maven + maven-compat + 3.9.8 + + + org.apache.maven + maven-plugin-api + 3.9.8 + + + org.apache.maven + maven-project + 2.2.1 + + + org.apache.maven + maven-core + 3.8.1 + + + org.apache.maven + maven-monitor + 2.2.1 + + + org.codehaus.plexus + plexus-utils + 3.0.24 + + + org.apache.maven.shared + maven-filtering + 3.3.2 + + + org.codehaus.plexus + plexus-interpolation + 1.13 + + + org.apache.maven + maven-profile + 2.2.1 + + + org.apache.maven + maven-artifact-manager + 2.2.1 + + + org.apache.maven + maven-plugin-registry + 2.2.1 + + + org.apache.maven + maven-repository-metadata + 2.2.1 + + + classworlds + classworlds + 1.1 + + + org.junit.platform + junit-platform-commons + 1.9.3 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${versions.maven-compiler-plugin} + + ${versions.java} + ${versions.java} + + + + org.apache.maven.plugins + maven-install-plugin + ${versions.maven-install-plugin} + + + + org.apache.maven.plugins + maven-surefire-plugin + ${versions.maven-surefire-plugin} + + ${surefire.reportsDirectory} + + + + + 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