Add UserRegistry to store all existing users and UserCleanupJob to periodicly remove expired user #189

Merged
lars.winzer merged 12 commits from feat/user-serverside into main 2026-03-15 20:00:59 +01:00
Showing only changes of commit 7c5a4675dd - Show all commits
@@ -0,0 +1,42 @@
package ch.unibas.dmi.dbis.cs108.casono.server.domain.user;
import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId;
import java.util.Iterator;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
public class UserRegistry {
private final ConcurrentHashMap<UserId, User> byId = new ConcurrentHashMap<>();
public synchronized Optional<User> registerIfAvailable(String name, SessionId sessionId) {
Iterator<User> users = byId.elements().asIterator();
while(users.hasNext()) {
User user = users.next();
if (user.getName() == name) {
return Optional.empty();
}
}
User user = new User(new UserId(), name, sessionId);
byId.put(user.getId(), user);
return Optional.of(user);
}
public Optional<User> findBySessionId(SessionId sessionId) {
Iterator<User> users = byId.elements().asIterator();
while(users.hasNext()) {
User user = users.next();
Optional<SessionId> currentSessionId = user.getSessionId();
if (currentSessionId.isEmpty()) {
continue;
}
if (currentSessionId.get() == sessionId) {
return Optional.of(user);
}
}
return Optional.empty();
}
}