From 1d6a6b522caec0dea795da8e3ad62edab713417f Mon Sep 17 00:00:00 2001
From: Paul Reichmuth
Date: Fri, 19 Dec 2025 15:40:10 +0100
Subject: [PATCH] begin StationService implementation
---
.../timekeep_backend/entities/Station.java | 6 +++++
.../services/StationService.java | 26 +++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/entities/Station.java b/src/main/java/de/pnreichmuth/timekeep_backend/entities/Station.java
index 99a1200..4494992 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/entities/Station.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/entities/Station.java
@@ -48,4 +48,10 @@ public class Station {
passedTeams.remove(team);
passingTimes.remove(team);
}
+
+ public String setPasswordHash(String passwordHash){
+ if(this.passwordHash != null) throw new IllegalStateException("Password has already been set");
+ this.passwordHash = passwordHash;
+ return this.passwordHash;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/services/StationService.java b/src/main/java/de/pnreichmuth/timekeep_backend/services/StationService.java
index 56f212b..a0ea6aa 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/services/StationService.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/services/StationService.java
@@ -1,16 +1,42 @@
package de.pnreichmuth.timekeep_backend.services;
import de.pnreichmuth.timekeep_backend.entities.Station;
+import de.pnreichmuth.timekeep_backend.exceptions.StationExistsException;
import de.pnreichmuth.timekeep_backend.repositories.StationRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import java.util.List;
import java.util.Optional;
+import java.util.UUID;
@Service
@Slf4j
@RequiredArgsConstructor
public class StationService {
+ private final StationRepository stationRepository;
+
+ private void checkIfStationIsDuplicate(Station station){
+ List stations = stationRepository.findAll();
+ if(stations.isEmpty()) return;
+ if(
+ stations.stream().anyMatch(
+ dbStation -> dbStation.getName().equals(station.getName())
+ && dbStation.getLocation().equals(station.getLocation())
+ && !dbStation.getId().equals(station.getId())
+ )
+ ) throw new StationExistsException(
+ "A station named %s already exists at the location %s".formatted(station.getName(), station.getLocation()),
+ station
+ );
+ }
+
+ public Optional createStation(String name, String location){
+ Station station = new Station(name,location);
+ checkIfStationIsDuplicate(station);
+ stationRepository.save(station);
+ return Optional.of(station);
+ }
}