Skip to content

Commit

Permalink
Agregando funcionalidades de requerimientos
Browse files Browse the repository at this point in the history
  • Loading branch information
FranciscoGonzalez03 committed Jul 22, 2023
1 parent f6a9b3a commit 1903f24
Show file tree
Hide file tree
Showing 23 changed files with 271 additions and 1 deletion.
4 changes: 4 additions & 0 deletions ENTREGA 3/src/EmpresasPrestadoras.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,8 @@ public void setCuit(Integer cuit) {
public void setPersonaACargo(UsuarioEmpresarial personaACargo) {
this.personaACargo = personaACargo;
}

public void registrarIncidente(){
//toDO
}
}
10 changes: 10 additions & 0 deletions ENTREGA 3/src/EntidadesYEstablecimientos/Entidad.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ public abstract class Entidad {
private EmpresaPrestadora empresaPrestadora;
private OrganismoDeControl organismoDeControl;
private List<InformeIncidente> informes;
private Double PromedioCierreIncidentes;

public void actualizacionDatos(EmpresaPrestadora empresaPrestadora) {
//TODO
Expand All @@ -14,4 +15,13 @@ public void actualizacionDatos(OrganismoDeControl organismoDeControl) {
//TODO
return;
}

public List<Monitoreable> getMonitoreables(){
}
public Double getPromedioCierreIncidentes(){
return this.PromedioCierreIncidentes;
}
public void setPromedioCierreIncidentes(Double promedio){
this.PromedioCierreIncidentes = promedio,
}
}
4 changes: 4 additions & 0 deletions ENTREGA 3/src/EntidadesYEstablecimientos/Establecimiento.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,9 @@ public void modificacionDisponibilidad(Establecimiento establecimiento) {
//TODO
return;
}

public List<Monitoreable> getMonitoreable(){
return this.servicios;
}
}
}
8 changes: 7 additions & 1 deletion ENTREGA 3/src/EntidadesYEstablecimientos/Linea.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,11 @@ public class Linea extends Entidad{
private Estacion estacionDeDestino;
private List<Estacion> establecimientos;


@Override
public List<Monitoreable> getMonitoreables(){
List<Monitoreable> listaMonitoreables = establecimientos.stream()
.flatMap(estacion -> estacion.getMonitoreables().stream())
.collect(Collectors.toList());
return listaMonitoreables;
}
}
18 changes: 18 additions & 0 deletions ENTREGA 3/src/EntidadesYEstablecimientos/Monitoreable.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,22 @@
package EntidadesYEstablecimientos;

public class Monitoreable {
private String nombre;
private Disponibilidad estado;
private List<Incidente> incidentesActivos;
private List<Incidente> incidentesInactivos;
public void registrarIncidente(Incidente unIncidente){
incidentesActivos.add(unIncidente);
}
public void cerrar(Incidente unIncidente){
incidentesActivos.remove(unIncidente);
incidentesInactivos.add(unIncidente);
}
public List<Incidente> getIncidentesAbiertos(){
return this.incidentesActivos;
}

public List<Incidente> getIncidentesInactivos(){
return this.incidentesInactivos;
}
}
8 changes: 8 additions & 0 deletions ENTREGA 3/src/EntidadesYEstablecimientos/Organizacion.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,12 @@

public class Organizacion extends Entidad{
private List<Sucursal> establecimientos;

@Override
public List<Monitoreable> getMonitoreables(){
List<Monitoreable> listaMonitoreables = establecimientos.stream()
.flatMap(sucursal -> sucursal.getMonitoreables().stream())
.collect(Collectors.toList());
return listaMonitoreables;
}
}
1 change: 1 addition & 0 deletions ENTREGA 3/src/EntidadesYEstablecimientos/Sucursal.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ public class Sucursal extends Establecimiento{
private Ubicacion ubicacion;
private List<Monitoreable> servicios;
private Localizacion localizacion;

}
28 changes: 28 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/Comunidad.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
public class Comunidad {
private List<Membresia> miembros;
private List<Incidente> incidentesNotificables;

public void alta(Membresia unMiembro){
//toDO
}

public void baja(Membresia unMiembro){
miembros.remove(unMiembro);
}

public void modificacion(){
// no hay suficiente informacion
}

public void sugerirRevision(){
//toDO con Hasura
}

public void notificarMiembros(){
// toDo no es requerimiento entrega3
}

public void actualizarIncidentesNotificables(){
//toDO no es requerimiento entrega3
}
}
4 changes: 4 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/Disponibilidad.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
public enum Disponibilidad {
ACTIVO,
INACTIVO
}
4 changes: 4 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/Estado.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
public enum Estado {
ABIERTO,
CERRADO
}
4 changes: 4 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/HoraNotificacion.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
public enum HoraNotificacion {
//Arranca con H para que sea valido como identificador
H00, H01, H02, H03, H04, H05, H06, H07, H08, H09, H10, H11, H12, H13, H14, H15, H16, H17, H18, H19, H20, H21, H22, H23
}
33 changes: 33 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/Indicente.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import java.time.LocalDateTime;
public class Indicente {
private Motivo descripcion;
private LocalDateTime fechaInicio;
private LocalDateTime fechaCierre;
private Monitoreable monitoreable;
private String observaciones;
private Estado estado;
private Integer genteAfectada;
private UsuarioPersonal creador;
public Incidente(Monitoreable unMonitoreable, UsuarioPersonal unUsuario){
this.monitoreable = unMonitoreable;
this.creador = unUsuario;
this.fechaInicio = LocalDateTime.now();
}
public void notificarComunidades(){
//toDo no es requerimiento para la entrega3
//no se si es necesario que este en esta clase el metodo
// deberia mandar el incidente para que las comunidades lo guarden en su lista
//un metodo que llama al metodo del usuario para avisar a cada membresia para que notifique a su respectiva comunidad
}
public Estado getEstado(){
return this.estado;
}

public LocalDateTime getFechaInicio(){
return this.fechaInicio;
}

public LocalDateTime getFechaCierre(){
return this.fechaCierre;
}
}
13 changes: 13 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/InformeIncidente.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
public class InformeIncidente {
private Entidad entidadAsociada;
public notificarEmpresaPrestadora(){
//toDO
}
public notificarOrganismoDeControl(){
//toDO
}

public Entidad getEntidadAsociada(){
return this.entidadAsociada;
}
}
7 changes: 7 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/Membresia.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
public class Membresia {
private UsuarioPersonal usuario;
private Comunidad comunidad;
private RolDePermiso rolDePermiso;
private RolDeImpacto rolDeImpacto;

}
4 changes: 4 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/Motivo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
public enum Motivo {
EN_REPARACION,
CLAUSURADO
}
61 changes: 61 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/RankingDePromedios.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Collections;
import java.util.Comparator;

