Skip to content

Commit 1c2c00c

Browse files
committed
Refactor Cluster and Node handling; update command logic for location management
1 parent f7cabf0 commit 1c2c00c

6 files changed

Lines changed: 87 additions & 11 deletions

File tree

src/main/java/io/nodelink/server/NodeLink.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.nodelink.server;
22

3+
import io.nodelink.server.app.cluster.ClusterStarter;
34
import io.nodelink.server.app.node.NodeStarter;
45
import io.nodelink.server.log.Logger;
56
import io.nodelink.server.update.Updater;
@@ -58,6 +59,10 @@ public NodeStarter getNodeStarter() {
5859
return NodeStarter.getNodeStarterSingleton();
5960
}
6061

62+
public ClusterStarter getClusterStarter() {
63+
return ClusterStarter.getClusterStarterSingleton();
64+
}
65+
6166
public StoreData getStoreData() {
6267
return StoreData.getStoreDataSingleton();
6368
}

src/main/java/io/nodelink/server/NodeLinkHelper.java

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.nodelink.server;
22

3+
import io.nodelink.server.app.data.BONE_LOCATION;
4+
import io.nodelink.server.app.data.CLUSTER_LOCATION;
35
import io.nodelink.server.command.CommandDispatcher;
46
import io.nodelink.server.command.CommandLogics;
57
import io.nodelink.server.command.CommandRegistry;
@@ -95,6 +97,7 @@ private void initTerminal() {
9597
String command = reader.readLine(prompt);
9698

9799
if (command == null || command.trim().isEmpty()) {
100+
terminal.writer().println("\n");
98101
continue;
99102
}
100103

@@ -103,11 +106,9 @@ private void initTerminal() {
103106

104107
if (!handled) {
105108
terminal.writer().println("Commande inconnue : " + command);
106-
terminal.writer().println("\n");
107109
}
108110
} catch (Exception e) {
109111
terminal.writer().println("Erreur : La commande '" + command + "' n'est pas reconnue.");
110-
terminal.writer().println("\n");
111112
}
112113

113114
terminal.writer().flush();
@@ -149,6 +150,43 @@ public void fullClearAndRefresh(Terminal terminal) {
149150
terminal.flush();
150151
}
151152

153+
private void updateLocationDisplay() {
154+
Object value = NodeLink.getInstance().getStoreData().get(NodeLink.getInstance().getStoreData().WHICH_TYPE);
155+
156+
if (value == null) {
157+
terminal.writer().println(GREEN + " ● Type: " + RESET + "Not set...");
158+
} else if ((boolean) value) {
159+
terminal.writer().println(GREEN + " ● Type: " + RESET + "Cluster");
160+
} else {
161+
terminal.writer().println(GREEN + " ● Type: " + RESET + "Bone");
162+
}
163+
164+
if (value != null && (boolean) value) {
165+
Object clusterLocationValue = NodeLink.getInstance().getStoreData().get(NodeLink.getInstance().getStoreData().CLUSTER_LOCATION);
166+
if (clusterLocationValue != null) {
167+
CLUSTER_LOCATION clusterLocation = CLUSTER_LOCATION.valueOf(clusterLocationValue.toString());
168+
169+
terminal.writer().println(GREEN + " ● Cluster Region: " + RESET + clusterLocation.name() + " |" + " (" + "https://1." + clusterLocation.getLocation() + ".nodelinkapp.xyz" + ")");
170+
} else {
171+
terminal.writer().println(GREEN + " ● Cluster Region: " + RESET + "Not set...");
172+
}
173+
} else if (value != null && !(boolean) value) {
174+
Object boneLocationValue = NodeLink.getInstance().getStoreData().get(NodeLink.getInstance().getStoreData().BONE_LOCATION);
175+
if (boneLocationValue != null) {
176+
BONE_LOCATION boneLocation = BONE_LOCATION.valueOf(boneLocationValue.toString());
177+
178+
terminal.writer().println(GREEN + " ● Bone Location: " + RESET + boneLocation.name() + " |" + " (" + "https://1." + boneLocation.getLocation() + ".nodelinkapp.xyz" + ")");
179+
} else {
180+
terminal.writer().println(GREEN + " ● Bone Location: " + RESET + "Not set...");
181+
}
182+
}
183+
184+
Object locationValue = NodeLink.getInstance().getStoreData().get(NodeLink.getInstance().getStoreData().CLUSTER_LOCATION);
185+
186+
terminal.writer().flush();
187+
}
188+
189+
152190
private void drawStaticInterface(Terminal terminal) {
153191
terminal.puts(Capability.cursor_address, 0, 0);
154192

@@ -174,11 +212,8 @@ private void drawStaticInterface(Terminal terminal) {
174212
terminal.writer().println(GREEN + " ● Status: " + RESET + YELLOW + PRODUCT + RESET);
175213
terminal.writer().println(GREEN + " ● Version: " + RESET + Version.VERSION);
176214

177-
// if ((boolean) NodeLink.getInstance().getStoreData().get(NodeLink.getInstance().getStoreData().WHICH_TYPE)) {
178-
// terminal.writer().println(GREEN + " ● Region: " + RESET + "Cluster");
179-
// } else {
180-
// terminal.writer().println(GREEN + " ● LOCATION: " + RESET + "Bone");
181-
// }
215+
updateLocationDisplay();
216+
182217

183218
int currentLine = logoHeight + 4;
184219
for (int i = currentLine; i < RESERVED_ROWS - 1; i++) {

src/main/java/io/nodelink/server/app/cluster/ClusterStarter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ public void startServer() {
2828
config.router.contextPath = "/cluster";
2929
}).start(8080);
3030

31-
RouteHandler.registerAllRoutes(app, "io.nodelink.server.app.node.api.routes");
31+
RouteHandler.registerAllRoutes(app, "io.nodelink.server.app.cluster.api.routes");
3232

33-
NodeLink.getInstance().getLogger().SUCCESS("Node API Server started");
33+
NodeLink.getInstance().getLogger().SUCCESS("Cluster API Server started");
3434
})
3535
.subscribeOn(Schedulers.boundedElastic())
3636
.subscribe();
@@ -40,7 +40,7 @@ public Javalin getApp() {
4040
return app;
4141
}
4242

43-
public static ClusterStarter getNodeStarterSingleton() {
43+
public static ClusterStarter getClusterStarterSingleton() {
4444
return INSTANCE;
4545
}
4646
}

src/main/java/io/nodelink/server/command/CommandLogics.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,17 @@ public CommandLogics(CommandDispatcher dispatcher, LineReader reader, Terminal t
2929
NodeLink.getHelper().updateStatus("Cluster");
3030
NodeLink.getInstance().getStoreData().put(NodeLink.getInstance().getStoreData().WHICH_TYPE, true);
3131

32-
terminal.writer().println("Mode cluster activé");
32+
NodeLink.getHelper().fullClearAndRefresh(terminal);
33+
34+
NodeLink.getInstance().getClusterStarter().startServer();
3335
});
3436

