diff --git a/pom.xml b/pom.xml
index 2566156..38f82dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,7 @@
spring-boot-starter-web
+
org.projectlombok
lombok
diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Alertas/AlertaTyH.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Alertas/AlertaTyH.java
new file mode 100644
index 0000000..798f1ea
--- /dev/null
+++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Alertas/AlertaTyH.java
@@ -0,0 +1,30 @@
+package ar.utn.ba.ddsi.mailing.models.entities.Alertas;
+
+import ar.utn.ba.ddsi.mailing.models.entities.Clima;
+
+public class AlertaTyH implements IAlertas {
+ private int temperaturaLimiteC;
+ private int humedadLimite;
+ private boolean vencida;
+
+ public AlertaTyH(int temperaturaLimiteC, int humedadLimite) {
+ this.temperaturaLimiteC = temperaturaLimiteC;
+ this.humedadLimite = humedadLimite;
+ this.vencida = false;
+ }
+ @Override
+ public boolean seCumpleCon(Clima clima) {
+ if (vencida) return false;
+ return clima.getTemperaturaCelsius() > temperaturaLimiteC &&
+ clima.getHumedad() > humedadLimite;
+ }
+
+ public void marcarComoVencida() {
+ this.vencida = true;
+ }
+
+ public boolean estaVencida() {
+ return vencida;
+ }
+}
+
diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Alertas/IAlertas.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Alertas/IAlertas.java
new file mode 100644
index 0000000..72b450f
--- /dev/null
+++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/Alertas/IAlertas.java
@@ -0,0 +1,8 @@
+package ar.utn.ba.ddsi.mailing.models.entities.Alertas;
+
+import ar.utn.ba.ddsi.mailing.models.entities.Clima;
+
+public interface IAlertas {
+
+ public boolean seCumpleCon(Clima clima);
+}
\ No newline at end of file
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..34cffa5 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
@@ -1,5 +1,6 @@
package ar.utn.ba.ddsi.mailing.models.entities;
+import ar.utn.ba.ddsi.mailing.models.entities.Alertas.IAlertas;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
@@ -18,9 +19,15 @@ public class Clima {
private Integer humedad;
private LocalDateTime fechaActualizacion;
private boolean procesado;
+ private static IAlertas alerta;
public Clima() {
this.fechaActualizacion = LocalDateTime.now();
this.procesado = false;
}
+
+ public boolean tieneAlertaActiva() {
+ return alerta != null && alerta.seCumpleCon(this);
+ }
+
}
\ 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
index eb940be..5280d8c 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
@@ -1,5 +1,6 @@
package ar.utn.ba.ddsi.mailing.models.entities;
+import ar.utn.ba.ddsi.mailing.models.entities.mailing.EmailSenderAdapter;
import lombok.Getter;
import lombok.Setter;
@@ -12,6 +13,7 @@ public class Email {
private String asunto;
private String contenido;
private boolean enviado;
+ private static EmailSenderAdapter adapter;
public Email(String destinatario, String remitente, String asunto, String contenido) {
this.destinatario = destinatario;
@@ -22,6 +24,6 @@ public Email(String destinatario, String remitente, String asunto, String conten
}
public void enviar() {
- //TODO: Implementación pendiente. Podríamos usar adapters
+ adapter.enviar(this);
}
}
\ No newline at end of file
diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/mailing/EmailSenderAdapter.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/mailing/EmailSenderAdapter.java
new file mode 100644
index 0000000..9e53b5b
--- /dev/null
+++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/mailing/EmailSenderAdapter.java
@@ -0,0 +1,7 @@
+package ar.utn.ba.ddsi.mailing.models.entities.mailing;
+
+import ar.utn.ba.ddsi.mailing.models.entities.Email;
+
+public interface EmailSenderAdapter {
+ void enviar(Email email);
+}
diff --git a/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/mailing/JavaMailAdapter.java b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/mailing/JavaMailAdapter.java
new file mode 100644
index 0000000..2bdfc1f
--- /dev/null
+++ b/src/main/java/ar/utn/ba/ddsi/mailing/models/entities/mailing/JavaMailAdapter.java
@@ -0,0 +1,24 @@
+package ar.utn.ba.ddsi.mailing.models.entities.mailing;
+
+import ar.utn.ba.ddsi.mailing.models.entities.Email;
+import jakarta.websocket.Session;
+import org.apache.logging.log4j.message.Message;
+
+import java.net.Authenticator;
+import java.net.PasswordAuthentication;
+import java.util.Properties;
+
+public class JavaMailAdapter implements EmailSenderAdapter {
+
+ private final String usuario;
+ private final String password;
+
+ public JavaMailAdapter(String usuario, String password) {
+ this.usuario = usuario;
+ this.password = password;
+ }
+
+ @Override
+ public void enviar(Email email) {}
+}
+
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..c54ead8 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
@@ -62,9 +62,7 @@ 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 clima.tieneAlertaActiva();
}
private void generarYEnviarEmail(Clima clima) {
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 6bcf441..9385736 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=556d791c03704750a85223837252005
weather.api.base-url=http://api.weatherapi.com/v1
# Email Configuration