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); + } }