3537
dispatcher.registerHandler(CommandsEnum.SERVICE_SET_BONE, tokens -> {
3638
NodeLink.getHelper().updateStatus("Bone");
3739
NodeLink.getInstance().getStoreData().put(NodeLink.getInstance().getStoreData().WHICH_TYPE, false);
3840

41+
NodeLink.getHelper().fullClearAndRefresh(terminal);
42+
3943
NodeLink.getInstance().getNodeStarter().startServer();
4044
});
4145

@@ -46,6 +50,13 @@ public CommandLogics(CommandDispatcher dispatcher, LineReader reader, Terminal t
4650
});
4751

4852
dispatcher.registerHandler(CommandsEnum.SERVICE_SET_BONE_LOCATION, tokens -> {
53+
Object value = NodeLink.getInstance().getStoreData().get(NodeLink.getInstance().getStoreData().WHICH_TYPE);
54+
55+
if (value == null || (boolean) value) {
56+
terminal.writer().println("Erreur : Mode Bone non activé");
57+
return;
58+
}
59+
4960
if (tokens.length < 5) {
5061
terminal.writer().println("Usage: service set bone location <location>");
5162
return;
@@ -55,12 +66,20 @@ public CommandLogics(CommandDispatcher dispatcher, LineReader reader, Terminal t
5566
try {
5667
BONE_LOCATION boneLocation = BONE_LOCATION.valueOf(locationInput);
5768
terminal.writer().println("Emplacement du bone défini sur : " + boneLocation.name());
69+
NodeLink.getInstance().getStoreData().put(NodeLink.getInstance().getStoreData().BONE_LOCATION, boneLocation.name());
5870
} catch (IllegalArgumentException e) {
5971
terminal.writer().println("Emplacement invalide. Veuillez choisir parmi les emplacements disponibles.");
6072
}
6173
});
6274

6375
dispatcher.registerHandler(CommandsEnum.SERVICE_SET_CLUSTER_LOCATION, tokens -> {
76+
Object value = NodeLink.getInstance().getStoreData().get(NodeLink.getInstance().getStoreData().WHICH_TYPE);
77+
78+
if (value == null || !(boolean) value) {
79+
terminal.writer().println("Erreur : Mode cluster non activé");
80+
return;
81+
}
82+
6483
if (tokens.length < 5) {
6584
terminal.writer().println("Usage: service set cluster location <location>");
6685
return;
@@ -70,6 +89,7 @@ public CommandLogics(CommandDispatcher dispatcher, LineReader reader, Terminal t
7089
try {
7190
CLUSTER_LOCATION clusterLocation = CLUSTER_LOCATION.valueOf(locationInput);
7291
terminal.writer().println("Emplacement du cluster défini sur : " + clusterLocation.name());
92+
NodeLink.getInstance().getStoreData().put(NodeLink.getInstance().getStoreData().CLUSTER_LOCATION, clusterLocation.name());
7393
} catch (IllegalArgumentException e) {
7494
terminal.writer().println("Emplacement invalide. Veuillez choisir parmi les emplacements disponibles.");
7595
}

src/main/java/io/nodelink/server/utils/StoreData.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public class StoreData {
99
public final HashMap<String, Object> DATA = new HashMap<>();
1010

1111
public final String WHICH_TYPE = "which_type";
12+
public final String CLUSTER_LOCATION = "cluster_location";
13+
public final String BONE_LOCATION = "bone_location";
1214

1315
public void put(String key, Object value) {
1416
DATA.put(key, value);

src/main/resources/logback.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
4+
<encoder>
5+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
6+
</encoder>
7+
</appender>
8+
9+
<root level="INFO">
10+
<appender-ref ref="CONSOLE"/>
11+
</root>
12+
13+
<logger name="org.reflections" level="WARN"/>
14+
</configuration>

0 commit comments

Comments
 (0)