From e7f1b4dd5eebd8a7a7b8502be9fea81f2da32d20 Mon Sep 17 00:00:00 2001
From: Tulis <79586741+Tulis12@users.noreply.github.com>
Date: Thu, 24 Jul 2025 16:51:52 +0200
Subject: [PATCH] =?UTF-8?q?Initialize=20repository=20=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 38 ++++++++++
.idea/.gitignore | 10 +++
.idea/encodings.xml | 7 ++
.idea/misc.xml | 14 ++++
.idea/vcs.xml | 6 ++
pom.xml | 43 +++++++++++
.../Annotations/GenericInitializer.java | 11 +++
.../Annotations/InitializeCommand.java | 12 +++
.../autoinitializer/AutomaticInitializer.java | 73 +++++++++++++++++++
9 files changed, 214 insertions(+)
create mode 100644 .gitignore
create mode 100644 .idea/.gitignore
create mode 100644 .idea/encodings.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/vcs.xml
create mode 100644 pom.xml
create mode 100644 src/main/java/dev/tulis/autoinitializer/Annotations/GenericInitializer.java
create mode 100644 src/main/java/dev/tulis/autoinitializer/Annotations/InitializeCommand.java
create mode 100644 src/main/java/dev/tulis/autoinitializer/AutomaticInitializer.java
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