Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>


<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
}

Original file line number Diff line number Diff line change
@@ -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);
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);
}

}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -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;
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
Original file line number Diff line number Diff line change
@@ -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) {}
}

Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,7 @@ public Mono<Void> 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) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down