Skip to content

Commit 0e8a496

Browse files
committed
Feature: refactor data management to use HookManager for loading and saving data
1 parent af822d5 commit 0e8a496

7 files changed

Lines changed: 139 additions & 20 deletions

File tree

src/main/java/fr/sandro642/github/ConnectorAPI.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package fr.sandro642.github;
22

3+
import fr.sandro642.github.hook.HookManager;
34
import fr.sandro642.github.hook.MCSupport;
45
import fr.sandro642.github.jobs.JobGetInfos;
56
import fr.sandro642.github.jobs.misc.ResourceType;
@@ -34,20 +35,22 @@ public static void initialize(ResourceType resourceType) {
3435
storeAndRetrieve = new StoreAndRetrieve();
3536
yamlUtils = new YamlUtils();
3637

38+
HookManager().TypeManagerHook(resourceType);
39+
3740
// Génère le template si nécessaire
3841
yamlUtils.generateTemplateIfNotExists(resourceType);
3942

4043
storeAndRetrieve.store.put(storeAndRetrieve.FILE_LOCATION_KEY, resourceType.getPath());
4144

42-
ConnectorAPI.SerialMap().saveData(storeAndRetrieve.store, "store_and_retrieve.yml");
45+
ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml");
4346

4447
// Charge l'URL depuis le fichier YAML
4548
String baseUrl = yamlUtils.getURL();
4649
if (baseUrl != null) {
4750
storeAndRetrieve.store.put(storeAndRetrieve.URL_KEY, baseUrl);
4851
}
4952

50-
ConnectorAPI.SerialMap().saveData(storeAndRetrieve.store, "store_and_retrieve.yml");
53+
ConnectorAPI.HookManager().saveData(storeAndRetrieve.store, "store_and_retrieve.yml");
5154
}
5255

5356
/**
@@ -102,4 +105,8 @@ public static MCSupport MCSupport() {
102105
public static SerialMap SerialMap() {
103106
return SerialMap.getInstance();
104107
}
108+
109+
public static HookManager HookManager() {
110+
return HookManager.getInstance();
111+
}
105112
}

src/main/java/fr/sandro642/github/api/ApiClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class ApiClient {
3131
* Constructeur de ApiClient qui initialise WebClient avec l'URL de base.
3232
*/
3333
public ApiClient() {
34-
HashMap<String, Object> storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml");
34+
HashMap<String, Object> storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml");
3535

3636
String baseUrl = (String) storeLoad.get(ConnectorAPI.StoreAndRetrieve().URL_KEY);
3737

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package fr.sandro642.github.hook;
2+
3+
import fr.sandro642.github.jobs.misc.ResourceType;
4+
import fr.sandro642.github.utils.SerialMap;
5+
import org.bukkit.plugin.Plugin;
6+
7+
import java.util.HashMap;
8+
9+
/**
10+
* Classe HookManager pour gérer les hooks dans le projet.
11+
*
12+
* @author Sandro642
13+
* @version 1.0
14+
*/
15+
16+
public class HookManager {
17+
/**
18+
* Instance de la classe HookManager.
19+
*/
20+
private static HookManager instance;
21+
22+
/**
23+
* Constructeur privé pour empêcher l'instanciation directe.
24+
*/
25+
private HookManager() {
26+
// Constructeur privé pour le pattern Singleton
27+
}
28+
29+
/**
30+
* Type de ressource utilisé par le HookManager.
31+
*/
32+
private ResourceType usedType;
33+
34+
/**
35+
* Méthode pour choisir le type de ressource utilisé par le HookManager.
36+
*
37+
* @param type
38+
* @return
39+
*/
40+
public ResourceType TypeManagerHook(ResourceType type) {
41+
this.usedType = type;
42+
return this.usedType;
43+
}
44+
45+
/**
46+
* Méthode pour sauvegarder une HashMap dans un fichier.
47+
*
48+
* @param map
49+
* @param fileName
50+
*/
51+
public void saveData(HashMap<String, Object> map, String fileName) {
52+
if (usedType == ResourceType.MC_RESOURCES) {
53+
Plugin pluginTarget = MCSupport.getInstance().getPlugin();
54+
55+
SerialMap.getInstance().saveData(map, fileName, pluginTarget);
56+
} else {
57+
SerialMap.getInstance().saveData(map, fileName);
58+
}
59+
}
60+
61+
/**
62+
* Méthode pour charger une HashMap depuis un fichier.
63+
*
64+
* @param fileName
65+
*/
66+
public HashMap<String, Object> loadData(String fileName) {
67+
if (usedType == ResourceType.MC_RESOURCES) {
68+
Plugin pluginTarget = MCSupport.getInstance().getPlugin();
69+
return SerialMap.getInstance().loadData(fileName, pluginTarget);
70+
} else {
71+
return SerialMap.getInstance().loadData(fileName);
72+
}
73+
}
74+
75+
/**
76+
* Méthode pour obtenir l'instance unique de HookManager.
77+
* @return
78+
*/
79+
public static HookManager getInstance() {
80+
if (instance == null) {
81+
instance = new HookManager();
82+
}
83+
return instance;
84+
}
85+
}

src/main/java/fr/sandro642/github/jobs/JobGetInfos.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str
153153
ConnectorAPI.StoreAndRetrieve().store.put("currentParams", params);
154154
}
155155

