From bd9573a2ecf6c41b2ed08b0158ac6e6d8cd8e15a Mon Sep 17 00:00:00 2001 From: josephmansilla Date: Mon, 2 Jun 2025 20:51:05 -0300 Subject: [PATCH 1/4] primeras refactorizaciones --- .../mailing/controllers/EmailController.java | 2 +- .../models/entities/alerta/AlertaTempHum.java | 22 +++++++++++++++++++ .../models/entities/alerta/IAlerta.java | 11 ++++++++++ .../entities/{ => notificacion}/Email.java | 11 ++++++---- .../entities/notificacion/INotificacion.java | 5 +++++ .../models/repositories/IEmailRepository.java | 2 +- .../repositories/impl/EmailRepository.java | 2 +- .../ddsi/mailing/services/IEmailService.java | 2 +- .../mailing/services/impl/AlertasService.java | 2 +- .../mailing/services/impl/EmailService.java | 2 +- src/main/resources/application.properties | 2 +- 11 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/AlertaTempHum.java create mode 100644 src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/IAlerta.java rename src/main/java/ar/utn/ba/ddsi/mailing/models/entities/{ => notificacion}/Email.java (67%) create mode 100644 src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificacion.java diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java b/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java index fec8ee0..a9b597e 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.controllers; -import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; import ar.utn.ba.ddsi.mailing.services.IEmailService; import org.springframework.web.bind.annotation.*; import java.util.List; diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/AlertaTempHum.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/AlertaTempHum.java new file mode 100644 index 0000000..7b22199 --- /dev/null +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/AlertaTempHum.java @@ -0,0 +1,22 @@ +package ar.utn.ba.ddsi.mailing.models.entities.alerta; + +import ar.utn.ba.ddsi.mailing.models.entities.Clima; + +public class AlertaTempHum implements IAlerta { + private final Integer temperaturaLimiteEnCelsius; + private final Integer temperaturaLimiteEnFahrenheit; + private final Double humedadLimite; + + public AlertaTempHum() { + temperaturaLimiteEnCelsius = 35; + temperaturaLimiteEnFahrenheit = 95; + humedadLimite = 0.6; + } + + public Boolean seCumpleAlerta(Clima clima) { + return + clima.getHumedad() >= humedadLimite && + (clima.getTemperaturaCelsius() >= temperaturaLimiteEnCelsius || + clima.getTemperaturaFahrenheit() >= temperaturaLimiteEnFahrenheit); + } +} diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/IAlerta.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/IAlerta.java new file mode 100644 index 0000000..54f5dd4 --- /dev/null +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/IAlerta.java @@ -0,0 +1,11 @@ +package ar.utn.ba.ddsi.mailing.models.entities.alerta; + +import ar.utn.ba.ddsi.mailing.models.entities.Clima; +import java.sql.Timestamp; +import lombok.Getter; + +public interface IAlerta { + @Getter + Timestamp fechaActualizacion = new Timestamp(System.currentTimeMillis()); + public Boolean seCumpleAlerta(Clima clima); +} diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/Email.java similarity index 67% rename from src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java rename to src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/Email.java index eb940be..79d091e 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/Email.java @@ -1,11 +1,12 @@ -package ar.utn.ba.ddsi.mailing.models.entities; +package ar.utn.ba.ddsi.mailing.models.entities.notificacion; +import java.sql.Timestamp; import lombok.Getter; import lombok.Setter; @Setter @Getter -public class Email { +public class Email implements INotificacion { private Long id; private String destinatario; private String remitente; @@ -13,6 +14,8 @@ public class Email { private String contenido; private boolean enviado; + private Timestamp fechaEnviado; + public Email(String destinatario, String remitente, String asunto, String contenido) { this.destinatario = destinatario; this.remitente = remitente; @@ -21,7 +24,7 @@ public Email(String destinatario, String remitente, String asunto, String conten this.enviado = false; } - public void enviar() { - //TODO: Implementación pendiente. Podríamos usar adapters + public void enviar(Email email) { + adapter.enviar(Email email); } } \ No newline at end of file diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificacion.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificacion.java new file mode 100644 index 0000000..f1fb226 --- /dev/null +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificacion.java @@ -0,0 +1,5 @@ +package ar.utn.ba.ddsi.mailing.models.entities.notificacion; + +public interface INotificacion { + public void enviar(Email email); +} diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java index ad96d89..487b7a2 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.models.repositories; -import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; import java.util.List; import java.util.Optional; diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java index 2920146..f280829 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.models.repositories.impl; -import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; import ar.utn.ba.ddsi.mailing.models.repositories.IEmailRepository; import org.springframework.stereotype.Repository; import java.util.*; diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java b/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java index 5be1682..97aa670 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.services; -import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; import java.util.List; public interface IEmailService { diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java index f5d52b6..33a5598 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java @@ -1,7 +1,7 @@ package ar.utn.ba.ddsi.mailing.services.impl; import ar.utn.ba.ddsi.mailing.models.entities.Clima; -import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; import ar.utn.ba.ddsi.mailing.models.repositories.IClimaRepository; import ar.utn.ba.ddsi.mailing.services.IAlertasService; import org.slf4j.Logger; diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java index e1ffb85..963329b 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.services.impl; -import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; import ar.utn.ba.ddsi.mailing.models.repositories.IEmailRepository; import ar.utn.ba.ddsi.mailing.services.IEmailService; import org.slf4j.Logger; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6bcf441..159eb95 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,7 +4,7 @@ spring.application.name=climalert cron.expression=0 * * * * * # WeatherAPI Configuration -weather.api.key=API-KEY-EXAMPLE +weather.api.key=42ae1a3f270e4c07b3322320725020642ae1a3f270e4c07b33223207250206 weather.api.base-url=http://api.weatherapi.com/v1 # Email Configuration From 4f226bce01a9aacb6ee851370931c89e9d79ecbb Mon Sep 17 00:00:00 2001 From: josephmansilla Date: Tue, 3 Jun 2025 01:28:00 -0300 Subject: [PATCH 2/4] iteracion final --- .../mailing/controllers/EmailController.java | 2 +- .../ddsi/mailing/models/entities/Clima.java | 16 +++++++ .../ddsi/mailing/models/entities/Email.java | 46 +++++++++++++++++++ .../ICondicionAlerta.java} | 4 +- .../impl/CondicionTempHum.java} | 14 ++++-- .../models/entities/notificacion/Email.java | 30 ------------ ...icacion.java => INotificationAdapter.java} | 4 +- .../impl/NotificationAdapter.java | 11 +++++ .../models/repositories/IEmailRepository.java | 2 +- .../repositories/impl/EmailRepository.java | 2 +- .../ddsi/mailing/services/IEmailService.java | 2 +- .../mailing/services/impl/AlertasService.java | 26 +++-------- .../mailing/services/impl/EmailService.java | 4 +- 13 files changed, 101 insertions(+), 62 deletions(-) create mode 100644 src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java rename src/main/java/ar/utn/ba/ddsi/mailing/models/entities/{alerta/IAlerta.java => condicionesAlerta/ICondicionAlerta.java} (70%) rename src/main/java/ar/utn/ba/ddsi/mailing/models/entities/{alerta/AlertaTempHum.java => condicionesAlerta/impl/CondicionTempHum.java} (59%) delete mode 100644 src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/Email.java rename src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/{INotificacion.java => INotificationAdapter.java} (51%) create mode 100644 src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/impl/NotificationAdapter.java diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java b/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java index a9b597e..fec8ee0 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/controllers/EmailController.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.controllers; -import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; +import ar.utn.ba.ddsi.mailing.models.entities.Email; import ar.utn.ba.ddsi.mailing.services.IEmailService; import org.springframework.web.bind.annotation.*; import java.util.List; diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Clima.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Clima.java index 4eaa65b..a0fec30 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Clima.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Clima.java @@ -23,4 +23,20 @@ public Clima() { this.fechaActualizacion = LocalDateTime.now(); this.procesado = false; } + + public String descripcion() { + return String.format( + "ALERTA: Condiciones climáticas extremas detectadas en %s\n\n" + + "Temperatura: %.1f°C\n" + + "Humedad: %d%%\n" + + "Condición: %s\n" + + "Velocidad del viento: %.1f km/h\n\n" + + "Se recomienda tomar precauciones.", + this.ciudad, + this.temperaturaCelsius, + this.humedad, + this.condicion, + this.velocidadVientoKmh + ); + } } \ No newline at end of file diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java new file mode 100644 index 0000000..a20eebd --- /dev/null +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java @@ -0,0 +1,46 @@ +package ar.utn.ba.ddsi.mailing.models.entities; + +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.INotificationAdapter; +import java.sql.Timestamp; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class Email implements INotificationAdapter { + private Long id; + private String destinatario; + private String remitente; + private String asunto; + private String contenido; + private boolean enviado; + + private Timestamp fechaEnviado; + private INotificationAdapter notificacionAdapter; + private Alerta alerta; + + public Email(String destinatario, String remitente, String asunto, String contenido) { + this.destinatario = destinatario; + this.remitente = remitente; + this.asunto = asunto; + this.contenido = contenido; + this.notificacionAdapter = notificacionAdapter; + this.alerta = alerta; + this.enviado = false; + } + + public Email(String destinatario, String remitente, String asunto, String contenido, INotificationAdapter notificacionAdapter, Alerta alerta) { + this.destinatario = destinatario; + this.remitente = remitente; + this.asunto = asunto; + this.contenido = contenido; + this.notificacionAdapter = notificacionAdapter; + this.alerta = alerta; + this.enviado = false; + } + + public void enviar(Email email) { + notificacionAdapter.enviar(email); + } +} \ No newline at end of file diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/IAlerta.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/ICondicionAlerta.java similarity index 70% rename from src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/IAlerta.java rename to src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/ICondicionAlerta.java index 54f5dd4..7376de1 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/IAlerta.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/ICondicionAlerta.java @@ -1,10 +1,10 @@ -package ar.utn.ba.ddsi.mailing.models.entities.alerta; +package ar.utn.ba.ddsi.mailing.models.entities.condicionesAlerta; import ar.utn.ba.ddsi.mailing.models.entities.Clima; import java.sql.Timestamp; import lombok.Getter; -public interface IAlerta { +public interface ICondicionAlerta { @Getter Timestamp fechaActualizacion = new Timestamp(System.currentTimeMillis()); public Boolean seCumpleAlerta(Clima clima); diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/AlertaTempHum.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/impl/CondicionTempHum.java similarity index 59% rename from src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/AlertaTempHum.java rename to src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/impl/CondicionTempHum.java index 7b22199..11d9156 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/alerta/AlertaTempHum.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/impl/CondicionTempHum.java @@ -1,18 +1,24 @@ -package ar.utn.ba.ddsi.mailing.models.entities.alerta; +package ar.utn.ba.ddsi.mailing.models.entities.condicionesAlerta.impl; import ar.utn.ba.ddsi.mailing.models.entities.Clima; +import ar.utn.ba.ddsi.mailing.models.entities.condicionesAlerta.ICondicionAlerta; +import org.springframework.stereotype.Component; -public class AlertaTempHum implements IAlerta { +@Component +public class CondicionTempHum implements ICondicionAlerta { private final Integer temperaturaLimiteEnCelsius; private final Integer temperaturaLimiteEnFahrenheit; private final Double humedadLimite; + private final String asunto; - public AlertaTempHum() { + + public CondicionTempHum() { temperaturaLimiteEnCelsius = 35; temperaturaLimiteEnFahrenheit = 95; humedadLimite = 0.6; + asunto = "Alerta de Clima - Condiciones Extremas"; } - + @Override public Boolean seCumpleAlerta(Clima clima) { return clima.getHumedad() >= humedadLimite && diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/Email.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/Email.java deleted file mode 100644 index 79d091e..0000000 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/Email.java +++ /dev/null @@ -1,30 +0,0 @@ -package ar.utn.ba.ddsi.mailing.models.entities.notificacion; - -import java.sql.Timestamp; -import lombok.Getter; -import lombok.Setter; - -@Setter -@Getter -public class Email implements INotificacion { - private Long id; - private String destinatario; - private String remitente; - private String asunto; - private String contenido; - private boolean enviado; - - private Timestamp fechaEnviado; - - public Email(String destinatario, String remitente, String asunto, String contenido) { - this.destinatario = destinatario; - this.remitente = remitente; - this.asunto = asunto; - this.contenido = contenido; - this.enviado = false; - } - - public void enviar(Email email) { - adapter.enviar(Email email); - } -} \ No newline at end of file diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificacion.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificationAdapter.java similarity index 51% rename from src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificacion.java rename to src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificationAdapter.java index f1fb226..8be6613 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificacion.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/INotificationAdapter.java @@ -1,5 +1,7 @@ package ar.utn.ba.ddsi.mailing.models.entities.notificacion; -public interface INotificacion { +import ar.utn.ba.ddsi.mailing.models.entities.Email; + +public interface INotificationAdapter { public void enviar(Email email); } diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/impl/NotificationAdapter.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/impl/NotificationAdapter.java new file mode 100644 index 0000000..7124d7b --- /dev/null +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/notificacion/impl/NotificationAdapter.java @@ -0,0 +1,11 @@ +package ar.utn.ba.ddsi.mailing.models.entities.notificacion.impl; + +import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.notificacion.INotificationAdapter; + +public class NotificationAdapter implements INotificationAdapter { + @Override + public void enviar(Email email){ + // TODO + } +} diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java index 487b7a2..ad96d89 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/IEmailRepository.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.models.repositories; -import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; +import ar.utn.ba.ddsi.mailing.models.entities.Email; import java.util.List; import java.util.Optional; diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java index f280829..2920146 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/repositories/impl/EmailRepository.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.models.repositories.impl; -import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; +import ar.utn.ba.ddsi.mailing.models.entities.Email; import ar.utn.ba.ddsi.mailing.models.repositories.IEmailRepository; import org.springframework.stereotype.Repository; import java.util.*; diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java b/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java index 97aa670..5be1682 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/services/IEmailService.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.services; -import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; +import ar.utn.ba.ddsi.mailing.models.entities.Email; import java.util.List; public interface IEmailService { diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java index 33a5598..0ca59c2 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/AlertasService.java @@ -1,7 +1,8 @@ package ar.utn.ba.ddsi.mailing.services.impl; import ar.utn.ba.ddsi.mailing.models.entities.Clima; -import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; +import ar.utn.ba.ddsi.mailing.models.entities.Email; +import ar.utn.ba.ddsi.mailing.models.entities.condicionesAlerta.ICondicionAlerta; import ar.utn.ba.ddsi.mailing.models.repositories.IClimaRepository; import ar.utn.ba.ddsi.mailing.services.IAlertasService; import org.slf4j.Logger; @@ -15,19 +16,20 @@ @Service public class AlertasService implements IAlertasService { private static final Logger logger = LoggerFactory.getLogger(AlertasService.class); - private static final double TEMPERATURA_ALERTA = 35.0; - private static final int HUMEDAD_ALERTA = 60; + private final ICondicionAlerta condicionesAlerta; // no me queda claro como setearía las condiciones que deseamos private final IClimaRepository climaRepository; private final EmailService emailService; private final String remitente; private final List destinatarios; public AlertasService( + ICondicionAlerta condicionesAlerta, IClimaRepository climaRepository, EmailService emailService, @Value("${email.alertas.remitente}") String remitente, @Value("${email.alertas.destinatarios}") String destinatarios) { + this.condicionesAlerta = condicionesAlerta; this.climaRepository = climaRepository; this.emailService = emailService; this.remitente = remitente; @@ -62,26 +64,12 @@ public Mono generarAlertasYAvisar() { } private boolean cumpleCondicionesAlerta(Clima clima) { - //TODO: podríamos refactorizar el diseño para que no sea un simple método, pues puede ser más complejo - return clima.getTemperaturaCelsius() > TEMPERATURA_ALERTA && - clima.getHumedad() > HUMEDAD_ALERTA; + return condicionesAlerta.seCumpleAlerta(clima); } private void generarYEnviarEmail(Clima clima) { String asunto = "Alerta de Clima - Condiciones Extremas"; - String mensaje = String.format( - "ALERTA: Condiciones climáticas extremas detectadas en %s\n\n" + - "Temperatura: %.1f°C\n" + - "Humedad: %d%%\n" + - "Condición: %s\n" + - "Velocidad del viento: %.1f km/h\n\n" + - "Se recomienda tomar precauciones.", - clima.getCiudad(), - clima.getTemperaturaCelsius(), - clima.getHumedad(), - clima.getCondicion(), - clima.getVelocidadVientoKmh() - ); + String mensaje = clima.descripcion(); for (String destinatario : destinatarios) { Email email = new Email(destinatario, remitente, asunto, mensaje); diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java index 963329b..00a0121 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/services/impl/EmailService.java @@ -1,6 +1,6 @@ package ar.utn.ba.ddsi.mailing.services.impl; -import ar.utn.ba.ddsi.mailing.models.entities.notificacion.Email; +import ar.utn.ba.ddsi.mailing.models.entities.Email; import ar.utn.ba.ddsi.mailing.models.repositories.IEmailRepository; import ar.utn.ba.ddsi.mailing.services.IEmailService; import org.slf4j.Logger; @@ -34,7 +34,7 @@ public List obtenerEmails(Boolean pendiente) { public void procesarPendientes() { List pendientes = emailRepository.findByEnviado(false); for (Email email : pendientes) { - email.enviar(); + email.enviar(email); email.setEnviado(true); emailRepository.save(email); } From c4b2a52891371feab6ce47f791bdcd6a3f02f918 Mon Sep 17 00:00:00 2001 From: josephmansilla Date: Tue, 3 Jun 2025 01:32:18 -0300 Subject: [PATCH 3/4] bug fixes --- .../java/ar/utn/ba/ddsi/mailing/models/entities/Email.java | 5 +---- .../models/entities/condicionesAlerta/ICondicionAlerta.java | 2 -- .../entities/condicionesAlerta/impl/CondicionTempHum.java | 3 ++- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java index a20eebd..c753086 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java @@ -18,7 +18,6 @@ public class Email implements INotificationAdapter { private Timestamp fechaEnviado; private INotificationAdapter notificacionAdapter; - private Alerta alerta; public Email(String destinatario, String remitente, String asunto, String contenido) { this.destinatario = destinatario; @@ -26,17 +25,15 @@ public Email(String destinatario, String remitente, String asunto, String conten this.asunto = asunto; this.contenido = contenido; this.notificacionAdapter = notificacionAdapter; - this.alerta = alerta; this.enviado = false; } - public Email(String destinatario, String remitente, String asunto, String contenido, INotificationAdapter notificacionAdapter, Alerta alerta) { + public Email(String destinatario, String remitente, String asunto, String contenido, INotificationAdapter notificacionAdapter) { this.destinatario = destinatario; this.remitente = remitente; this.asunto = asunto; this.contenido = contenido; this.notificacionAdapter = notificacionAdapter; - this.alerta = alerta; this.enviado = false; } diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/ICondicionAlerta.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/ICondicionAlerta.java index 7376de1..564e09d 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/ICondicionAlerta.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/ICondicionAlerta.java @@ -5,7 +5,5 @@ import lombok.Getter; public interface ICondicionAlerta { - @Getter - Timestamp fechaActualizacion = new Timestamp(System.currentTimeMillis()); public Boolean seCumpleAlerta(Clima clima); } diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/impl/CondicionTempHum.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/impl/CondicionTempHum.java index 11d9156..e515c38 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/impl/CondicionTempHum.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/condicionesAlerta/impl/CondicionTempHum.java @@ -9,7 +9,7 @@ public class CondicionTempHum implements ICondicionAlerta { private final Integer temperaturaLimiteEnCelsius; private final Integer temperaturaLimiteEnFahrenheit; private final Double humedadLimite; - private final String asunto; + public final String asunto; public CondicionTempHum() { @@ -18,6 +18,7 @@ public CondicionTempHum() { humedadLimite = 0.6; asunto = "Alerta de Clima - Condiciones Extremas"; } + @Override public Boolean seCumpleAlerta(Clima clima) { return From 9d9c2f89f3d64e01cd8c830a3328e55149f23826 Mon Sep 17 00:00:00 2001 From: josephmansilla Date: Tue, 3 Jun 2025 01:34:58 -0300 Subject: [PATCH 4/4] detallito pendiente --- src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java index c753086..9c2a58c 100644 --- a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java +++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Email.java @@ -8,7 +8,7 @@ @Setter @Getter -public class Email implements INotificationAdapter { +public class Email { private Long id; private String destinatario; private String remitente;