From 6bfdd48760dc0e2d9cf7973b74b77caaa0df5afc Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 01:08:52 +0200 Subject: [PATCH 01/42] Add: create MC_Support class for future functionality --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/hook/MC_Support.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 src/main/java/fr/sandro642/github/hook/MC_Support.java diff --git a/build.gradle.kts b/build.gradle.kts index e8e5db5..8b19dcd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.2" +version = "0.2.0-Alpha" // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/hook/MC_Support.java b/src/main/java/fr/sandro642/github/hook/MC_Support.java new file mode 100644 index 0000000..159b4a4 --- /dev/null +++ b/src/main/java/fr/sandro642/github/hook/MC_Support.java @@ -0,0 +1,4 @@ +package fr.sandro642.github.hook; + +public class MC_Support { +} From 6b22feb995590a6f496dc96c9d776706286709d6 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 11:13:37 +0200 Subject: [PATCH 02/42] Add: bump version to 0.1.3.0-Alpha in build.gradle.kts --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 8b19dcd..85789a7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.2.0-Alpha" +version = "0.1.3.0-Alpha" // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { From 2bdedabc41e066faa794eee506f85194424ac1cf Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 12:20:48 +0200 Subject: [PATCH 03/42] Add: implement MCSupport class for Minecraft project integration and update build.gradle.kts for new repositories --- .idea/misc.xml | 2 +- build.gradle.kts | 5 ++ readme.md | 6 ++ .../fr/sandro642/github/ConnectorAPI.java | 15 +++++ .../fr/sandro642/github/hook/MCSupport.java | 60 +++++++++++++++++++ .../fr/sandro642/github/hook/MC_Support.java | 4 -- .../fr/sandro642/github/jobs/JobGetInfos.java | 6 +- .../github/jobs/misc/ResourceType.java | 2 +- 8 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 src/main/java/fr/sandro642/github/hook/MCSupport.java delete mode 100644 src/main/java/fr/sandro642/github/hook/MC_Support.java diff --git a/.idea/misc.xml b/.idea/misc.xml index d031183..9f48f22 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 85789a7..cb306d8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,6 +17,9 @@ tasks.register("printVersion") { repositories { mavenCentral() + + maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") + maven("https://oss.sonatype.org/content/repositories/snapshots/") } dependencies { @@ -28,6 +31,8 @@ dependencies { implementation("org.openjfx:javafx-controls:21") implementation("org.openjfx:javafx-fxml:21") + + compileOnly("org.spigotmc:spigot-api:1.8-R0.1-SNAPSHOT") } javafx { diff --git a/readme.md b/readme.md index 2900ee7..e38832c 100644 --- a/readme.md +++ b/readme.md @@ -3,6 +3,12 @@ Bienvenue dans **ConnectorAPI** : la passerelle universelle pour connecter, automatiser et orchestrer vos flux de données ! Et si vous pensiez que les API étaient compliquées, détrompez-vous ! Avec ConnectorAPI, c’est comme jouer avec des Lego : simple, intuitif et puissant. +--- +```java +Support Lib 23 | Future 24... + +Support Minecraft 1.8.0 +``` --- ## 🌟 Pourquoi ConnectorAPI ? diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index fc59de8..6982547 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -1,5 +1,6 @@ package fr.sandro642.github; +import fr.sandro642.github.hook.MCSupport; import fr.sandro642.github.jobs.JobGetInfos; import fr.sandro642.github.jobs.misc.MethodType; import fr.sandro642.github.jobs.misc.ResourceType; @@ -7,6 +8,7 @@ import fr.sandro642.github.utils.Logger; import fr.sandro642.github.utils.StoreAndRetrieve; import fr.sandro642.github.utils.YamlUtils; +import org.jetbrains.annotations.Nullable; /** * ConnectorAPI est une librairie Java permettant de créer un lien de communication entre son projet Java et une API Rest Fastify. @@ -82,4 +84,17 @@ public static YamlUtils YamlUtils() { } return yamlUtils; } + + /** + * Retourne une instance de MCSupport si le projet est un projet Minecraft + * @return MCSupport ou null si ce n'est pas un projet Minecraft + */ + public static @Nullable MCSupport MCSupport() { + if (MCSupport().isMCProject()) { + return new MCSupport(); + } else { + logger.ERROR("MCSupport ne peut être utilisé que dans un projet Minecraft."); + return null; + } + } } diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java new file mode 100644 index 0000000..fe4c882 --- /dev/null +++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java @@ -0,0 +1,60 @@ +package fr.sandro642.github.hook; + +import org.bukkit.plugin.Plugin; + +/** + * MCSupport est une classe utilitaire pour gérer les hooks liés à Minecraft. + * Elle permet de vérifier si le projet est un projet Minecraft et de gérer les ressources associées. + * @author Sandro642 + * @version 1.0 + */ + +public class MCSupport { + + /** + * Instance unique du plugin Minecraft. + * Utilisée pour stocker la variable du plugin Minecraft. + */ + private Plugin pluginSingleton; + + /** + * Méthode permettant de vérifier si le projet est un projet Minecraft. + * Elle vérifie si le chemin du fichier de configuration contient le chemin des ressources Minecraft. + * @return true si c'est un projet Minecraft, false sinon. + */ + public boolean isMCProject() { + String fileLocation = (String) fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().store.get(fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY); + return fileLocation != null && fileLocation.contains(fr.sandro642.github.jobs.misc.ResourceType.MC_RESOURCES.getPath()); + } + + /** + * Méthode permettant de définir la variable du plugin Minecraft. + * Elle doit être appelée dans un projet Minecraft pour initialiser le plugin. + * @param plugin Le plugin Minecraft à définir. + * @return L'instance du plugin définie. + */ + private Plugin setPluginVariable(Plugin plugin) { + if (isMCProject()) { + return pluginSingleton = plugin; + } else { + throw new IllegalStateException("This method can only be called in a Minecraft project."); + } + } + + /** + * Méthode permettant d'obtenir le chemin du path du plugin Minecraft. + * Elle doit être appelée dans un projet Minecraft pour récupérer le chemin du dossier de données du plugin. + * @return Le chemin du dossier de données du plugin. + */ + private String getPluginPath() { + if (isMCProject()) { + if (pluginSingleton == null) { + throw new IllegalStateException("Plugin variable is not set. Please call setPluginVariable first."); + } + return pluginSingleton.getDataFolder().getAbsolutePath(); + } else { + throw new IllegalStateException("This method can only be called in a Minecraft project."); + } + } + +} diff --git a/src/main/java/fr/sandro642/github/hook/MC_Support.java b/src/main/java/fr/sandro642/github/hook/MC_Support.java deleted file mode 100644 index 159b4a4..0000000 --- a/src/main/java/fr/sandro642/github/hook/MC_Support.java +++ /dev/null @@ -1,4 +0,0 @@ -package fr.sandro642.github.hook; - -public class MC_Support { -} diff --git a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java index f9d430c..7d10369 100644 --- a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java +++ b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java @@ -25,8 +25,8 @@ public class JobGetInfos { * ApiClient est utilisé pour effectuer les requêtes HTTP vers l'API. * YamlUtils est utilisé pour lire les routes depuis le fichier YAML. */ - private ApiClient apiClient; - private YamlUtils yamlUtils; + private final ApiClient apiClient; + private final YamlUtils yamlUtils; /** * Constructeur de JobGetInfos qui initialise ApiClient et YamlUtils. @@ -135,7 +135,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str String paramKey = "{" + entry.getKey() + "}"; String paramValue = entry.getValue().toString(); - // Remplace tous les occurrences du paramètre dans la route + // Remplace toutes les occurrences du paramètre dans la route fullRoute = fullRoute.replace(paramKey, paramValue); } } diff --git a/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java b/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java index 40bc106..58a1df1 100644 --- a/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java +++ b/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java @@ -14,7 +14,7 @@ public enum ResourceType { */ MAIN_RESOURCES("src/main/resources"), TEST_RESOURCES("src/test/resources"), - MC_RESOURCES("Arrive prochainement"); + MC_RESOURCES("mc_resources"); /** From 50c88468e5cf3c929914d4a58958e076316fe304 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 12:24:00 +0200 Subject: [PATCH 04/42] Refactor: remove unused imports and simplify MCSupport method in ConnectorAPI --- src/main/java/fr/sandro642/github/ConnectorAPI.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 6982547..df26312 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -2,13 +2,10 @@ import fr.sandro642.github.hook.MCSupport; import fr.sandro642.github.jobs.JobGetInfos; -import fr.sandro642.github.jobs.misc.MethodType; import fr.sandro642.github.jobs.misc.ResourceType; -import fr.sandro642.github.jobs.misc.VersionType; import fr.sandro642.github.utils.Logger; import fr.sandro642.github.utils.StoreAndRetrieve; import fr.sandro642.github.utils.YamlUtils; -import org.jetbrains.annotations.Nullable; /** * ConnectorAPI est une librairie Java permettant de créer un lien de communication entre son projet Java et une API Rest Fastify. @@ -89,7 +86,7 @@ public static YamlUtils YamlUtils() { * Retourne une instance de MCSupport si le projet est un projet Minecraft * @return MCSupport ou null si ce n'est pas un projet Minecraft */ - public static @Nullable MCSupport MCSupport() { + public static MCSupport MCSupport() { if (MCSupport().isMCProject()) { return new MCSupport(); } else { From a19ce71b716936b015989d38e5851b249bd170ad Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 12:28:00 +0200 Subject: [PATCH 05/42] Bump version to 0.1.3.1-Alpha in build.gradle.kts --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index cb306d8..b5cc572 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.0-Alpha" +version = "0.1.3.1-Alpha" // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { From e430fa079e6bed0a31864d955504ae7852144035 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 12:33:09 +0200 Subject: [PATCH 06/42] Change: update access modifiers for setPluginVariable and getPluginPath methods in MCSupport class --- src/main/java/fr/sandro642/github/hook/MCSupport.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java index fe4c882..9913789 100644 --- a/src/main/java/fr/sandro642/github/hook/MCSupport.java +++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java @@ -33,7 +33,7 @@ public boolean isMCProject() { * @param plugin Le plugin Minecraft à définir. * @return L'instance du plugin définie. */ - private Plugin setPluginVariable(Plugin plugin) { + public Plugin setPluginVariable(Plugin plugin) { if (isMCProject()) { return pluginSingleton = plugin; } else { @@ -46,7 +46,7 @@ private Plugin setPluginVariable(Plugin plugin) { * Elle doit être appelée dans un projet Minecraft pour récupérer le chemin du dossier de données du plugin. * @return Le chemin du dossier de données du plugin. */ - private String getPluginPath() { + public String getPluginPath() { if (isMCProject()) { if (pluginSingleton == null) { throw new IllegalStateException("Plugin variable is not set. Please call setPluginVariable first."); From 3ebd055e54dcd75d6d94c71382a9925340a512f0 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 12:41:09 +0200 Subject: [PATCH 07/42] Update GitHub Actions workflow to handle tag overwrites and improve version extraction --- .github/workflows/work-jar.yml | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/work-jar.yml b/.github/workflows/work-jar.yml index 6fb7456..84e5f20 100644 --- a/.github/workflows/work-jar.yml +++ b/.github/workflows/work-jar.yml @@ -4,12 +4,10 @@ on: branches: - main - feature/hook - permissions: contents: write pages: write id-token: write - jobs: publish-jar: runs-on: ubuntu-latest @@ -19,41 +17,35 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} fetch-depth: 0 - - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - - name: Grant execute permission for gradlew run: chmod +x gradlew - - name: Extract version from build.gradle.kts id: extract_version run: | VERSION=$(./gradlew -q printVersion) echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Extracted version: $VERSION" - - name: Check if tag already exists id: check_tag run: | if git tag -l "${{ steps.extract_version.outputs.version }}" | grep -q "${{ steps.extract_version.outputs.version }}"; then echo "tag_exists=true" >> $GITHUB_OUTPUT - echo "Tag ${{ steps.extract_version.outputs.version }} already exists" + echo "Tag ${{ steps.extract_version.outputs.version }} already exists and will be overwritten" else echo "tag_exists=false" >> $GITHUB_OUTPUT echo "Tag ${{ steps.extract_version.outputs.version }} does not exist" fi - - name: Publish Maven artifacts to local repo run: ./gradlew publish env: GROUP_ID: fr.sandro642.github ARTIFACT_ID: ConnectorAPI VERSION: ${{ steps.extract_version.outputs.version }} - - name: Deploy to GitHub Pages uses: JamesIves/github-pages-deploy-action@v4 with: @@ -62,9 +54,7 @@ jobs: branch: main folder: build/repo target-folder: connectorapi/jar - - - name: Create and push Git tag - if: steps.check_tag.outputs.tag_exists == 'false' + - name: Create and push Git tag (with override) run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action" @@ -72,8 +62,14 @@ jobs: # S'assurer qu'on pousse vers le bon repository git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git - # Créer et pousser le tag + # Supprimer le tag localement s'il existe + git tag -d "${{ steps.extract_version.outputs.version }}" || true + + # Supprimer le tag distant s'il existe + git push origin --delete "${{ steps.extract_version.outputs.version }}" || true + + # Créer et pousser le nouveau tag git tag -a "${{ steps.extract_version.outputs.version }}" -m "Release version ${{ steps.extract_version.outputs.version }}" git push origin "${{ steps.extract_version.outputs.version }}" env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 8cbc9db648be5da74fc24449681bc0becda3e933 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 17:57:29 +0200 Subject: [PATCH 08/42] Refactor: simplify MCSupport instantiation and add singleton pattern --- .../java/fr/sandro642/github/ConnectorAPI.java | 7 +------ .../java/fr/sandro642/github/hook/MCSupport.java | 15 +++++++++++++++ src/test/java/fr/sandro642/github/test/Main.java | 6 ------ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index df26312..92ec96a 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -87,11 +87,6 @@ public static YamlUtils YamlUtils() { * @return MCSupport ou null si ce n'est pas un projet Minecraft */ public static MCSupport MCSupport() { - if (MCSupport().isMCProject()) { - return new MCSupport(); - } else { - logger.ERROR("MCSupport ne peut être utilisé que dans un projet Minecraft."); - return null; - } + return new MCSupport(); } } diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java index 9913789..07307cc 100644 --- a/src/main/java/fr/sandro642/github/hook/MCSupport.java +++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java @@ -11,6 +11,11 @@ public class MCSupport { + /** + * Création de l'instance unique de MCSupport. + */ + private static MCSupport instance; + /** * Instance unique du plugin Minecraft. * Utilisée pour stocker la variable du plugin Minecraft. @@ -57,4 +62,14 @@ public String getPluginPath() { } } + /** + * Méthode permettant d'obtenir l'instance unique de MCSupport. + * @return L'instance unique de MCSupport. + */ + public static MCSupport getInstance() { + if (instance == null) { + instance = new MCSupport(); + } + return instance; + } } diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index 70ad428..18206ae 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -62,12 +62,6 @@ public static void main(String[] args) { @Test public void testHorsData() { ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); - - ApiResponse response = ConnectorAPI.JobGetInfos() - .getRoutes(VersionType.V1_BRANCH, MethodType.GET, "example1") - .getResponse(); - - System.out.println(response.display()); } } From 088086f2225e8b635456bcd5e9d827850b9ba73a Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 18:05:03 +0200 Subject: [PATCH 09/42] Update GitHub Actions workflow to deploy ConnectorAPI artifacts and clean existing version folder --- .github/workflows/work-jar.yml | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/.github/workflows/work-jar.yml b/.github/workflows/work-jar.yml index 84e5f20..bdb8441 100644 --- a/.github/workflows/work-jar.yml +++ b/.github/workflows/work-jar.yml @@ -46,14 +46,34 @@ jobs: GROUP_ID: fr.sandro642.github ARTIFACT_ID: ConnectorAPI VERSION: ${{ steps.extract_version.outputs.version }} - - name: Deploy to GitHub Pages - uses: JamesIves/github-pages-deploy-action@v4 + - name: Checkout target repository + uses: actions/checkout@v4 with: + repository: sandro642/sandro642.github.io token: ${{ secrets.GH_TOKEN }} - repository-name: sandro642/sandro642.github.io - branch: main - folder: build/repo - target-folder: connectorapi/jar + path: target-repo + - name: Clean existing version folder + run: | + if [ -d "target-repo/connectorapi/jar" ]; then + echo "Cleaning existing connectorapi/jar folder..." + rm -rf target-repo/connectorapi/jar + fi + mkdir -p target-repo/connectorapi/jar + - name: Copy new artifacts + run: | + cp -r build/repo/* target-repo/connectorapi/jar/ + - name: Deploy to GitHub Pages + run: | + cd target-repo + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add . + if git diff --staged --quiet; then + echo "No changes to commit" + else + git commit -m "Update ConnectorAPI artifacts for version ${{ steps.extract_version.outputs.version }}" + git push + fi - name: Create and push Git tag (with override) run: | git config --local user.email "action@github.com" From f695a8c327edb6aeb6f14245a06581b6f5f476bf Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 18:12:26 +0200 Subject: [PATCH 10/42] Bump version to 0.1.3.2-Alpha in build.gradle.kts --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index b5cc572..07dc618 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.1-Alpha" +version = "0.1.3.2-Alpha" // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { From 044d8c9fc65eee88f8a78d79c58030cdc7386f49 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 18:16:08 +0200 Subject: [PATCH 11/42] Update README: refine Minecraft version support notation --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index e38832c..2af6cbe 100644 --- a/readme.md +++ b/readme.md @@ -5,9 +5,9 @@ Et si vous pensiez que les API étaient compliquées, détrompez-vous ! Avec Con --- ```java -Support Lib 23 | Future 24... +Support Lib 23 | Future 24 -Support Minecraft 1.8.0 +Support Minecraft 1.8 ``` --- From 0e1d16720f44749bb478610a868e4ab7fadcb3a6 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 18:45:50 +0200 Subject: [PATCH 12/42] Refactor: implement singleton pattern for MCSupport and enhance plugin management methods --- .../fr/sandro642/github/ConnectorAPI.java | 2 +- .../github/example/ExampleUsage.java | 4 +- .../fr/sandro642/github/hook/MCSupport.java | 78 ++++++++++++++++--- .../java/fr/sandro642/github/test/Main.java | 5 -- 4 files changed, 70 insertions(+), 19 deletions(-) diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 92ec96a..7642e28 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -87,6 +87,6 @@ public static YamlUtils YamlUtils() { * @return MCSupport ou null si ce n'est pas un projet Minecraft */ public static MCSupport MCSupport() { - return new MCSupport(); + return MCSupport.getInstance(); } } diff --git a/src/main/java/fr/sandro642/github/example/ExampleUsage.java b/src/main/java/fr/sandro642/github/example/ExampleUsage.java index 66716fa..fa52f58 100644 --- a/src/main/java/fr/sandro642/github/example/ExampleUsage.java +++ b/src/main/java/fr/sandro642/github/example/ExampleUsage.java @@ -6,7 +6,9 @@ import fr.sandro642.github.jobs.misc.ResourceType; import fr.sandro642.github.jobs.misc.VersionType; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -132,7 +134,7 @@ public static void main(String[] args) { complexBody.put("nestedObject", subObject); // Array - java.util.List arrayValue = java.util.Arrays.asList("item1", "item2", "item3"); + List arrayValue = Arrays.asList("item1", "item2", "item3"); complexBody.put("arrayValue", arrayValue); ApiResponse complexResponse = ConnectorAPI.JobGetInfos() diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java index 07307cc..2e16a9d 100644 --- a/src/main/java/fr/sandro642/github/hook/MCSupport.java +++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java @@ -8,7 +8,6 @@ * @author Sandro642 * @version 1.0 */ - public class MCSupport { /** @@ -22,25 +21,46 @@ public class MCSupport { */ private Plugin pluginSingleton; + /** + * Constructeur privé pour empêcher l'instanciation directe. + */ + private MCSupport() { + // Constructeur privé pour le pattern Singleton + } + /** * Méthode permettant de vérifier si le projet est un projet Minecraft. * Elle vérifie si le chemin du fichier de configuration contient le chemin des ressources Minecraft. + * * @return true si c'est un projet Minecraft, false sinon. */ public boolean isMCProject() { - String fileLocation = (String) fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().store.get(fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY); - return fileLocation != null && fileLocation.contains(fr.sandro642.github.jobs.misc.ResourceType.MC_RESOURCES.getPath()); + try { + String fileLocation = (String) fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().store.get(fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY); + return fileLocation != null && fileLocation.contains(fr.sandro642.github.jobs.misc.ResourceType.MC_RESOURCES.getPath()); + } catch (Exception e) { + // En cas d'erreur, considérer que ce n'est pas un projet MC + return false; + } } /** * Méthode permettant de définir la variable du plugin Minecraft. * Elle doit être appelée dans un projet Minecraft pour initialiser le plugin. + * * @param plugin Le plugin Minecraft à définir. * @return L'instance du plugin définie. + * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft. + * @throws IllegalArgumentException Si le plugin fourni est null. */ public Plugin setPluginVariable(Plugin plugin) { + if (plugin == null) { + throw new IllegalArgumentException("Plugin cannot be null."); + } + if (isMCProject()) { - return pluginSingleton = plugin; + this.pluginSingleton = plugin; + return this.pluginSingleton; } else { throw new IllegalStateException("This method can only be called in a Minecraft project."); } @@ -49,27 +69,61 @@ public Plugin setPluginVariable(Plugin plugin) { /** * Méthode permettant d'obtenir le chemin du path du plugin Minecraft. * Elle doit être appelée dans un projet Minecraft pour récupérer le chemin du dossier de données du plugin. + * * @return Le chemin du dossier de données du plugin. + * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft ou si le plugin n'est pas initialisé. */ public String getPluginPath() { - if (isMCProject()) { - if (pluginSingleton == null) { - throw new IllegalStateException("Plugin variable is not set. Please call setPluginVariable first."); - } - return pluginSingleton.getDataFolder().getAbsolutePath(); - } else { + if (!isMCProject()) { throw new IllegalStateException("This method can only be called in a Minecraft project."); } + + if (pluginSingleton == null) { + throw new IllegalStateException("Plugin variable is not set. Please call setPluginVariable first."); + } + + return pluginSingleton.getDataFolder().getAbsolutePath(); + } + + /** + * Méthode permettant de vérifier si le plugin est initialisé. + * + * @return true si le plugin est initialisé, false sinon. + */ + public boolean isPluginInitialized() { + return pluginSingleton != null; + } + + /** + * Méthode permettant d'obtenir l'instance du plugin (si initialisé). + * + * @return L'instance du plugin ou null si non initialisé. + */ + public Plugin getPlugin() { + return pluginSingleton; + } + + /** + * Méthode permettant de réinitialiser l'instance du plugin. + * Utile pour les tests ou le rechargement. + */ + public void resetPlugin() { + this.pluginSingleton = null; } /** * Méthode permettant d'obtenir l'instance unique de MCSupport. + * * @return L'instance unique de MCSupport. */ public static MCSupport getInstance() { if (instance == null) { - instance = new MCSupport(); + synchronized (MCSupport.class) { + if (instance == null) { + instance = new MCSupport(); + } + } } return instance; } -} +} \ No newline at end of file diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index 18206ae..0b82b9a 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -59,9 +59,4 @@ public static void main(String[] args) { } } - @Test - public void testHorsData() { - ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); - } - } From 0e5dfd3ba1e643534dc505de8c8e510b8b4fc9ad Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 18:51:15 +0200 Subject: [PATCH 13/42] Bump version to 0.1.3.3-SNAPSHOT in build.gradle.kts --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 07dc618..a0c5ebe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.2-Alpha" +version = "0.1.3.3-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { From 45c4777f563f44375a4b64146ef30fc3dbb9a4f9 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 19:14:54 +0200 Subject: [PATCH 14/42] Bump version to 0.1.3.4-SNAPSHOT and comment out Minecraft project checks in MCSupport --- build.gradle.kts | 2 +- .../java/fr/sandro642/github/hook/MCSupport.java | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a0c5ebe..6aaec46 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.3-SNAPSHOT" // Version de votre projet +version = "0.1.3.4-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java index 2e16a9d..5ad2122 100644 --- a/src/main/java/fr/sandro642/github/hook/MCSupport.java +++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java @@ -58,12 +58,12 @@ public Plugin setPluginVariable(Plugin plugin) { throw new IllegalArgumentException("Plugin cannot be null."); } - if (isMCProject()) { + //if (isMCProject()) { this.pluginSingleton = plugin; return this.pluginSingleton; - } else { - throw new IllegalStateException("This method can only be called in a Minecraft project."); - } + //} else { + // throw new IllegalStateException("This method can only be called in a Minecraft project."); + //} } /** @@ -74,9 +74,9 @@ public Plugin setPluginVariable(Plugin plugin) { * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft ou si le plugin n'est pas initialisé. */ public String getPluginPath() { - if (!isMCProject()) { - throw new IllegalStateException("This method can only be called in a Minecraft project."); - } + //if (!isMCProject()) { + //throw new IllegalStateException("This method can only be called in a Minecraft project."); + //} if (pluginSingleton == null) { throw new IllegalStateException("Plugin variable is not set. Please call setPluginVariable first."); From 7e63f27631083a7db100d603d037e576f96c3f65 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 19:47:17 +0200 Subject: [PATCH 15/42] Bump version to 0.1.3.5-SNAPSHOT and update MC_RESOURCES path handling in YamlUtils --- build.gradle.kts | 2 +- .../fr/sandro642/github/jobs/misc/ResourceType.java | 2 +- src/main/java/fr/sandro642/github/utils/YamlUtils.java | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6aaec46..014cf07 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.4-SNAPSHOT" // Version de votre projet +version = "0.1.3.5-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java b/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java index 58a1df1..b7998de 100644 --- a/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java +++ b/src/main/java/fr/sandro642/github/jobs/misc/ResourceType.java @@ -14,7 +14,7 @@ public enum ResourceType { */ MAIN_RESOURCES("src/main/resources"), TEST_RESOURCES("src/test/resources"), - MC_RESOURCES("mc_resources"); + MC_RESOURCES(""); /** diff --git a/src/main/java/fr/sandro642/github/utils/YamlUtils.java b/src/main/java/fr/sandro642/github/utils/YamlUtils.java index 00b85fd..e604a9f 100644 --- a/src/main/java/fr/sandro642/github/utils/YamlUtils.java +++ b/src/main/java/fr/sandro642/github/utils/YamlUtils.java @@ -1,6 +1,7 @@ package fr.sandro642.github.utils; import fr.sandro642.github.ConnectorAPI; +import fr.sandro642.github.hook.MCSupport; import fr.sandro642.github.jobs.misc.ResourceType; import org.yaml.snakeyaml.Yaml; @@ -65,7 +66,14 @@ public String getRoute(String routeName) { * @param type */ public void generateTemplateIfNotExists(ResourceType type) { - String basePath = type.getPath(); + String basePath; + + if (type == ResourceType.MC_RESOURCES) { + basePath = MCSupport.getInstance().getPluginPath(); + } else { + basePath = type.getPath(); + } + File directory = new File(basePath); if (!directory.exists()) { directory.mkdirs(); From d2b9dedd4fac9e6e1ba75ed2f582cfa2228c62a3 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 21:00:17 +0200 Subject: [PATCH 16/42] Refactor: update ApiClient to handle MC_RESOURCES URL retrieval and bump version to 0.1.3.6-SNAPSHOT --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/api/ApiClient.java | 10 ++++++++-- src/test/java/fr/sandro642/github/test/Main.java | 10 +++++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 014cf07..41d2c4f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.5-SNAPSHOT" // Version de votre projet +version = "0.1.3.6-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index 5547421..ac4ef60 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -32,9 +32,15 @@ public class ApiClient { * @param resourceType Type de ressource (peut être utilisé pour des configurations spécifiques). */ public ApiClient(ResourceType resourceType) { - String baseUrl = (String) ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY); + String baseUrl; + if (resourceType == ResourceType.MC_RESOURCES) { + baseUrl = ConnectorAPI.YamlUtils().getURL(); + } else { + baseUrl = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY).toString(); + } + if (baseUrl == null) { - throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI."); + throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI. "); } this.webClient = WebClient.builder() diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index 0b82b9a..05fc827 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -22,13 +22,21 @@ public void getUrl() { ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); System.out.println(ConnectorAPI.YamlUtils().getURL()); + + + + } + + @Test + public void outGetURL() { + System.out.println(ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY)); } @Test public void getRoute() { ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); - System.out.println(ConnectorAPI.JobGetInfos().getRoutes(VersionType.V1_BRANCH, MethodType.GET, "info")); + } public static void main(String[] args) { From dd4aba62fe80d68d6dec424bc5822caf4ecd5d23 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 21:17:15 +0200 Subject: [PATCH 17/42] Refactor: simplify ApiClient initialization and bump version to 0.1.3.7-SNAPSHOT --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/api/ApiClient.java | 10 ++-------- src/main/java/fr/sandro642/github/api/ApiResponse.java | 1 - .../java/fr/sandro642/github/jobs/JobGetInfos.java | 2 +- src/test/java/fr/sandro642/github/test/Main.java | 2 ++ 5 files changed, 6 insertions(+), 11 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 41d2c4f..fede0c4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.6-SNAPSHOT" // Version de votre projet +version = "0.1.3.7-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index ac4ef60..558087d 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -29,15 +29,9 @@ public class ApiClient { /** * Constructeur de ApiClient qui initialise WebClient avec l'URL de base. - * @param resourceType Type de ressource (peut être utilisé pour des configurations spécifiques). */ - public ApiClient(ResourceType resourceType) { - String baseUrl; - if (resourceType == ResourceType.MC_RESOURCES) { - baseUrl = ConnectorAPI.YamlUtils().getURL(); - } else { - baseUrl = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY).toString(); - } + public ApiClient() { + String baseUrl = ConnectorAPI.YamlUtils().getURL(); if (baseUrl == null) { throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI. "); diff --git a/src/main/java/fr/sandro642/github/api/ApiResponse.java b/src/main/java/fr/sandro642/github/api/ApiResponse.java index 9141f05..a04642a 100644 --- a/src/main/java/fr/sandro642/github/api/ApiResponse.java +++ b/src/main/java/fr/sandro642/github/api/ApiResponse.java @@ -250,7 +250,6 @@ public String display() { ", msg='" + msg + '\'' + ", code=" + code + ", data=" + data + - ", extra=" + extra + '}'; } } \ No newline at end of file diff --git a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java index 7d10369..2b5ef62 100644 --- a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java +++ b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java @@ -33,7 +33,7 @@ public class JobGetInfos { * Utilise ResourceType.MAIN_RESOURCES pour le type de ressource par défaut. */ public JobGetInfos() { - this.apiClient = new ApiClient(ResourceType.MAIN_RESOURCES); + this.apiClient = new ApiClient(); this.yamlUtils = ConnectorAPI.YamlUtils(); } diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index 05fc827..08dd1da 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -54,6 +54,8 @@ public static void main(String[] args) { System.out.println("Code: " + response.getCode()); System.out.println("Erreur: " + response.isErr()); + System.out.println(response.display()); + // Exemple avec des données spécifiques (si elles existent) try { System.out.println("Valeur spécifique: " + response.getSpecData("version")); From c64992c6d4b01d921a0b02a8028124cd80d04e42 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 9 Jul 2025 21:24:45 +0200 Subject: [PATCH 18/42] Refactor: remove unused import for ResourceType in ApiClient --- src/main/java/fr/sandro642/github/api/ApiClient.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index 558087d..6d0872a 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -1,7 +1,6 @@ package fr.sandro642.github.api; import fr.sandro642.github.ConnectorAPI; -import fr.sandro642.github.jobs.misc.ResourceType; import fr.sandro642.github.utils.Logger; import org.springframework.core.ParameterizedTypeReference; import org.springframework.web.reactive.function.client.WebClient; From 88de645fd9cf00459aa7fc9e26500a09c753547c Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 00:14:46 +0200 Subject: [PATCH 19/42] Refactor: update ApiClient to retrieve base URL from StoreAndRetrieve and bump version to 0.1.3.8-SNAPSHOT --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/api/ApiClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index fede0c4..7afe275 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.7-SNAPSHOT" // Version de votre projet +version = "0.1.3.8-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index 6d0872a..0c1d3b2 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -30,7 +30,7 @@ public class ApiClient { * Constructeur de ApiClient qui initialise WebClient avec l'URL de base. */ public ApiClient() { - String baseUrl = ConnectorAPI.YamlUtils().getURL(); + String baseUrl = (String) ConnectorAPI.StoreAndRetrieve().get(ConnectorAPI.StoreAndRetrieve().URL_KEY); if (baseUrl == null) { throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI. "); From 5a6a9c737de4ac04ab94487826fcacebd8c09f7f Mon Sep 17 00:00:00 2001 From: Sandro Soria Date: Thu, 10 Jul 2025 00:17:02 +0200 Subject: [PATCH 20/42] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 2af6cbe..31f237b 100644 --- a/readme.md +++ b/readme.md @@ -7,6 +7,7 @@ Et si vous pensiez que les API étaient compliquées, détrompez-vous ! Avec Con ```java Support Lib 23 | Future 24 +Hook -----------------------| Support Minecraft 1.8 ``` --- From 950fae2e7944cfabacc5b1d32b268caf0c30321a Mon Sep 17 00:00:00 2001 From: Sandro Soria Date: Thu, 10 Jul 2025 00:17:19 +0200 Subject: [PATCH 21/42] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 31f237b..acd794d 100644 --- a/readme.md +++ b/readme.md @@ -9,6 +9,7 @@ Support Lib 23 | Future 24 Hook -----------------------| Support Minecraft 1.8 +Comming Soon. ``` --- From 92515c016dd4f4d9e34de820fcf0db8e67d28880 Mon Sep 17 00:00:00 2001 From: Sandro Soria Date: Thu, 10 Jul 2025 00:17:51 +0200 Subject: [PATCH 22/42] Update readme.md --- readme.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index acd794d..cc33609 100644 --- a/readme.md +++ b/readme.md @@ -8,8 +8,9 @@ Et si vous pensiez que les API étaient compliquées, détrompez-vous ! Avec Con Support Lib 23 | Future 24 Hook -----------------------| -Support Minecraft 1.8 -Comming Soon. + - Support Minecraft 1.8 + + - Comming Soon. ``` --- From 087d4ae2e5350a06f3695c8d9957e07d8fc47433 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 00:32:44 +0200 Subject: [PATCH 23/42] Feature: add SerialMap class for serialization management --- .../fr/sandro642/github/ConnectorAPI.java | 9 +++ .../fr/sandro642/github/utils/SerialMap.java | 80 +++++++++++++++++++ todo.md | 8 ++ 3 files changed, 97 insertions(+) create mode 100644 src/main/java/fr/sandro642/github/utils/SerialMap.java create mode 100644 todo.md diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 7642e28..4db5d0f 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -4,6 +4,7 @@ import fr.sandro642.github.jobs.JobGetInfos; import fr.sandro642.github.jobs.misc.ResourceType; import fr.sandro642.github.utils.Logger; +import fr.sandro642.github.utils.SerialMap; import fr.sandro642.github.utils.StoreAndRetrieve; import fr.sandro642.github.utils.YamlUtils; @@ -89,4 +90,12 @@ public static YamlUtils YamlUtils() { public static MCSupport MCSupport() { return MCSupport.getInstance(); } + + /** + * Retourne une instance de SerialMap pour la gestion des données sérialisées + * @return SerialMap + */ + public static SerialMap SerialMap() { + return SerialMap.getInstance(); + } } diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java new file mode 100644 index 0000000..8092f5f --- /dev/null +++ b/src/main/java/fr/sandro642/github/utils/SerialMap.java @@ -0,0 +1,80 @@ +package fr.sandro642.github.utils; + +import fr.sandro642.github.ConnectorAPI; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.HashMap; + +/** + * Classe utilitaire pour gérer les cartes de sérialisation. + * Actuellement vide, mais peut être étendue pour inclure des méthodes de sérialisation/désérialisation. + * + * @author Sandro642 + * @version 1.0 + */ + +public class SerialMap { + + /** + * Instance de la classe serialMap. + */ + private static SerialMap instance; + + /** + * Constructeur privé pour empêcher l'instanciation directe. + */ + private SerialMap() { + // Constructeur privé pour le pattern Singleton + } + + /** + * Méthode pour sauvegarder une HashMap dans un fichier. + * + * @param map La HashMap à sauvegarder. + * @param fileName Le nom du fichier dans lequel la HashMap sera sauvegardée. + */ + public void saveData(HashMap map, String fileName) { + try { + ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(fileName)); + outputStream.writeObject(map); + outputStream.close(); + ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName); + } catch (Exception e) { + ConnectorAPI.Logger().ERROR("✗ Erreur sauvegarde " + fileName); + } + } + + /** + * Méthode pour charger une HashMap depuis un fichier. + * + * @param fileName Le nom du fichier à partir duquel la HashMap sera chargée. + * @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur. + */ + public HashMap loadData(String fileName) { + try { + ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(fileName)); + HashMap data = (HashMap) inputStream.readObject(); + inputStream.close(); + System.out.println("✓ Chargement réussi depuis " + fileName); + return data; + } catch (Exception e) { + System.out.println("✗ Erreur chargement " + fileName); + return new HashMap<>(); + } + } + + /** + * Méthode pour obtenir l'instance unique de serialMap. + * + * @return L'instance unique de serialMap. + */ + public static SerialMap getInstance() { + if (instance == null) { + instance = new SerialMap(); + } + return instance; + } +} diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..0ebf720 --- /dev/null +++ b/todo.md @@ -0,0 +1,8 @@ +Carnet des charges : + +### Objectif +Création de la classe SerialMap.java : ```Fait``` + +Implémentation des méthodes de la classe SerialMap.java : ```A faire```. + +Sur la question de la branche ```feature/serializer```, pour l'instant juste commit et pousser sur la branche distante avant de l'intégrer dans le [work-jar.yml](.github/workflows/work-jar.yml) En prod. Essai en interne pour l'instant. \ No newline at end of file From fac972d0951525ba3036532cebff58e4930c8362 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 00:34:07 +0200 Subject: [PATCH 24/42] Refactor: update project version to 0.0.0 in build.gradle.kts : Version No-Prod Development --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 7afe275..6796f2c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.8-SNAPSHOT" // Version de votre projet +version = "0.0.0" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { From c59f731c4cb03e26bd5196ba91c8ccc9bf68d11d Mon Sep 17 00:00:00 2001 From: Sandro Soria Date: Thu, 10 Jul 2025 11:33:45 +0200 Subject: [PATCH 25/42] Update readme.md --- readme.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/readme.md b/readme.md index cc33609..4550c4b 100644 --- a/readme.md +++ b/readme.md @@ -4,6 +4,13 @@ Bienvenue dans **ConnectorAPI** : la passerelle universelle pour connecter, auto Et si vous pensiez que les API étaient compliquées, détrompez-vous ! Avec ConnectorAPI, c’est comme jouer avec des Lego : simple, intuitif et puissant. --- + +```java +Stable Version : 0.1.2 +``` + +--- + ```java Support Lib 23 | Future 24 From 087f2cff37acf501a0f0d2c71ac393f81ed88b32 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 13:52:26 +0200 Subject: [PATCH 26/42] Feature: implement serialization for store and retrieve data management --- build.gradle.kts | 2 +- readme.md | 8 +++++ .../fr/sandro642/github/ConnectorAPI.java | 4 +++ .../fr/sandro642/github/api/ApiClient.java | 5 ++- .../fr/sandro642/github/hook/MCSupport.java | 3 ++ .../fr/sandro642/github/jobs/JobGetInfos.java | 14 ++++++--- .../fr/sandro642/github/utils/SerialMap.java | 7 +++-- .../github/utils/StoreAndRetrieve.java | 3 +- .../fr/sandro642/github/utils/YamlUtils.java | 9 ++++-- .../java/fr/sandro642/github/test/Main.java | 31 +++++++++++++++++-- 10 files changed, 71 insertions(+), 15 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6796f2c..c827473 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.0.0" // Version de votre projet +version = "0.1.3.9-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/readme.md b/readme.md index cc33609..e056b23 100644 --- a/readme.md +++ b/readme.md @@ -14,6 +14,14 @@ Hook -----------------------| ``` --- +Changelog : + +```java + - [0.1.3.9-SNAPSHOT] : Ajout de la sérialisation des données pour une compatibilisation parfaite des données avec les HOOK. +``` + +--- + ## 🌟 Pourquoi ConnectorAPI ? Imaginez une API qui ne se contente pas de relier des services, mais qui devient le chef d’orchestre de vos intégrations. ConnectorAPI est conçu pour : diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 4db5d0f..54a9764 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -39,11 +39,15 @@ public static void initialize(ResourceType resourceType) { storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath()); + ConnectorAPI.SerialMap().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); + // Charge l'URL depuis le fichier YAML String baseUrl = yamlUtils.getURL(); if (baseUrl != null) { storeAndRetrieve.store.put(storeAndRetrieve.URL_KEY, baseUrl); } + + ConnectorAPI.SerialMap().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); } /** diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index 0c1d3b2..9eba2d8 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -7,6 +7,7 @@ import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; @@ -30,7 +31,9 @@ public class ApiClient { * Constructeur de ApiClient qui initialise WebClient avec l'URL de base. */ public ApiClient() { - String baseUrl = (String) ConnectorAPI.StoreAndRetrieve().get(ConnectorAPI.StoreAndRetrieve().URL_KEY); + HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + + String baseUrl = (String) storeLoad.get(ConnectorAPI.StoreAndRetrieve().URL_KEY); if (baseUrl == null) { throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI. "); diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java index 5ad2122..98f1c79 100644 --- a/src/main/java/fr/sandro642/github/hook/MCSupport.java +++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java @@ -1,5 +1,6 @@ package fr.sandro642.github.hook; +import fr.sandro642.github.ConnectorAPI; import org.bukkit.plugin.Plugin; /** @@ -36,6 +37,8 @@ private MCSupport() { */ public boolean isMCProject() { try { + ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + String fileLocation = (String) fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().store.get(fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY); return fileLocation != null && fileLocation.contains(fr.sandro642.github.jobs.misc.ResourceType.MC_RESOURCES.getPath()); } catch (Exception e) { diff --git a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java index 2b5ef62..3a044cf 100644 --- a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java +++ b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java @@ -4,10 +4,10 @@ import fr.sandro642.github.api.ApiClient; import fr.sandro642.github.api.ApiResponse; import fr.sandro642.github.jobs.misc.MethodType; -import fr.sandro642.github.jobs.misc.ResourceType; import fr.sandro642.github.jobs.misc.VersionType; import fr.sandro642.github.utils.YamlUtils; +import java.util.HashMap; import java.util.Map; /** @@ -153,6 +153,8 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str ConnectorAPI.StoreAndRetrieve().store.put("currentParams", params); } + ConnectorAPI.SerialMap().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); + ConnectorAPI.Logger().INFO("Route construite: " + fullRoute); } catch (Exception e) { @@ -169,9 +171,11 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str */ public ApiResponse getResponse() { try { - String route = (String) ConnectorAPI.StoreAndRetrieve().store.get("currentRoute"); - MethodType method = (MethodType) ConnectorAPI.StoreAndRetrieve().store.get("currentMethod"); - Map body = (Map) ConnectorAPI.StoreAndRetrieve().store.get("currentBody"); + HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + + String route = (String) storeLoad.get("currentRoute"); + MethodType method = (MethodType) storeLoad.get("currentMethod"); + Map body = (Map) storeLoad.get("currentBody"); if (route == null || method == null) { throw new RuntimeException("Route ou méthode non définie. Appelez getRoutes() d'abord."); @@ -200,6 +204,8 @@ public ApiResponse getResponse() { ConnectorAPI.StoreAndRetrieve().store.remove("currentMethod"); ConnectorAPI.StoreAndRetrieve().store.remove("currentBody"); + ConnectorAPI.SerialMap().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); + return response; } catch (Exception e) { diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java index 8092f5f..6e0fd34 100644 --- a/src/main/java/fr/sandro642/github/utils/SerialMap.java +++ b/src/main/java/fr/sandro642/github/utils/SerialMap.java @@ -41,7 +41,7 @@ public void saveData(HashMap map, String fileName) { ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(fileName)); outputStream.writeObject(map); outputStream.close(); - ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName); + //ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName); } catch (Exception e) { ConnectorAPI.Logger().ERROR("✗ Erreur sauvegarde " + fileName); } @@ -58,10 +58,11 @@ public HashMap loadData(String fileName) { ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(fileName)); HashMap data = (HashMap) inputStream.readObject(); inputStream.close(); - System.out.println("✓ Chargement réussi depuis " + fileName); + //ConnectorAPI.Logger().INFO("✓ Chargement réussi depuis " + fileName); return data; } catch (Exception e) { - System.out.println("✗ Erreur chargement " + fileName); + ConnectorAPI.Logger().ERROR("✗ Erreur chargement " + fileName); + e.printStackTrace(); return new HashMap<>(); } } diff --git a/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java b/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java index e8adbae..48ff66c 100644 --- a/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java +++ b/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java @@ -1,5 +1,6 @@ package fr.sandro642.github.utils; +import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; import java.util.Map; @@ -22,7 +23,7 @@ public class StoreAndRetrieve { */ public final String URL_KEY = "baseUrl"; public final String FILE_LOCATION_KEY = "fileLocation"; - public final Map store = new ConcurrentHashMap<>(); + public final HashMap store = new HashMap<>(); /** * Ajoute une valeur à la map avec la clé spécifiée. diff --git a/src/main/java/fr/sandro642/github/utils/YamlUtils.java b/src/main/java/fr/sandro642/github/utils/YamlUtils.java index e604a9f..a5acc99 100644 --- a/src/main/java/fr/sandro642/github/utils/YamlUtils.java +++ b/src/main/java/fr/sandro642/github/utils/YamlUtils.java @@ -8,6 +8,7 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.HashMap; import java.util.Map; /** @@ -27,7 +28,9 @@ public class YamlUtils { * @return l'URL de base définie dans le fichier YAML, ou null si une erreur se produit */ public String getURL() { - String yamlFilePath = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; + HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + + String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; try (InputStream inputStream = Files.newInputStream(Paths.get(yamlFilePath))) { Yaml yaml = new Yaml(); @@ -44,7 +47,9 @@ public String getURL() { * @return */ public String getRoute(String routeName) { - String yamlFilePath = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; + HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + + String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; try (InputStream inputStream = Files.newInputStream(Paths.get(yamlFilePath))) { Yaml yaml = new Yaml(); diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index 08dd1da..f2c5882 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -8,6 +8,8 @@ import fr.sandro642.github.jobs.misc.VersionType; import org.junit.jupiter.api.Test; +import java.util.HashMap; + /** * Main est une classe de test pour vérifier la création du fichier YML et pleins d'autres fonctionnalités de la librairie. * @author Sandro642 @@ -22,9 +24,6 @@ public void getUrl() { ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); System.out.println(ConnectorAPI.YamlUtils().getURL()); - - - } @Test @@ -69,4 +68,30 @@ public static void main(String[] args) { } } + @Test + public void saveDataMap() { + HashMap data = new HashMap<>(); + + data.put("version", "1.0.0"); + data.put("status", "ok"); + + ConnectorAPI.SerialMap().saveData(data, "test_map.yml"); + } + + @Test + public void loadDataMap() { + HashMap data = ConnectorAPI.SerialMap().loadData("test_map.yml"); + + System.out.println("data version: " + data.get("version")); + } + + @Test + public void resetDataMap() { + HashMap data = ConnectorAPI.SerialMap().loadData("test_map.yml"); + + data.clear(); + + ConnectorAPI.SerialMap().saveData(data, "test_map.yml"); + } + } From af822d541721a9837c4227ad2f107b37c7367ebe Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 13:55:01 +0200 Subject: [PATCH 27/42] Feature: update work-jar.yml to include feature/serializer branch and remove main branch --- .github/workflows/work-jar.yml | 2 +- todo.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/work-jar.yml b/.github/workflows/work-jar.yml index bdb8441..a77b4ea 100644 --- a/.github/workflows/work-jar.yml +++ b/.github/workflows/work-jar.yml @@ -2,8 +2,8 @@ name: Publish JAR to GitHub Pages on: push: branches: - - main - feature/hook + - feature/serializer permissions: contents: write pages: write diff --git a/todo.md b/todo.md index 0ebf720..caf4b54 100644 --- a/todo.md +++ b/todo.md @@ -5,4 +5,4 @@ Création de la classe SerialMap.java : ```Fait``` Implémentation des méthodes de la classe SerialMap.java : ```A faire```. -Sur la question de la branche ```feature/serializer```, pour l'instant juste commit et pousser sur la branche distante avant de l'intégrer dans le [work-jar.yml](.github/workflows/work-jar.yml) En prod. Essai en interne pour l'instant. \ No newline at end of file +Sur la question de la branche ```feature/serializer```, pour l'instant juste commit et pousser sur la branche distante avant de l'intégrer dans le [work-jar.yml](.github/workflows/work-jar.yml) En prod. Essai en interne pour l'instant : ```Ajout de la branche en prod.``` \ No newline at end of file From 0e8a496e0d7c724727bc534bf17a06c084035fce Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 14:57:55 +0200 Subject: [PATCH 28/42] Feature: refactor data management to use HookManager for loading and saving data --- .../fr/sandro642/github/ConnectorAPI.java | 11 ++- .../fr/sandro642/github/api/ApiClient.java | 2 +- .../fr/sandro642/github/hook/HookManager.java | 85 +++++++++++++++++++ .../fr/sandro642/github/jobs/JobGetInfos.java | 6 +- .../fr/sandro642/github/utils/SerialMap.java | 38 +++++++-- .../fr/sandro642/github/utils/YamlUtils.java | 4 +- .../java/fr/sandro642/github/test/Main.java | 13 ++- 7 files changed, 139 insertions(+), 20 deletions(-) create mode 100644 src/main/java/fr/sandro642/github/hook/HookManager.java diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 54a9764..6b39245 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -1,5 +1,6 @@ package fr.sandro642.github; +import fr.sandro642.github.hook.HookManager; import fr.sandro642.github.hook.MCSupport; import fr.sandro642.github.jobs.JobGetInfos; import fr.sandro642.github.jobs.misc.ResourceType; @@ -34,12 +35,14 @@ public static void initialize(ResourceType resourceType) { storeAndRetrieve = new StoreAndRetrieve(); yamlUtils = new YamlUtils(); + HookManager().TypeManagerHook(resourceType); + // Génère le template si nécessaire yamlUtils.generateTemplateIfNotExists(resourceType); storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath()); - ConnectorAPI.SerialMap().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); + ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); // Charge l'URL depuis le fichier YAML String baseUrl = yamlUtils.getURL(); @@ -47,7 +50,7 @@ public static void initialize(ResourceType resourceType) { storeAndRetrieve.store.put(storeAndRetrieve.URL_KEY, baseUrl); } - ConnectorAPI.SerialMap().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); + ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); } /** @@ -102,4 +105,8 @@ public static MCSupport MCSupport() { public static SerialMap SerialMap() { return SerialMap.getInstance(); } + + public static HookManager HookManager() { + return HookManager.getInstance(); + } } diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index 9eba2d8..f48bf62 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -31,7 +31,7 @@ public class ApiClient { * Constructeur de ApiClient qui initialise WebClient avec l'URL de base. */ public ApiClient() { - HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); String baseUrl = (String) storeLoad.get(ConnectorAPI.StoreAndRetrieve().URL_KEY); diff --git a/src/main/java/fr/sandro642/github/hook/HookManager.java b/src/main/java/fr/sandro642/github/hook/HookManager.java new file mode 100644 index 0000000..eeb32d7 --- /dev/null +++ b/src/main/java/fr/sandro642/github/hook/HookManager.java @@ -0,0 +1,85 @@ +package fr.sandro642.github.hook; + +import fr.sandro642.github.jobs.misc.ResourceType; +import fr.sandro642.github.utils.SerialMap; +import org.bukkit.plugin.Plugin; + +import java.util.HashMap; + +/** + * Classe HookManager pour gérer les hooks dans le projet. + * + * @author Sandro642 + * @version 1.0 + */ + +public class HookManager { + /** + * Instance de la classe HookManager. + */ + private static HookManager instance; + + /** + * Constructeur privé pour empêcher l'instanciation directe. + */ + private HookManager() { + // Constructeur privé pour le pattern Singleton + } + + /** + * Type de ressource utilisé par le HookManager. + */ + private ResourceType usedType; + + /** + * Méthode pour choisir le type de ressource utilisé par le HookManager. + * + * @param type + * @return + */ + public ResourceType TypeManagerHook(ResourceType type) { + this.usedType = type; + return this.usedType; + } + + /** + * Méthode pour sauvegarder une HashMap dans un fichier. + * + * @param map + * @param fileName + */ + public void saveData(HashMap map, String fileName) { + if (usedType == ResourceType.MC_RESOURCES) { + Plugin pluginTarget = MCSupport.getInstance().getPlugin(); + + SerialMap.getInstance().saveData(map, fileName, pluginTarget); + } else { + SerialMap.getInstance().saveData(map, fileName); + } + } + + /** + * Méthode pour charger une HashMap depuis un fichier. + * + * @param fileName + */ + public HashMap loadData(String fileName) { + if (usedType == ResourceType.MC_RESOURCES) { + Plugin pluginTarget = MCSupport.getInstance().getPlugin(); + return SerialMap.getInstance().loadData(fileName, pluginTarget); + } else { + return SerialMap.getInstance().loadData(fileName); + } + } + + /** + * Méthode pour obtenir l'instance unique de HookManager. + * @return + */ + public static HookManager getInstance() { + if (instance == null) { + instance = new HookManager(); + } + return instance; + } +} diff --git a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java index 3a044cf..58177fa 100644 --- a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java +++ b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java @@ -153,7 +153,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str ConnectorAPI.StoreAndRetrieve().store.put("currentParams", params); } - ConnectorAPI.SerialMap().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); + ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); ConnectorAPI.Logger().INFO("Route construite: " + fullRoute); @@ -171,7 +171,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str */ public ApiResponse getResponse() { try { - HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); String route = (String) storeLoad.get("currentRoute"); MethodType method = (MethodType) storeLoad.get("currentMethod"); @@ -204,7 +204,7 @@ public ApiResponse getResponse() { ConnectorAPI.StoreAndRetrieve().store.remove("currentMethod"); ConnectorAPI.StoreAndRetrieve().store.remove("currentBody"); - ConnectorAPI.SerialMap().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); + ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); return response; diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java index 6e0fd34..4c483a8 100644 --- a/src/main/java/fr/sandro642/github/utils/SerialMap.java +++ b/src/main/java/fr/sandro642/github/utils/SerialMap.java @@ -1,11 +1,9 @@ package fr.sandro642.github.utils; import fr.sandro642.github.ConnectorAPI; +import org.bukkit.plugin.Plugin; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; +import java.io.*; import java.util.HashMap; /** @@ -36,9 +34,17 @@ private SerialMap() { * @param map La HashMap à sauvegarder. * @param fileName Le nom du fichier dans lequel la HashMap sera sauvegardée. */ - public void saveData(HashMap map, String fileName) { + public void saveData(HashMap map, String fileName, Plugin plugin) { try { - ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(fileName)); + File file; + + if (plugin != null) { + file = new File(plugin.getDataFolder() + fileName); + } else { + file = new File(fileName); + } + + ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file)); outputStream.writeObject(map); outputStream.close(); //ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName); @@ -47,15 +53,27 @@ public void saveData(HashMap map, String fileName) { } } + public void saveData(HashMap map, String FileName) { + saveData(map, FileName, null); + } + /** * Méthode pour charger une HashMap depuis un fichier. * * @param fileName Le nom du fichier à partir duquel la HashMap sera chargée. * @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur. */ - public HashMap loadData(String fileName) { + public HashMap loadData(String fileName, Plugin plugin) { try { - ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(fileName)); + File file; + + if (plugin != null) { + file = new File(plugin.getDataFolder() + fileName); + } else { + file = new File(fileName); + } + + ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file)); HashMap data = (HashMap) inputStream.readObject(); inputStream.close(); //ConnectorAPI.Logger().INFO("✓ Chargement réussi depuis " + fileName); @@ -67,6 +85,10 @@ public HashMap loadData(String fileName) { } } + public HashMap loadData(String fileName) { + return loadData(fileName, null); + } + /** * Méthode pour obtenir l'instance unique de serialMap. * diff --git a/src/main/java/fr/sandro642/github/utils/YamlUtils.java b/src/main/java/fr/sandro642/github/utils/YamlUtils.java index a5acc99..9fa2a5d 100644 --- a/src/main/java/fr/sandro642/github/utils/YamlUtils.java +++ b/src/main/java/fr/sandro642/github/utils/YamlUtils.java @@ -28,7 +28,7 @@ public class YamlUtils { * @return l'URL de base définie dans le fichier YAML, ou null si une erreur se produit */ public String getURL() { - HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; @@ -47,7 +47,7 @@ public String getURL() { * @return */ public String getRoute(String routeName) { - HashMap storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); + HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index f2c5882..334f582 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -28,7 +28,12 @@ public void getUrl() { @Test public void outGetURL() { - System.out.println(ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY)); + HashMap data = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); + + + //System.out.println(data.get(ConnectorAPI.StoreAndRetrieve().URL_KEY)); + + System.out.println(ConnectorAPI.YamlUtils().getURL()); } @Test @@ -75,19 +80,19 @@ public void saveDataMap() { data.put("version", "1.0.0"); data.put("status", "ok"); - ConnectorAPI.SerialMap().saveData(data, "test_map.yml"); + ConnectorAPI.HookManager().saveData(data, "test_map.yml"); } @Test public void loadDataMap() { - HashMap data = ConnectorAPI.SerialMap().loadData("test_map.yml"); + HashMap data = ConnectorAPI.HookManager().loadData("test_map.yml"); System.out.println("data version: " + data.get("version")); } @Test public void resetDataMap() { - HashMap data = ConnectorAPI.SerialMap().loadData("test_map.yml"); + HashMap data = ConnectorAPI.HookManager().loadData("test_map.yml"); data.clear(); From f7558201e169d71525fec01412f203fa85726bee Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 14:58:47 +0200 Subject: [PATCH 29/42] Feature: update project version to 0.1.3.10-SNAPSHOT in build.gradle.kts --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index c827473..8e6a76a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.9-SNAPSHOT" // Version de votre projet +version = "0.1.3.10-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { From 5b16132371292f21ff7feccaf1ceb5aab554939f Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 15:47:51 +0200 Subject: [PATCH 30/42] Feature: update project version to 0.1.3.11-SNAPSHOT and fix file path concatenation in SerialMap --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/utils/SerialMap.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 8e6a76a..729eacb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.10-SNAPSHOT" // Version de votre projet +version = "0.1.3.11-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java index 4c483a8..8e6f1f0 100644 --- a/src/main/java/fr/sandro642/github/utils/SerialMap.java +++ b/src/main/java/fr/sandro642/github/utils/SerialMap.java @@ -39,7 +39,7 @@ public void saveData(HashMap map, String fileName, Plugin plugin File file; if (plugin != null) { - file = new File(plugin.getDataFolder() + fileName); + file = new File(plugin.getDataFolder(), fileName); } else { file = new File(fileName); } @@ -68,7 +68,7 @@ public HashMap loadData(String fileName, Plugin plugin) { File file; if (plugin != null) { - file = new File(plugin.getDataFolder() + fileName); + file = new File(plugin.getDataFolder(), fileName); } else { file = new File(fileName); } From 6e43956618a409962679dc04c2a328fc1ca65c56 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 15:59:54 +0200 Subject: [PATCH 31/42] Feature: update project version to 0.1.3.12-SNAPSHOT and add getUsedType method in HookManager --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/hook/HookManager.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 729eacb..e1ba928 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.11-SNAPSHOT" // Version de votre projet +version = "0.1.3.12-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/hook/HookManager.java b/src/main/java/fr/sandro642/github/hook/HookManager.java index eeb32d7..db8525d 100644 --- a/src/main/java/fr/sandro642/github/hook/HookManager.java +++ b/src/main/java/fr/sandro642/github/hook/HookManager.java @@ -31,6 +31,15 @@ private HookManager() { */ private ResourceType usedType; + /** + * Obtient le type de ressource utilisé par le HookManager. + * + * @return Le type de ressource utilisé. + */ + public ResourceType getUsedType() { + return usedType; + } + /** * Méthode pour choisir le type de ressource utilisé par le HookManager. * From 267dc7107601b3645cb306e474244d2e247851a5 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 16:16:59 +0200 Subject: [PATCH 32/42] Feature: update project version to 0.1.3.13-SNAPSHOT and add debug logging in loadData method --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/hook/HookManager.java | 2 ++ src/test/java/fr/sandro642/github/test/Main.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e1ba928..ea5879d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.12-SNAPSHOT" // Version de votre projet +version = "0.1.3.13-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/hook/HookManager.java b/src/main/java/fr/sandro642/github/hook/HookManager.java index db8525d..bee8109 100644 --- a/src/main/java/fr/sandro642/github/hook/HookManager.java +++ b/src/main/java/fr/sandro642/github/hook/HookManager.java @@ -75,6 +75,8 @@ public void saveData(HashMap map, String fileName) { public HashMap loadData(String fileName) { if (usedType == ResourceType.MC_RESOURCES) { Plugin pluginTarget = MCSupport.getInstance().getPlugin(); + + System.out.println("usedType: " + usedType + " | pluginTarget: " + pluginTarget); return SerialMap.getInstance().loadData(fileName, pluginTarget); } else { return SerialMap.getInstance().loadData(fileName); diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index 334f582..768fd92 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -45,7 +45,7 @@ public void getRoute() { public static void main(String[] args) { // Initialisation du ConnectorAPI - ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); + //ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); try { // Exemple d'utilisation comme demandé From a1f6305ee4890b8aab8d48f48c12150362aaaf7e Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 16:33:32 +0200 Subject: [PATCH 33/42] Feature: update project version to 0.1.3.14-SNAPSHOT and add debug logging in loadData methods --- build.gradle.kts | 2 +- .../fr/sandro642/github/hook/HookManager.java | 20 +++++++++-- .../fr/sandro642/github/utils/SerialMap.java | 36 +++++++++++++++++-- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index ea5879d..e92432e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.13-SNAPSHOT" // Version de votre projet +version = "0.1.3.14-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/hook/HookManager.java b/src/main/java/fr/sandro642/github/hook/HookManager.java index bee8109..367d4b2 100644 --- a/src/main/java/fr/sandro642/github/hook/HookManager.java +++ b/src/main/java/fr/sandro642/github/hook/HookManager.java @@ -71,15 +71,31 @@ public void saveData(HashMap map, String fileName) { * Méthode pour charger une HashMap depuis un fichier. * * @param fileName + * @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur. */ public HashMap loadData(String fileName) { if (usedType == ResourceType.MC_RESOURCES) { Plugin pluginTarget = MCSupport.getInstance().getPlugin(); System.out.println("usedType: " + usedType + " | pluginTarget: " + pluginTarget); - return SerialMap.getInstance().loadData(fileName, pluginTarget); + System.out.println("fileName demandé: " + fileName); + + HashMap result = SerialMap.getInstance().loadData(fileName, pluginTarget); + + // Debug: afficher le contenu récupéré + System.out.println("Données récupérées: " + result); + System.out.println("Taille de la HashMap: " + result.size()); + System.out.println("Clés disponibles: " + result.keySet()); + + return result; } else { - return SerialMap.getInstance().loadData(fileName); + HashMap result = SerialMap.getInstance().loadData(fileName); + + // Debug: afficher le contenu récupéré + System.out.println("Données récupérées (sans plugin): " + result); + System.out.println("Taille de la HashMap: " + result.size()); + + return result; } } diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java index 8e6f1f0..a115895 100644 --- a/src/main/java/fr/sandro642/github/utils/SerialMap.java +++ b/src/main/java/fr/sandro642/github/utils/SerialMap.java @@ -73,18 +73,50 @@ public HashMap loadData(String fileName, Plugin plugin) { file = new File(fileName); } + // Debug: vérifier l'existence du fichier + System.out.println("Tentative de chargement du fichier: " + file.getAbsolutePath()); + System.out.println("Fichier existe: " + file.exists()); + System.out.println("Fichier lisible: " + file.canRead()); + System.out.println("Taille du fichier: " + file.length() + " bytes"); + + if (!file.exists()) { + System.out.println("ERREUR: Le fichier n'existe pas!"); + return new HashMap<>(); + } + ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file)); HashMap data = (HashMap) inputStream.readObject(); inputStream.close(); - //ConnectorAPI.Logger().INFO("✓ Chargement réussi depuis " + fileName); + + System.out.println("✓ Chargement réussi depuis " + fileName); + System.out.println("Données chargées: " + data); + return data; + } catch (FileNotFoundException e) { + System.out.println("✗ Fichier introuvable: " + fileName); + e.printStackTrace(); + return new HashMap<>(); + } catch (IOException e) { + System.out.println("✗ Erreur de lecture du fichier: " + fileName); + e.printStackTrace(); + return new HashMap<>(); + } catch (ClassNotFoundException e) { + System.out.println("✗ Erreur de désérialisation: " + fileName); + e.printStackTrace(); + return new HashMap<>(); } catch (Exception e) { - ConnectorAPI.Logger().ERROR("✗ Erreur chargement " + fileName); + System.out.println("✗ Erreur générale lors du chargement: " + fileName); e.printStackTrace(); return new HashMap<>(); } } + /** + * Méthode pour charger une HashMap depuis un fichier sans spécifier de plugin. + * + * @param fileName Le nom du fichier à partir duquel la HashMap sera chargée. + * @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur. + */ public HashMap loadData(String fileName) { return loadData(fileName, null); } From 26430be7bc090a42cdb94efb8e47e71bfabcaaa0 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 16:46:16 +0200 Subject: [PATCH 34/42] Feature: update project version to 0.1.3.15-SNAPSHOT and add debug logging in saveData methods --- build.gradle.kts | 2 +- .../fr/sandro642/github/hook/HookManager.java | 21 ++++++++++- .../fr/sandro642/github/utils/SerialMap.java | 36 +++++++++++++++---- 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e92432e..a8ed6c1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.14-SNAPSHOT" // Version de votre projet +version = "0.1.3.15-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/hook/HookManager.java b/src/main/java/fr/sandro642/github/hook/HookManager.java index 367d4b2..27cb92b 100644 --- a/src/main/java/fr/sandro642/github/hook/HookManager.java +++ b/src/main/java/fr/sandro642/github/hook/HookManager.java @@ -5,6 +5,7 @@ import org.bukkit.plugin.Plugin; import java.util.HashMap; +import java.util.Map; /** * Classe HookManager pour gérer les hooks dans le projet. @@ -58,13 +59,31 @@ public ResourceType TypeManagerHook(ResourceType type) { * @param fileName */ public void saveData(HashMap map, String fileName) { + // DEBUG: Voir ce qui est passé à la sauvegarde + System.out.println("=== DÉBUT SAUVEGARDE ==="); + System.out.println("fileName: " + fileName); + System.out.println("map reçue: " + map); + System.out.println("map.size(): " + map.size()); + System.out.println("map.keySet(): " + map.keySet()); + + // Détailler chaque entrée + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + System.out.println("Clé: '" + key + "' -> Valeur: '" + value + "' (type: " + + (value != null ? value.getClass().getSimpleName() : "null") + ")"); + } + if (usedType == ResourceType.MC_RESOURCES) { Plugin pluginTarget = MCSupport.getInstance().getPlugin(); + System.out.println("usedType: " + usedType + " | pluginTarget: " + pluginTarget); SerialMap.getInstance().saveData(map, fileName, pluginTarget); } else { - SerialMap.getInstance().saveData(map, fileName); + SerialMap.getInstance().saveData(map, fileName, null); } + + System.out.println("=== FIN SAUVEGARDE ==="); } /** diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java index a115895..662b577 100644 --- a/src/main/java/fr/sandro642/github/utils/SerialMap.java +++ b/src/main/java/fr/sandro642/github/utils/SerialMap.java @@ -5,6 +5,7 @@ import java.io.*; import java.util.HashMap; +import java.util.Map; /** * Classe utilitaire pour gérer les cartes de sérialisation. @@ -44,19 +45,42 @@ public void saveData(HashMap map, String fileName, Plugin plugin file = new File(fileName); } + System.out.println("=== SAUVEGARDE SERIALMAP ==="); + System.out.println("Fichier destination: " + file.getAbsolutePath()); + System.out.println("Map à sauvegarder: " + map); + System.out.println("Taille de la map: " + map.size()); + + // Vérifier le contenu avant sauvegarde + for (Map.Entry entry : map.entrySet()) { + System.out.println("Avant sauvegarde - Clé: '" + entry.getKey() + + "' -> Valeur: '" + entry.getValue() + "'"); + } + ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file)); outputStream.writeObject(map); outputStream.close(); - //ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName); + + System.out.println("✓ Sauvegarde réussie dans " + fileName); + System.out.println("Taille du fichier créé: " + file.length() + " bytes"); + + // Test de relecture immédiate pour vérifier + System.out.println("=== TEST DE RELECTURE IMMÉDIATE ==="); + ObjectInputStream testInput = new ObjectInputStream(new FileInputStream(file)); + HashMap testMap = (HashMap) testInput.readObject(); + testInput.close(); + + System.out.println("Données relues immédiatement: " + testMap); + for (Map.Entry entry : testMap.entrySet()) { + System.out.println("Après relecture - Clé: '" + entry.getKey() + + "' -> Valeur: '" + entry.getValue() + "'"); + } + } catch (Exception e) { - ConnectorAPI.Logger().ERROR("✗ Erreur sauvegarde " + fileName); + System.out.println("✗ Erreur sauvegarde " + fileName); + e.printStackTrace(); } } - public void saveData(HashMap map, String FileName) { - saveData(map, FileName, null); - } - /** * Méthode pour charger une HashMap depuis un fichier. * From 8607c04fe4d200a623e94f4815fe2e6a621d4fb0 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 17:20:27 +0200 Subject: [PATCH 35/42] Feature: update project version to 0.1.3.16-SNAPSHOT and refactor saveData method calls in ConnectorAPI and Main --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/ConnectorAPI.java | 6 +++++- src/test/java/fr/sandro642/github/test/Main.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a8ed6c1..0bb5915 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "fr.sandro642.github" -version = "0.1.3.15-SNAPSHOT" // Version de votre projet +version = "0.1.3.16-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 6b39245..33b885d 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -40,7 +40,11 @@ public static void initialize(ResourceType resourceType) { // Génère le template si nécessaire yamlUtils.generateTemplateIfNotExists(resourceType); - storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath()); + if (resourceType == ResourceType.MC_RESOURCES) { + storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, MCSupport().getPluginPath()); + } else { + storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath()); + } ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index 768fd92..b77b375 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -96,7 +96,7 @@ public void resetDataMap() { data.clear(); - ConnectorAPI.SerialMap().saveData(data, "test_map.yml"); + ConnectorAPI.HookManager().saveData(data, "test_map.yml"); } } From cb86f75e5b12ddca3a722dbf06c4ca5af3c385d1 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 17:26:49 +0200 Subject: [PATCH 36/42] Feature: update project version to 0.1.3.16-SNAPSHOT and add printVersion task in build.gradle.kts --- build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 0bb5915..97cda18 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,9 +5,11 @@ plugins { id("maven-publish") // Plugin pour la publication } + group = "fr.sandro642.github" version = "0.1.3.16-SNAPSHOT" // Version de votre projet + // Ajoutez cette tâche à votre build.gradle.kts tasks.register("printVersion") { doLast { From d8e758b84439a7b6a3ccdd301a95ff941a88f608 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 17:44:11 +0200 Subject: [PATCH 37/42] Feature: update project version to 0.1.3.17-SNAPSHOT and remove debug logging from saveData and loadData methods --- build.gradle.kts | 2 +- .../fr/sandro642/github/hook/HookManager.java | 30 ----------- .../fr/sandro642/github/utils/SerialMap.java | 50 +++---------------- 3 files changed, 8 insertions(+), 74 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 97cda18..3a551de 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { group = "fr.sandro642.github" -version = "0.1.3.16-SNAPSHOT" // Version de votre projet +version = "0.1.3.17-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts diff --git a/src/main/java/fr/sandro642/github/hook/HookManager.java b/src/main/java/fr/sandro642/github/hook/HookManager.java index 27cb92b..3e7b780 100644 --- a/src/main/java/fr/sandro642/github/hook/HookManager.java +++ b/src/main/java/fr/sandro642/github/hook/HookManager.java @@ -59,31 +59,13 @@ public ResourceType TypeManagerHook(ResourceType type) { * @param fileName */ public void saveData(HashMap map, String fileName) { - // DEBUG: Voir ce qui est passé à la sauvegarde - System.out.println("=== DÉBUT SAUVEGARDE ==="); - System.out.println("fileName: " + fileName); - System.out.println("map reçue: " + map); - System.out.println("map.size(): " + map.size()); - System.out.println("map.keySet(): " + map.keySet()); - - // Détailler chaque entrée - for (Map.Entry entry : map.entrySet()) { - String key = entry.getKey(); - Object value = entry.getValue(); - System.out.println("Clé: '" + key + "' -> Valeur: '" + value + "' (type: " + - (value != null ? value.getClass().getSimpleName() : "null") + ")"); - } - if (usedType == ResourceType.MC_RESOURCES) { Plugin pluginTarget = MCSupport.getInstance().getPlugin(); - System.out.println("usedType: " + usedType + " | pluginTarget: " + pluginTarget); SerialMap.getInstance().saveData(map, fileName, pluginTarget); } else { SerialMap.getInstance().saveData(map, fileName, null); } - - System.out.println("=== FIN SAUVEGARDE ==="); } /** @@ -96,24 +78,12 @@ public HashMap loadData(String fileName) { if (usedType == ResourceType.MC_RESOURCES) { Plugin pluginTarget = MCSupport.getInstance().getPlugin(); - System.out.println("usedType: " + usedType + " | pluginTarget: " + pluginTarget); - System.out.println("fileName demandé: " + fileName); - HashMap result = SerialMap.getInstance().loadData(fileName, pluginTarget); - // Debug: afficher le contenu récupéré - System.out.println("Données récupérées: " + result); - System.out.println("Taille de la HashMap: " + result.size()); - System.out.println("Clés disponibles: " + result.keySet()); - return result; } else { HashMap result = SerialMap.getInstance().loadData(fileName); - // Debug: afficher le contenu récupéré - System.out.println("Données récupérées (sans plugin): " + result); - System.out.println("Taille de la HashMap: " + result.size()); - return result; } } diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java index 662b577..b0702bf 100644 --- a/src/main/java/fr/sandro642/github/utils/SerialMap.java +++ b/src/main/java/fr/sandro642/github/utils/SerialMap.java @@ -45,39 +45,12 @@ public void saveData(HashMap map, String fileName, Plugin plugin file = new File(fileName); } - System.out.println("=== SAUVEGARDE SERIALMAP ==="); - System.out.println("Fichier destination: " + file.getAbsolutePath()); - System.out.println("Map à sauvegarder: " + map); - System.out.println("Taille de la map: " + map.size()); - - // Vérifier le contenu avant sauvegarde - for (Map.Entry entry : map.entrySet()) { - System.out.println("Avant sauvegarde - Clé: '" + entry.getKey() + - "' -> Valeur: '" + entry.getValue() + "'"); - } - ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file)); outputStream.writeObject(map); outputStream.close(); - - System.out.println("✓ Sauvegarde réussie dans " + fileName); - System.out.println("Taille du fichier créé: " + file.length() + " bytes"); - - // Test de relecture immédiate pour vérifier - System.out.println("=== TEST DE RELECTURE IMMÉDIATE ==="); - ObjectInputStream testInput = new ObjectInputStream(new FileInputStream(file)); - HashMap testMap = (HashMap) testInput.readObject(); - testInput.close(); - - System.out.println("Données relues immédiatement: " + testMap); - for (Map.Entry entry : testMap.entrySet()) { - System.out.println("Après relecture - Clé: '" + entry.getKey() + - "' -> Valeur: '" + entry.getValue() + "'"); - } - + //ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName); } catch (Exception e) { - System.out.println("✗ Erreur sauvegarde " + fileName); - e.printStackTrace(); + ConnectorAPI.Logger().ERROR("✗ Erreur sauvegarde " + fileName); } } @@ -97,14 +70,8 @@ public HashMap loadData(String fileName, Plugin plugin) { file = new File(fileName); } - // Debug: vérifier l'existence du fichier - System.out.println("Tentative de chargement du fichier: " + file.getAbsolutePath()); - System.out.println("Fichier existe: " + file.exists()); - System.out.println("Fichier lisible: " + file.canRead()); - System.out.println("Taille du fichier: " + file.length() + " bytes"); - if (!file.exists()) { - System.out.println("ERREUR: Le fichier n'existe pas!"); + ConnectorAPI.Logger().ERROR("ERREUR: Le fichier n'existe pas!"); return new HashMap<>(); } @@ -112,24 +79,21 @@ public HashMap loadData(String fileName, Plugin plugin) { HashMap data = (HashMap) inputStream.readObject(); inputStream.close(); - System.out.println("✓ Chargement réussi depuis " + fileName); - System.out.println("Données chargées: " + data); - return data; } catch (FileNotFoundException e) { - System.out.println("✗ Fichier introuvable: " + fileName); + ConnectorAPI.Logger().ERROR("✗ Fichier introuvable: " + fileName); e.printStackTrace(); return new HashMap<>(); } catch (IOException e) { - System.out.println("✗ Erreur de lecture du fichier: " + fileName); + ConnectorAPI.Logger().ERROR("✗ Erreur de lecture du fichier: " + fileName); e.printStackTrace(); return new HashMap<>(); } catch (ClassNotFoundException e) { - System.out.println("✗ Erreur de désérialisation: " + fileName); + ConnectorAPI.Logger().ERROR("✗ Erreur de désérialisation: " + fileName); e.printStackTrace(); return new HashMap<>(); } catch (Exception e) { - System.out.println("✗ Erreur générale lors du chargement: " + fileName); + ConnectorAPI.Logger().ERROR("✗ Erreur générale lors du chargement: " + fileName); e.printStackTrace(); return new HashMap<>(); } From e39b78b39f4d498004463f813d58015c9009143b Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 17:58:23 +0200 Subject: [PATCH 38/42] Feature: refactor data loading and saving in ApiClient, ConnectorAPI, JobGetInfos, and YamlUtils --- build.gradle.kts | 2 +- src/main/java/fr/sandro642/github/ConnectorAPI.java | 4 ++-- src/main/java/fr/sandro642/github/api/ApiClient.java | 4 ++-- .../java/fr/sandro642/github/jobs/JobGetInfos.java | 12 ++++++------ .../java/fr/sandro642/github/utils/YamlUtils.java | 8 ++++---- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3a551de..789e963 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { group = "fr.sandro642.github" -version = "0.1.3.17-SNAPSHOT" // Version de votre projet +version = "0.1.3.17.0-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 33b885d..09509f3 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -46,7 +46,7 @@ public static void initialize(ResourceType resourceType) { storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath()); } - ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); + //ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); // Charge l'URL depuis le fichier YAML String baseUrl = yamlUtils.getURL(); @@ -54,7 +54,7 @@ public static void initialize(ResourceType resourceType) { storeAndRetrieve.store.put(storeAndRetrieve.URL_KEY, baseUrl); } - ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); + //ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); } /** diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index f48bf62..f5da253 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -31,9 +31,9 @@ public class ApiClient { * Constructeur de ApiClient qui initialise WebClient avec l'URL de base. */ public ApiClient() { - HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); + //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); - String baseUrl = (String) storeLoad.get(ConnectorAPI.StoreAndRetrieve().URL_KEY); + String baseUrl = (String) ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY); if (baseUrl == null) { throw new RuntimeException("URL de base non trouvée. Assurez-vous d'avoir initialisé ConnectorAPI. "); diff --git a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java index 58177fa..90bfffb 100644 --- a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java +++ b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java @@ -153,7 +153,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str ConnectorAPI.StoreAndRetrieve().store.put("currentParams", params); } - ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); + //ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); ConnectorAPI.Logger().INFO("Route construite: " + fullRoute); @@ -171,11 +171,11 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str */ public ApiResponse getResponse() { try { - HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); + //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); - String route = (String) storeLoad.get("currentRoute"); - MethodType method = (MethodType) storeLoad.get("currentMethod"); - Map body = (Map) storeLoad.get("currentBody"); + String route = (String) ConnectorAPI.StoreAndRetrieve().store.get("currentRoute"); + MethodType method = (MethodType) ConnectorAPI.StoreAndRetrieve().store.get("currentMethod"); + Map body = (Map) ConnectorAPI.StoreAndRetrieve().store.get("currentBody"); if (route == null || method == null) { throw new RuntimeException("Route ou méthode non définie. Appelez getRoutes() d'abord."); @@ -204,7 +204,7 @@ public ApiResponse getResponse() { ConnectorAPI.StoreAndRetrieve().store.remove("currentMethod"); ConnectorAPI.StoreAndRetrieve().store.remove("currentBody"); - ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); + //ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); return response; diff --git a/src/main/java/fr/sandro642/github/utils/YamlUtils.java b/src/main/java/fr/sandro642/github/utils/YamlUtils.java index 9fa2a5d..9a95c0a 100644 --- a/src/main/java/fr/sandro642/github/utils/YamlUtils.java +++ b/src/main/java/fr/sandro642/github/utils/YamlUtils.java @@ -28,9 +28,9 @@ public class YamlUtils { * @return l'URL de base définie dans le fichier YAML, ou null si une erreur se produit */ public String getURL() { - HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); + //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); - String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; + String yamlFilePath = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; try (InputStream inputStream = Files.newInputStream(Paths.get(yamlFilePath))) { Yaml yaml = new Yaml(); @@ -47,9 +47,9 @@ public String getURL() { * @return */ public String getRoute(String routeName) { - HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); + //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); - String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; + String yamlFilePath = ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml"; try (InputStream inputStream = Files.newInputStream(Paths.get(yamlFilePath))) { Yaml yaml = new Yaml(); From faa627e1f84271832e1cb17f1694a81dfce278f8 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 18:00:05 +0200 Subject: [PATCH 39/42] Feature: add feature/clean/serial branch to work-jar.yml --- .github/workflows/work-jar.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/work-jar.yml b/.github/workflows/work-jar.yml index a77b4ea..7e1871a 100644 --- a/.github/workflows/work-jar.yml +++ b/.github/workflows/work-jar.yml @@ -4,6 +4,7 @@ on: branches: - feature/hook - feature/serializer + - feature/clean/serial permissions: contents: write pages: write From 39ad2158ea22176ba45b923bdc613254299443ff Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 18:11:42 +0200 Subject: [PATCH 40/42] Feature: clean up unused imports and comments in ApiClient, ConnectorAPI, JobGetInfos, MCSupport, StoreAndRetrieve, and YamlUtils --- build.gradle.kts | 2 +- .../fr/sandro642/github/ConnectorAPI.java | 20 --- .../fr/sandro642/github/api/ApiClient.java | 3 - .../fr/sandro642/github/hook/HookManager.java | 101 -------------- .../fr/sandro642/github/hook/MCSupport.java | 10 -- .../fr/sandro642/github/jobs/JobGetInfos.java | 7 - .../fr/sandro642/github/utils/SerialMap.java | 123 ------------------ .../github/utils/StoreAndRetrieve.java | 2 - .../fr/sandro642/github/utils/YamlUtils.java | 1 - 9 files changed, 1 insertion(+), 268 deletions(-) delete mode 100644 src/main/java/fr/sandro642/github/hook/HookManager.java delete mode 100644 src/main/java/fr/sandro642/github/utils/SerialMap.java diff --git a/build.gradle.kts b/build.gradle.kts index 789e963..b009377 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { group = "fr.sandro642.github" -version = "0.1.3.17.0-SNAPSHOT" // Version de votre projet +version = "0.1.3.17.1-SNAPSHOT" // Version de votre projet // Ajoutez cette tâche à votre build.gradle.kts diff --git a/src/main/java/fr/sandro642/github/ConnectorAPI.java b/src/main/java/fr/sandro642/github/ConnectorAPI.java index 09509f3..fc3fc48 100644 --- a/src/main/java/fr/sandro642/github/ConnectorAPI.java +++ b/src/main/java/fr/sandro642/github/ConnectorAPI.java @@ -1,11 +1,9 @@ package fr.sandro642.github; -import fr.sandro642.github.hook.HookManager; import fr.sandro642.github.hook.MCSupport; import fr.sandro642.github.jobs.JobGetInfos; import fr.sandro642.github.jobs.misc.ResourceType; import fr.sandro642.github.utils.Logger; -import fr.sandro642.github.utils.SerialMap; import fr.sandro642.github.utils.StoreAndRetrieve; import fr.sandro642.github.utils.YamlUtils; @@ -35,8 +33,6 @@ public static void initialize(ResourceType resourceType) { storeAndRetrieve = new StoreAndRetrieve(); yamlUtils = new YamlUtils(); - HookManager().TypeManagerHook(resourceType); - // Génère le template si nécessaire yamlUtils.generateTemplateIfNotExists(resourceType); @@ -46,15 +42,11 @@ public static void initialize(ResourceType resourceType) { storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath()); } - //ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); - // Charge l'URL depuis le fichier YAML String baseUrl = yamlUtils.getURL(); if (baseUrl != null) { storeAndRetrieve.store.put(storeAndRetrieve.URL_KEY, baseUrl); } - - //ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml"); } /** @@ -101,16 +93,4 @@ public static YamlUtils YamlUtils() { public static MCSupport MCSupport() { return MCSupport.getInstance(); } - - /** - * Retourne une instance de SerialMap pour la gestion des données sérialisées - * @return SerialMap - */ - public static SerialMap SerialMap() { - return SerialMap.getInstance(); - } - - public static HookManager HookManager() { - return HookManager.getInstance(); - } } diff --git a/src/main/java/fr/sandro642/github/api/ApiClient.java b/src/main/java/fr/sandro642/github/api/ApiClient.java index f5da253..0bef9dc 100644 --- a/src/main/java/fr/sandro642/github/api/ApiClient.java +++ b/src/main/java/fr/sandro642/github/api/ApiClient.java @@ -7,7 +7,6 @@ import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; -import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; @@ -31,8 +30,6 @@ public class ApiClient { * Constructeur de ApiClient qui initialise WebClient avec l'URL de base. */ public ApiClient() { - //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); - String baseUrl = (String) ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY); if (baseUrl == null) { diff --git a/src/main/java/fr/sandro642/github/hook/HookManager.java b/src/main/java/fr/sandro642/github/hook/HookManager.java deleted file mode 100644 index 3e7b780..0000000 --- a/src/main/java/fr/sandro642/github/hook/HookManager.java +++ /dev/null @@ -1,101 +0,0 @@ -package fr.sandro642.github.hook; - -import fr.sandro642.github.jobs.misc.ResourceType; -import fr.sandro642.github.utils.SerialMap; -import org.bukkit.plugin.Plugin; - -import java.util.HashMap; -import java.util.Map; - -/** - * Classe HookManager pour gérer les hooks dans le projet. - * - * @author Sandro642 - * @version 1.0 - */ - -public class HookManager { - /** - * Instance de la classe HookManager. - */ - private static HookManager instance; - - /** - * Constructeur privé pour empêcher l'instanciation directe. - */ - private HookManager() { - // Constructeur privé pour le pattern Singleton - } - - /** - * Type de ressource utilisé par le HookManager. - */ - private ResourceType usedType; - - /** - * Obtient le type de ressource utilisé par le HookManager. - * - * @return Le type de ressource utilisé. - */ - public ResourceType getUsedType() { - return usedType; - } - - /** - * Méthode pour choisir le type de ressource utilisé par le HookManager. - * - * @param type - * @return - */ - public ResourceType TypeManagerHook(ResourceType type) { - this.usedType = type; - return this.usedType; - } - - /** - * Méthode pour sauvegarder une HashMap dans un fichier. - * - * @param map - * @param fileName - */ - public void saveData(HashMap map, String fileName) { - if (usedType == ResourceType.MC_RESOURCES) { - Plugin pluginTarget = MCSupport.getInstance().getPlugin(); - - SerialMap.getInstance().saveData(map, fileName, pluginTarget); - } else { - SerialMap.getInstance().saveData(map, fileName, null); - } - } - - /** - * Méthode pour charger une HashMap depuis un fichier. - * - * @param fileName - * @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur. - */ - public HashMap loadData(String fileName) { - if (usedType == ResourceType.MC_RESOURCES) { - Plugin pluginTarget = MCSupport.getInstance().getPlugin(); - - HashMap result = SerialMap.getInstance().loadData(fileName, pluginTarget); - - return result; - } else { - HashMap result = SerialMap.getInstance().loadData(fileName); - - return result; - } - } - - /** - * Méthode pour obtenir l'instance unique de HookManager. - * @return - */ - public static HookManager getInstance() { - if (instance == null) { - instance = new HookManager(); - } - return instance; - } -} diff --git a/src/main/java/fr/sandro642/github/hook/MCSupport.java b/src/main/java/fr/sandro642/github/hook/MCSupport.java index 98f1c79..45c8850 100644 --- a/src/main/java/fr/sandro642/github/hook/MCSupport.java +++ b/src/main/java/fr/sandro642/github/hook/MCSupport.java @@ -1,6 +1,5 @@ package fr.sandro642.github.hook; -import fr.sandro642.github.ConnectorAPI; import org.bukkit.plugin.Plugin; /** @@ -37,7 +36,6 @@ private MCSupport() { */ public boolean isMCProject() { try { - ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml"); String fileLocation = (String) fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().store.get(fr.sandro642.github.ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY); return fileLocation != null && fileLocation.contains(fr.sandro642.github.jobs.misc.ResourceType.MC_RESOURCES.getPath()); @@ -60,13 +58,8 @@ public Plugin setPluginVariable(Plugin plugin) { if (plugin == null) { throw new IllegalArgumentException("Plugin cannot be null."); } - - //if (isMCProject()) { this.pluginSingleton = plugin; return this.pluginSingleton; - //} else { - // throw new IllegalStateException("This method can only be called in a Minecraft project."); - //} } /** @@ -77,9 +70,6 @@ public Plugin setPluginVariable(Plugin plugin) { * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft ou si le plugin n'est pas initialisé. */ public String getPluginPath() { - //if (!isMCProject()) { - //throw new IllegalStateException("This method can only be called in a Minecraft project."); - //} if (pluginSingleton == null) { throw new IllegalStateException("Plugin variable is not set. Please call setPluginVariable first."); diff --git a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java index 90bfffb..181fd2e 100644 --- a/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java +++ b/src/main/java/fr/sandro642/github/jobs/JobGetInfos.java @@ -7,7 +7,6 @@ import fr.sandro642.github.jobs.misc.VersionType; import fr.sandro642.github.utils.YamlUtils; -import java.util.HashMap; import java.util.Map; /** @@ -30,7 +29,6 @@ public class JobGetInfos { /** * Constructeur de JobGetInfos qui initialise ApiClient et YamlUtils. - * Utilise ResourceType.MAIN_RESOURCES pour le type de ressource par défaut. */ public JobGetInfos() { this.apiClient = new ApiClient(); @@ -153,8 +151,6 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str ConnectorAPI.StoreAndRetrieve().store.put("currentParams", params); } - //ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); - ConnectorAPI.Logger().INFO("Route construite: " + fullRoute); } catch (Exception e) { @@ -171,7 +167,6 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str */ public ApiResponse getResponse() { try { - //HashMap storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); String route = (String) ConnectorAPI.StoreAndRetrieve().store.get("currentRoute"); MethodType method = (MethodType) ConnectorAPI.StoreAndRetrieve().store.get("currentMethod"); @@ -204,8 +199,6 @@ public ApiResponse getResponse() { ConnectorAPI.StoreAndRetrieve().store.remove("currentMethod"); ConnectorAPI.StoreAndRetrieve().store.remove("currentBody"); - //ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml"); - return response; } catch (Exception e) { diff --git a/src/main/java/fr/sandro642/github/utils/SerialMap.java b/src/main/java/fr/sandro642/github/utils/SerialMap.java deleted file mode 100644 index b0702bf..0000000 --- a/src/main/java/fr/sandro642/github/utils/SerialMap.java +++ /dev/null @@ -1,123 +0,0 @@ -package fr.sandro642.github.utils; - -import fr.sandro642.github.ConnectorAPI; -import org.bukkit.plugin.Plugin; - -import java.io.*; -import java.util.HashMap; -import java.util.Map; - -/** - * Classe utilitaire pour gérer les cartes de sérialisation. - * Actuellement vide, mais peut être étendue pour inclure des méthodes de sérialisation/désérialisation. - * - * @author Sandro642 - * @version 1.0 - */ - -public class SerialMap { - - /** - * Instance de la classe serialMap. - */ - private static SerialMap instance; - - /** - * Constructeur privé pour empêcher l'instanciation directe. - */ - private SerialMap() { - // Constructeur privé pour le pattern Singleton - } - - /** - * Méthode pour sauvegarder une HashMap dans un fichier. - * - * @param map La HashMap à sauvegarder. - * @param fileName Le nom du fichier dans lequel la HashMap sera sauvegardée. - */ - public void saveData(HashMap map, String fileName, Plugin plugin) { - try { - File file; - - if (plugin != null) { - file = new File(plugin.getDataFolder(), fileName); - } else { - file = new File(fileName); - } - - ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file)); - outputStream.writeObject(map); - outputStream.close(); - //ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName); - } catch (Exception e) { - ConnectorAPI.Logger().ERROR("✗ Erreur sauvegarde " + fileName); - } - } - - /** - * Méthode pour charger une HashMap depuis un fichier. - * - * @param fileName Le nom du fichier à partir duquel la HashMap sera chargée. - * @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur. - */ - public HashMap loadData(String fileName, Plugin plugin) { - try { - File file; - - if (plugin != null) { - file = new File(plugin.getDataFolder(), fileName); - } else { - file = new File(fileName); - } - - if (!file.exists()) { - ConnectorAPI.Logger().ERROR("ERREUR: Le fichier n'existe pas!"); - return new HashMap<>(); - } - - ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file)); - HashMap data = (HashMap) inputStream.readObject(); - inputStream.close(); - - return data; - } catch (FileNotFoundException e) { - ConnectorAPI.Logger().ERROR("✗ Fichier introuvable: " + fileName); - e.printStackTrace(); - return new HashMap<>(); - } catch (IOException e) { - ConnectorAPI.Logger().ERROR("✗ Erreur de lecture du fichier: " + fileName); - e.printStackTrace(); - return new HashMap<>(); - } catch (ClassNotFoundException e) { - ConnectorAPI.Logger().ERROR("✗ Erreur de désérialisation: " + fileName); - e.printStackTrace(); - return new HashMap<>(); - } catch (Exception e) { - ConnectorAPI.Logger().ERROR("✗ Erreur générale lors du chargement: " + fileName); - e.printStackTrace(); - return new HashMap<>(); - } - } - - /** - * Méthode pour charger une HashMap depuis un fichier sans spécifier de plugin. - * - * @param fileName Le nom du fichier à partir duquel la HashMap sera chargée. - * @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur. - */ - public HashMap loadData(String fileName) { - return loadData(fileName, null); - } - - /** - * Méthode pour obtenir l'instance unique de serialMap. - * - * @return L'instance unique de serialMap. - */ - public static SerialMap getInstance() { - if (instance == null) { - instance = new SerialMap(); - } - return instance; - } -} diff --git a/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java b/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java index 48ff66c..c182776 100644 --- a/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java +++ b/src/main/java/fr/sandro642/github/utils/StoreAndRetrieve.java @@ -1,8 +1,6 @@ package fr.sandro642.github.utils; import java.util.HashMap; -import java.util.concurrent.ConcurrentHashMap; -import java.util.Map; /** * StoreAndRetrieve est une classe utilitaire pour stocker et récupérer des valeurs associées à des clés. diff --git a/src/main/java/fr/sandro642/github/utils/YamlUtils.java b/src/main/java/fr/sandro642/github/utils/YamlUtils.java index 9a95c0a..750163f 100644 --- a/src/main/java/fr/sandro642/github/utils/YamlUtils.java +++ b/src/main/java/fr/sandro642/github/utils/YamlUtils.java @@ -8,7 +8,6 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.HashMap; import java.util.Map; /** From 9456100af50fc85da4c532520db3017a7219254c Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 18:21:44 +0200 Subject: [PATCH 41/42] Feature: remove unused test methods and clean up main method in Main.java --- .../java/fr/sandro642/github/test/Main.java | 46 +------------------ 1 file changed, 1 insertion(+), 45 deletions(-) diff --git a/src/test/java/fr/sandro642/github/test/Main.java b/src/test/java/fr/sandro642/github/test/Main.java index b77b375..2f76a31 100644 --- a/src/test/java/fr/sandro642/github/test/Main.java +++ b/src/test/java/fr/sandro642/github/test/Main.java @@ -26,26 +26,8 @@ public void getUrl() { System.out.println(ConnectorAPI.YamlUtils().getURL()); } - @Test - public void outGetURL() { - HashMap data = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml"); - - - //System.out.println(data.get(ConnectorAPI.StoreAndRetrieve().URL_KEY)); - - System.out.println(ConnectorAPI.YamlUtils().getURL()); - } - - @Test - public void getRoute() { - ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); - - - } - public static void main(String[] args) { - // Initialisation du ConnectorAPI - //ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); + ConnectorAPI.initialize(ResourceType.TEST_RESOURCES); try { // Exemple d'utilisation comme demandé @@ -73,30 +55,4 @@ public static void main(String[] args) { } } - @Test - public void saveDataMap() { - HashMap data = new HashMap<>(); - - data.put("version", "1.0.0"); - data.put("status", "ok"); - - ConnectorAPI.HookManager().saveData(data, "test_map.yml"); - } - - @Test - public void loadDataMap() { - HashMap data = ConnectorAPI.HookManager().loadData("test_map.yml"); - - System.out.println("data version: " + data.get("version")); - } - - @Test - public void resetDataMap() { - HashMap data = ConnectorAPI.HookManager().loadData("test_map.yml"); - - data.clear(); - - ConnectorAPI.HookManager().saveData(data, "test_map.yml"); - } - } From 6cf1a20bddbee94a8a26c5620710fd0c70b5fb82 Mon Sep 17 00:00:00 2001 From: Sandro Date: Thu, 10 Jul 2025 18:23:15 +0200 Subject: [PATCH 42/42] Feature: update branch triggers in work-jar.yml to include main branch --- .github/workflows/work-jar.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/work-jar.yml b/.github/workflows/work-jar.yml index 7e1871a..bdb8441 100644 --- a/.github/workflows/work-jar.yml +++ b/.github/workflows/work-jar.yml @@ -2,9 +2,8 @@ name: Publish JAR to GitHub Pages on: push: branches: + - main - feature/hook - - feature/serializer - - feature/clean/serial permissions: contents: write pages: write