package personalModelo.entidades; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.Access; import javax.persistence.AccessType; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; @Entity @Access(AccessType.PROPERTY) public class GS_TablaComunidades implements Serializable { @ GeneratedValue ( strategy = GenerationType.TABLE , generator = "codigoIdComunidad" ) @ SequenceGenerator ( name = "codigoIdComunidad" , initialValue = 1 , allocationSize = 1 ) @Id private int codigoIdComunidad; private SimpleStringProperty nombreComunidad; // creamos la relacion de muchos a uno con la tabla ciudades @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "codigoIdCiudad",nullable = true) // se crea el campo de llave externa private GS_TablaCiudades ciudades; // establecemos la relacion de uno a muchos con la tablaLocalidades @OneToMany(targetEntity = GS_TablaLocalidades.class, mappedBy = "comunidades", cascade = CascadeType.ALL) private List listaLocalidades = new ArrayList(); private static final long serialVersionUID = 1L; // constructoer vacio public GS_TablaComunidades() { super(); } // constructor con parametros public GS_TablaComunidades(int codigoIdComunidad, SimpleStringProperty nombreComunidad, GS_TablaCiudades ciudades, List listaLocalidades) { this.codigoIdComunidad = codigoIdComunidad; this.nombreComunidad = nombreComunidad; this.ciudades = ciudades; this.listaLocalidades = listaLocalidades; } // metodos para el codigo public int getCodigoIdComunidad() { return codigoIdComunidad; } public void setCodigoIdComunidad(int codigoIdComunidad) { this.codigoIdComunidad = codigoIdComunidad; } // metodos para el campo nombreComunidad public String getNombreComunidad() { return this.nombreComunidad.get(); } public void setNombreComunidad(String nombreComunidad) { this.nombreComunidad = new SimpleStringProperty(nombreComunidad); } public StringProperty nombreComunidadProperty() { return nombreComunidad; } // metodos para la lista Localidades public List getListaLocalidades() { return listaLocalidades; } public void setListaLocalidades(List listaLocalidades) { this.listaLocalidades = listaLocalidades; } // metodos para la tabla ciudades public GS_TablaCiudades getCiudades() { return ciudades; } public void setCiudades(GS_TablaCiudades ciudades) { this.ciudades = ciudades; } // metodo de esrititura toString @Override public String toString() { return nombreComunidad.get(); } // metodo que permite Agregar en la tabla Localidades el registro y actualiza la lista en la tabla comunidades public void agregarEnListaLocalidades(GS_TablaLocalidades localidad ){ System.out.println("CodigoLocalidad: "+localidad.getCodigoIdLocalidad()+" nombre: "+localidad.getNombreLocalidad()+"\n"); if(localidad.getCodigoIdLocalidad() == 0) { // se graba nueva Localidad localidad.setComunidades(this); this.listaLocalidades.add(localidad); System.out.println("listaLocalidades : "+this.listaLocalidades.size()); }else { // se actualiza datos ciudad int fila = 0; for(GS_TablaLocalidades tl: listaLocalidades) { System.out.println("Comunidad: "+tl.getCodigoIdLocalidad()+" ..: "+localidad.getNombreLocalidad()); if(tl.getCodigoIdLocalidad()== localidad.getCodigoIdLocalidad()) { listaLocalidades.set(fila, localidad); localidad.setComunidades(null); // se anula el elemento Ciudad en la tablaLocalidades break; } fila++; } } localidad.setComunidades(this); // se agrega en la tablaComunidades el elemento pais nuevo o nodificado } // metodo que permite eliminar elementos de la lista ciudades public void eliminaLocalidadDeLista(GS_TablaLocalidades miLocalidad, GS_TablaComunidades miComunidad) { for(GS_TablaLocalidades lista: miComunidad.getListaLocalidades()){ if(lista.equals(miLocalidad)){ this.listaLocalidades.remove(lista); // se elimina del campo lista break; } } } }