public class RankingDePromedios extends TipoDeRanking{
@Override
public List<InformeIncidente> generarRanking(List<InformeIncidente> listaInformes){

List<IncidenteInactivo> listaIncidentesInactivos = listaInformes.stream()
.map(InformeIncidente::getEntidadAsociada) // Obtener la entidad asociada de cada informe
.flatMap(entidad -> entidad.getMonitoreables().stream()) // Obtener todas las listas de monitoreables y combinarlas en una sola lista
.flatMap(monitoreable -> monitoreable.getIncidentesInactivos().stream()) // Obtener todos los incidentes inactivos y combinarlos en una sola lista
.collect(Collectors.toList()); // Recolectar en una lista
// Lista con todos los incidentes inactivos asociado a cada una de las entidades

// calculo del promedio de diferencia en minutos por entidad
for (Entidad entidad : listaIncidentesInactivos) {
List<IncidenteInactivo> incidentesInactivosEntidad = entidad.getIncidentesInactivos();
int totalDiferenciaEnMinutos = 0;

for (IncidenteInactivo incidente : incidentesInactivosEntidad) {
LocalDateTime fechaInicio = incidente.getFechaInicio();
LocalDateTime fechaCierre = incidente.getFechaCierre();

long diferenciaEnMinutos = fechaInicio.until(fechaCierre, ChronoUnit.MINUTES);
totalDiferenciaEnMinutos += diferenciaEnMinutos;
}

double promedioDiferenciaEnMinutos = totalDiferenciaEnMinutos / (double) incidentesInactivosEntidad.size();
entidad.setPromedioCierreIncidentes(promedioDiferenciaEnMinutos);
} //cada entidad tiene el promedio asociado

// Ahora para ordenar la lista de informes según el promedio
Collections.sort(listaInformes, new Comparator<InformeIncidente>() {
@Override
public int compare(InformeIncidente informe1, InformeIncidente informe2) {
// Comparar los informes según el promedio
double promedio1 = informe1.getEntidadAsociada().getPromedioCierreIncidentes();
double promedio2 = informe2.getEntidadAsociada().getPromedioCierreIncidentes();
return Double.compare(promedio2, promedio1);
}
});

return listaInformes;
}

}




// Ahora, listaInformes contiene los informes ordenados por su promedio de diferencia en minutos en orden descendente







6 changes: 6 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/RankingImpacto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
public class RankingImpacto extends TipoDeRanking {
public List<InformeIncidente> generarRanking(List<InformeIncidente> listaInformes){
//toDO no en entrega3
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
public class RankingMayorCantIncidentes extends TipoDeRanking {
public List<InformeIncidente> generarRanking(List<InformeIncidente> listaInformes){
//toDO
}

}
9 changes: 9 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/RankingsIncidente.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
public class RankingsIncidente {
private List<InformeIncidente> informes;
private TipoDeRanking tipoDeRanking;

public void generarSegunCriterio(){
//void???
tipoDeRanking.generarRanking();
}
}
4 changes: 4 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/RolDeImpacto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
public enum RolDeImpacto {
AFECTADO,
OBSERVADOR
}
4 changes: 4 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/RolDePermiso.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
public enum RolDePermiso {
ADMINISTRADOR,
ESTANDAR
}
5 changes: 5 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/TipoDeRanking.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public class TipoDeRanking {
public void generarRanking(){
//void?
}
}
27 changes: 27 additions & 0 deletions ENTREGA 3/src/PosibleClasesAgregadas/UsuarioPersonal.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import java.nio.charset.UnmappableCharacterException;

public class UsuarioPersonal extends UsuarioGeneral {
private List<Membresia> membresias;
private Localizacion localizacionAsociada;
private List<Monitoreable> serviciosDeInteres;
private List<HoraNotificacion> horariosNotificacion;
private List<EmpresaPrestadora> empresasDeInteres;

public void modificar(Monitoreable unMonitoreable){
//completar
}
public void eliminar(Monitoreable unMonitoreable){
//elimina de la lista?
}
public void setLocalizacion(Localizacion unaLocalizacion){
localizacionAsociada = unaLocalizacion;
}
public void agregarServicioDeInteres(Monitoreable unMonitoreable){
serviciosDeInteres.add(unMonitoreable);
}
public void registrarIncidente(Monitoreable unMonitoreable, UsuarioPersonal unUsuario){
//void?
//para mi el metodo va sin el parametro del UsuarioPersonal ya que es solo para mandarselo al incidente
Incidente unIncidente = new Incidente(unMonitoreable, this);
}
}

0 comments on commit 1903f24

Please sign in to comment.