package Logica; import java.io.Serializable; import java.time.LocalDate; import java.util.Vector; public class Gestion implements Serializable{ private Vector<Transaccion> gestiones; private float suma; private float total; private boolean isPositivo; private String nombre; private boolean isModified; /** * Constructor principal de gestion * * @param nombre nombre de la gestion * @param isPositivo si es verdadero la gestion sera de beneficios, si es falsa sera de gastos */ public Gestion(String nombre, boolean isPositivo) { this.gestiones = new Vector<Transaccion>(); this.suma = 0; this.total = 0; this.nombre = nombre; this.isPositivo = isPositivo; this.isModified = false; } /** * Devuelve el nombre de la gestion * * @return nombre de la gestion */ public String getNombre() { return this.nombre; } /** * Establece un nuevo nombre a la gestion * * @param nombre nuevo nombre */ public void setNombre(String nombre) { this.nombre = nombre; this.isModified = true; } /** * Aniade una transaccion a la gestion * * @param transaccion transaccion que sera aniadida a la gestion */ public void aniadirGasto(Transaccion transaccion) { this.gestiones.add(transaccion); this.suma += transaccion.getDinero(); if(this.isPositivo) { this.total += transaccion.getDinero(); }else { this.total -= transaccion.getDinero(); } } /** * Devuelve la suma (sin tener e cuenta si es gasto o ingreso) de la gestion * * @return suma de las transacciones de la gestion */ public float getSuma() { return this.suma; } /** * Devuelve la suma de todos sus datos, esta vez teniendo en cuenta si debe sumar o restar * * @return suma correcta de los datos */ public float getTotal() { return this.total; } /** * Devuelve todas las transacciones que tiene * * @return Transacciones que contiene */ public Vector<Transaccion> getElementos(){ return this.gestiones; } /** * Elimina una transaccion * * @param transaccion transaccion a eliminar */ public void eliminarTransaccion(String transaccion) { for(Transaccion elemento:this.gestiones) { if(elemento.toString().equals(transaccion)) { this.gestiones.remove(elemento); return; } } } /** * Permite editar una transaccion por nombre para cambiarselo * * @param nombreViejo nombre de la transaccion a cambiar * @param nombreNuevo nuevo nombre */ public void editarTransaccion(String nombreViejo, String nombreNuevo) { for(Transaccion elemento:this.gestiones) { if(elemento.getNombre().equals(nombreViejo)) { elemento.setName(nombreNuevo); return; } } } /** * Edita la fecha de una transaccion dada su fecha * * @param nombreViejo nombre de la trasnaccion a editar * @param fecha nueva fecha */ public void editarTransaccionFecha(String nombreViejo, LocalDate fecha) { for(Transaccion elemento:this.gestiones) { if(elemento.getNombre().equals(nombreViejo)) { elemento.setFecha(fecha); return; } } } /** * Edita la transaccion con el nombre indicado alterando el dinero que cuesta * * @param nombreViejo nombre de la transaccion a editar * @param dinero nueva cantidad de dinero; */ public void editarTransaccionDiero(String nombreViejo, float dinero) { for(Transaccion elemento:this.gestiones) { if(elemento.getNombre().equals(nombreViejo)) { elemento.setPrecio(dinero); return; } } } /** * Devuelve verdadero si es un ingerso y falso si es un gasto * * @return verdadero si es ingersos y falso si sin gastos */ public boolean esIngreso() { return this.isPositivo; } /** * Permite alterar la visibilidad de un elemento * * @param elemento indice del elemento a alterar */ public void alterarVisibilidad(int elemento) { if(this.gestiones.get(elemento).alterarVisivilidad()) { this.suma += this.gestiones.get(elemento).getDinero(); if(this.isPositivo) { this.total += this.gestiones.get(elemento).getDinero(); }else { this.total -= this.gestiones.get(elemento).getDinero(); } }else { this.suma -= this.gestiones.get(elemento).getDinero(); if(this.isPositivo) { this.total -= this.gestiones.get(elemento).getDinero(); }else { this.total += this.gestiones.get(elemento).getDinero(); } } } public String toString() { return this.nombre + " " + this.suma + " Gastos:" + this.isPositivo + " Modificado:"+ this.isModified; } }