156-
ConnectorAPI.SerialMap().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml");
156+
ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml");
157157

158158
ConnectorAPI.Logger().INFO("Route construite: " + fullRoute);
159159

@@ -171,7 +171,7 @@ public JobGetInfos getRoutes(VersionType versionType, MethodType methodType, Str
171171
*/
172172
public ApiResponse<Void> getResponse() {
173173
try {
174-
HashMap<String, Object> storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml");
174+
HashMap<String, Object> storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml");
175175

176176
String route = (String) storeLoad.get("currentRoute");
177177
MethodType method = (MethodType) storeLoad.get("currentMethod");
@@ -204,7 +204,7 @@ public ApiResponse<Void> getResponse() {
204204
ConnectorAPI.StoreAndRetrieve().store.remove("currentMethod");
205205
ConnectorAPI.StoreAndRetrieve().store.remove("currentBody");
206206

207-
ConnectorAPI.SerialMap().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml");
207+
ConnectorAPI.HookManager().saveData(ConnectorAPI.StoreAndRetrieve().store, "store_and_retrieve.yml");
208208

209209
return response;
210210

src/main/java/fr/sandro642/github/utils/SerialMap.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package fr.sandro642.github.utils;
22

33
import fr.sandro642.github.ConnectorAPI;
4+
import org.bukkit.plugin.Plugin;
45

5-
import java.io.FileInputStream;
6-
import java.io.FileOutputStream;
7-
import java.io.ObjectInputStream;
8-
import java.io.ObjectOutputStream;
6+
import java.io.*;
97
import java.util.HashMap;
108

119
/**
@@ -36,9 +34,17 @@ private SerialMap() {
3634
* @param map La HashMap à sauvegarder.
3735
* @param fileName Le nom du fichier dans lequel la HashMap sera sauvegardée.
3836
*/
39-
public void saveData(HashMap<String, Object> map, String fileName) {
37+
public void saveData(HashMap<String, Object> map, String fileName, Plugin plugin) {
4038
try {
41-
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(fileName));
39+
File file;
40+
41+
if (plugin != null) {
42+
file = new File(plugin.getDataFolder() + fileName);
43+
} else {
44+
file = new File(fileName);
45+
}
46+
47+
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
4248
outputStream.writeObject(map);
4349
outputStream.close();
4450
//ConnectorAPI.Logger().INFO("✓ Sauvegarde réussie dans " + fileName);
@@ -47,15 +53,27 @@ public void saveData(HashMap<String, Object> map, String fileName) {
4753
}
4854
}
4955

56+
public void saveData(HashMap<String, Object> map, String FileName) {
57+
saveData(map, FileName, null);
58+
}
59+
5060
/**
5161
* Méthode pour charger une HashMap depuis un fichier.
5262
*
5363
* @param fileName Le nom du fichier à partir duquel la HashMap sera chargée.
5464
* @return La HashMap chargée, ou une nouvelle HashMap vide en cas d'erreur.
5565
*/
56-
public HashMap<String, Object> loadData(String fileName) {
66+
public HashMap<String, Object> loadData(String fileName, Plugin plugin) {
5767
try {
58-
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(fileName));
68+
File file;
69+
70+
if (plugin != null) {
71+
file = new File(plugin.getDataFolder() + fileName);
72+
} else {
73+
file = new File(fileName);
74+
}
75+
76+
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file));
5977
HashMap<String, Object> data = (HashMap<String, Object>) inputStream.readObject();
6078
inputStream.close();
6179
//ConnectorAPI.Logger().INFO("✓ Chargement réussi depuis " + fileName);
@@ -67,6 +85,10 @@ public HashMap<String, Object> loadData(String fileName) {
6785
}
6886
}
6987

88+
public HashMap<String, Object> loadData(String fileName) {
89+
return loadData(fileName, null);
90+
}
91+
7092
/**
7193
* Méthode pour obtenir l'instance unique de serialMap.
7294
*

src/main/java/fr/sandro642/github/utils/YamlUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class YamlUtils {
2828
* @return l'URL de base définie dans le fichier YAML, ou null si une erreur se produit
2929
*/
3030
public String getURL() {
31-
HashMap<String, Object> storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml");
31+
HashMap<String, Object> storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml");
3232

3333
String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml";
3434

@@ -47,7 +47,7 @@ public String getURL() {
4747
* @return
4848
*/
4949
public String getRoute(String routeName) {
50-
HashMap<String, Object> storeLoad = ConnectorAPI.SerialMap().loadData("store_and_retrieve.yml");
50+
HashMap<String, Object> storeLoad = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml");
5151

5252
String yamlFilePath = storeLoad.get(ConnectorAPI.StoreAndRetrieve().FILE_LOCATION_KEY) + "/infos.yml";
5353

src/test/java/fr/sandro642/github/test/Main.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@ public void getUrl() {
2828

2929
@Test
3030
public void outGetURL() {
31-
System.out.println(ConnectorAPI.StoreAndRetrieve().store.get(ConnectorAPI.StoreAndRetrieve().URL_KEY));
31+
HashMap<String, Object> data = ConnectorAPI.HookManager().loadData("store_and_retrieve.yml");
32+
33+
34+
//System.out.println(data.get(ConnectorAPI.StoreAndRetrieve().URL_KEY));
35+
36+
System.out.println(ConnectorAPI.YamlUtils().getURL());
3237
}
3338

3439
@Test
@@ -75,19 +80,19 @@ public void saveDataMap() {
7580
data.put("version", "1.0.0");
7681
data.put("status", "ok");
7782

78-
ConnectorAPI.SerialMap().saveData(data, "test_map.yml");
83+
ConnectorAPI.HookManager().saveData(data, "test_map.yml");
7984
}
8085

8186
@Test
8287
public void loadDataMap() {
83-
HashMap<String, Object> data = ConnectorAPI.SerialMap().loadData("test_map.yml");
88+
HashMap<String, Object> data = ConnectorAPI.HookManager().loadData("test_map.yml");
8489

8590
System.out.println("data version: " + data.get("version"));
8691
}
8792

8893
@Test
8994
public void resetDataMap() {
90-
HashMap<String, Object> data = ConnectorAPI.SerialMap().loadData("test_map.yml");
95+
HashMap<String, Object> data = ConnectorAPI.HookManager().loadData("test_map.yml");
9196

9297
data.clear();
9398

0 commit comments

Comments
 (0)