commit e7f1b4dd5eebd8a7a7b8502be9fea81f2da32d20 Author: Tulis <79586741+Tulis12@users.noreply.github.com> Date: Thu Jul 24 16:51:52 2025 +0200 Initialize repository 🚀 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/.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/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..7bc07ec --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Environment-dependent path to Maven home directory +/mavenHomeManager.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a28d378 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c42e5cc --- /dev/null +++ b/pom.xml @@ -0,0 +1,43 @@ + + + 4.0.0 + + dev.tulis + TuliAutoInitializer + 1.0-SNAPSHOT + + + 21 + 21 + UTF-8 + + + + + gitea + https://git.tulisiowice.top/api/packages/Tulis/maven + + + + + + gitea + https://git.tulisiowice.top/api/packages/Tulis/maven + + + gitea + https://git.tulisiowice.top/api/packages/Tulis/maven + + + + + + org.reflections + reflections + 0.10.2 + + + + \ No newline at end of file diff --git a/src/main/java/dev/tulis/autoinitializer/Annotations/GenericInitializer.java b/src/main/java/dev/tulis/autoinitializer/Annotations/GenericInitializer.java new file mode 100644 index 0000000..0ffa563 --- /dev/null +++ b/src/main/java/dev/tulis/autoinitializer/Annotations/GenericInitializer.java @@ -0,0 +1,11 @@ +package dev.tulis.autoinitializer.Annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface GenericInitializer { +} \ No newline at end of file diff --git a/src/main/java/dev/tulis/autoinitializer/Annotations/InitializeCommand.java b/src/main/java/dev/tulis/autoinitializer/Annotations/InitializeCommand.java new file mode 100644 index 0000000..c4f8c14 --- /dev/null +++ b/src/main/java/dev/tulis/autoinitializer/Annotations/InitializeCommand.java @@ -0,0 +1,12 @@ +package dev.tulis.autoinitializer.Annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface InitializeCommand { + String commandName(); +} \ No newline at end of file diff --git a/src/main/java/dev/tulis/autoinitializer/AutomaticInitializer.java b/src/main/java/dev/tulis/autoinitializer/AutomaticInitializer.java new file mode 100644 index 0000000..c473017 --- /dev/null +++ b/src/main/java/dev/tulis/autoinitializer/AutomaticInitializer.java @@ -0,0 +1,73 @@ +package dev.tulis.autoinitializer; + +import dev.tulis.autoinitializer.Annotations.GenericInitializer; +import dev.tulis.autoinitializer.Annotations.InitializeCommand; +import org.reflections.Reflections; + +import java.lang.reflect.Constructor; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class AutomaticInitializer { + String packageName; + Class mainClass; + Object mainClassObject; + private final Logger logger = Logger.getLogger("dev.tulis.autoinitializer"); + private boolean loggerEnabled = true; + + public AutomaticInitializer(String packageName, Class mainClass, Object mainClassObject) { + this.packageName = packageName; + this.mainClass = mainClass; + this.mainClassObject = mainClassObject; + + Logger.getLogger("org.reflections").setLevel(Level.OFF); + } + + private T castObject(Object obj, Class clazz) { + return clazz.cast(obj); + } + + public void setLoggerEnabled(boolean enabled) { + loggerEnabled = enabled; + if(!enabled) logger.setLevel(Level.OFF); else logger.setLevel(Level.WARNING); + } + + public boolean isLoggerEnabled() { + return loggerEnabled; + } + + public void initializeCommands() { + Reflections reflections = new Reflections(packageName); + Set> autoInitClasses = reflections.getTypesAnnotatedWith(InitializeCommand.class); + + for (Class clazz : autoInitClasses) { + try { + Constructor ctor = clazz.getDeclaredConstructor(mainClass); + ctor.newInstance(castObject(mainClassObject, mainClass)); + + InitializeCommand annotation = clazz.getAnnotation(InitializeCommand.class); + + logger.info("Zainicjalizowano komendę: " + annotation.commandName()); + } catch (Exception e) { + logger.warning(e.getMessage()); + } + } + } + + public void initializeGenerics() { + Reflections reflections = new Reflections(packageName); + Set> autoInitClasses = reflections.getTypesAnnotatedWith(GenericInitializer.class); + + for (Class clazz : autoInitClasses) { + try { + Constructor ctor = clazz.getDeclaredConstructor(mainClass); + ctor.newInstance(castObject(mainClassObject, mainClass)); + + logger.info("Zainicjalizowano klasę ogólną: " + clazz.getSimpleName()); + } catch (Exception e) { + logger.warning(e.getMessage()); + } + } + } +} \ No newline at end of file