diff --git a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/controller/AlertResource.java b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/controller/AlertResource.java index 2a8f783..f0adb06 100644 --- a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/controller/AlertResource.java +++ b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/controller/AlertResource.java @@ -2,6 +2,7 @@ import fr.etu.polytech.dto.AlertDTO; import fr.etu.polytech.entity.Alert; +import fr.etu.polytech.entity.Severity; import fr.etu.polytech.exception.IncorrectRequestException; import fr.etu.polytech.exception.ResourceNotFoundException; import fr.etu.polytech.repository.AlertRepository; @@ -81,11 +82,23 @@ public List getAllAlerts() { return alertRepository.listAll(); } + @GET + @Path("/severity/{severity}") + public List getAlertsBySeverity(@PathParam("severity") String severity) { + try { + Severity sev = Severity.valueOf(severity.toUpperCase()); + return alertRepository.findBySeverity(sev); + } catch (IllegalArgumentException e) { + throw new WebApplicationException("Invalid severity level", 400); + } + } + + @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response createAlert(@Valid AlertDTO alertDTO) throws IncorrectRequestException { - Alert alert = new Alert(alertDTO.type(), alertDTO.message(), alertDTO.gatewayId(),alertDTO.value()); + Alert alert = new Alert(alertDTO.type(), alertDTO.message(), alertDTO.gatewayId(),alertDTO.value(),alertDTO.severity()); alertRepository.persist(alert); return Response.status(Response.Status.CREATED).entity(alert).build(); } @@ -171,4 +184,6 @@ public void validateGatewayId(String gatewayId) throws IncorrectRequestException } } + + } diff --git a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/dto/AlertDTO.java b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/dto/AlertDTO.java index 5b864b2..13174ca 100644 --- a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/dto/AlertDTO.java +++ b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/dto/AlertDTO.java @@ -1,4 +1,5 @@ package fr.etu.polytech.dto; +import fr.etu.polytech.entity.Severity; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PositiveOrZero; @@ -15,6 +16,8 @@ public record AlertDTO( @NotNull(message = "Gateway ID must not be null") @NotEmpty(message = "Gateway ID must not be empty") String gatewayId, - int value + int value, + @NotNull(message = "Severity must not be null") + Severity severity ) {} diff --git a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/entity/Alert.java b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/entity/Alert.java index 9324d85..e8bcd5c 100644 --- a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/entity/Alert.java +++ b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/entity/Alert.java @@ -18,16 +18,18 @@ public class Alert extends PanacheMongoEntity { public LocalDateTime timestamp; public boolean treated; private int value; + private Severity severity; public Alert() {} - public Alert(String type, String message, String gatewayId, int value) { + public Alert(String type, String message, String gatewayId, int value,Severity severity) { this.type = type; this.message = message; this.gatewayId = gatewayId; this.timestamp = LocalDateTime.now(); this.treated = false; this.value = value; + this.severity = severity; } public String getType() { @@ -77,4 +79,11 @@ public int getValue() { public void setValue(int value) { this.value = value; } + public Severity getSeverity() { + return severity; + } + + public void setSeverity(Severity severity) { + this.severity = severity; + } } \ No newline at end of file diff --git a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/entity/Severity.java b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/entity/Severity.java new file mode 100644 index 0000000..c7e5a5b --- /dev/null +++ b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/entity/Severity.java @@ -0,0 +1,7 @@ +package fr.etu.polytech.entity; + +public enum Severity { + INFO, + WARNING, + CRITICAL +} diff --git a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/repository/AlertRepository.java b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/repository/AlertRepository.java index cbc9b53..6a4ce6b 100644 --- a/cloud/backend/alert-management/src/main/java/fr/etu/polytech/repository/AlertRepository.java +++ b/cloud/backend/alert-management/src/main/java/fr/etu/polytech/repository/AlertRepository.java @@ -1,6 +1,7 @@ package fr.etu.polytech.repository; import fr.etu.polytech.entity.Alert; +import fr.etu.polytech.entity.Severity; import io.quarkus.mongodb.panache.PanacheMongoRepository; import jakarta.enterprise.context.ApplicationScoped; @@ -18,4 +19,7 @@ public List findByGatewayId(String gatewayId) { return find("gatewayId", gatewayId).list(); } + public List findBySeverity(Severity severity) { + return find("severity", severity).list(); + } }