From 82582dae83327ac3c0792f468c0ae1dc3e7baf20 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 15 Mar 2026 18:41:57 +0100 Subject: [PATCH] Add: UserFactory to create new users and resolve name conflicts --- .../server/domain/user/UserFactory.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserFactory.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserFactory.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserFactory.java new file mode 100644 index 0000000..cd94ae2 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/domain/user/UserFactory.java @@ -0,0 +1,28 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.domain.user; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; + +public class UserFactory { + private final UserRegistry registry; + + public UserFactory(UserRegistry registry) { + this.registry = registry; + } + + public User create(String desiredName, SessionId sessionId) { + var result = registry.registerIfAvailable(desiredName, sessionId); + if (result.isPresent()) { + return result.get(); + } + + int suffix = 1; + while (true) { + String candidate = desiredName + "_" + String.format("%03d", suffix); + result = registry.registerIfAvailable(candidate, sessionId); + if (result.isPresent()) { + return result.get(); + } + suffix++; + } + } +}