diff --git a/src/main/java/dev/deklab/sensorapi/controller/MeasurementController.java b/src/main/java/dev/deklab/sensorapi/controller/MeasurementController.java index 3e0480e..0dbd57f 100644 --- a/src/main/java/dev/deklab/sensorapi/controller/MeasurementController.java +++ b/src/main/java/dev/deklab/sensorapi/controller/MeasurementController.java @@ -17,7 +17,6 @@ import org.springframework.web.bind.annotation.ResponseStatus; @RestController public class MeasurementController { - private final MeasurementService measurementService; MeasurementController(MeasurementService measurementService) { @@ -38,7 +37,7 @@ public class MeasurementController { @PostMapping("/measurements") @ResponseStatus(HttpStatus.CREATED) public Measurement postMeasurement(@RequestBody Measurement measurement) { - return measurement; + return measurementService.save(measurement); } } diff --git a/src/main/java/dev/deklab/sensorapi/repository/MeasurementRepository.java b/src/main/java/dev/deklab/sensorapi/repository/MeasurementRepository.java new file mode 100644 index 0000000..de15db7 --- /dev/null +++ b/src/main/java/dev/deklab/sensorapi/repository/MeasurementRepository.java @@ -0,0 +1,33 @@ +package dev.deklab.sensorapi.repository; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; + +import org.springframework.stereotype.Repository; + +import dev.deklab.model.Measurement; + +@Repository +public class MeasurementRepository { + private final ConcurrentHashMap store = new ConcurrentHashMap<>(); + private final AtomicLong idGenerator = new AtomicLong(); + + public List findAll() { + return new ArrayList<>(store.values()); + } + + public Optional findById(Long id) { + return Optional.ofNullable(store.get(id)); + } + + public Measurement save(Measurement measurement){ + Long newId = idGenerator.incrementAndGet(); + Measurement saved = new Measurement(newId,measurement.temperature(),measurement.humidity()); + store.put(newId, saved); + return saved; + } + +} diff --git a/src/main/java/dev/deklab/sensorapi/service/MeasurementService.java b/src/main/java/dev/deklab/sensorapi/service/MeasurementService.java index a5bf6af..4a19dcc 100644 --- a/src/main/java/dev/deklab/sensorapi/service/MeasurementService.java +++ b/src/main/java/dev/deklab/sensorapi/service/MeasurementService.java @@ -6,23 +6,22 @@ import java.util.Optional; import org.springframework.stereotype.Service; import dev.deklab.model.Measurement; +import dev.deklab.sensorapi.repository.MeasurementRepository; @Service public class MeasurementService { - private Measurement m1 = new Measurement(1L, 21.5, 48); - private Measurement m2 = new Measurement(2L, 25.5, 38); - private Measurement m3 = new Measurement(3L, 29.5, 58); - - private List measurements = List.of(m1, m2, m3); - public List returnAllMeasurements(){ - return measurements; + private final MeasurementRepository measurementRepository; + MeasurementService(MeasurementRepository measurementRepository){ + this.measurementRepository = measurementRepository; } - public Optional searchById(Long id){ - for (int i = 0; i < measurements.size(); i++) { - if (id.equals(measurements.get(i).id())) { - return Optional.of(measurements.get(i)); - } - } - return Optional.empty(); + public List returnAllMeasurements() { + return measurementRepository.findAll(); + } + + public Optional searchById(Long id) { + return measurementRepository.findById(id); + } + public Measurement save(Measurement measurement){ + return measurementRepository.save(measurement); } }