feat(ch 8 & 9): added

This commit is contained in:
Rafa Muñoz
2025-02-16 19:47:41 +01:00
parent acb8877882
commit 1b2b2350f1
213 changed files with 96731 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
package tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias;
import java.io.Serializable;
import javax.persistence.*;
import tutorialJava.modelosBasesDeDatosComunesJPA.Entidad;
import java.util.Date;
/**
* The persistent class for the persona database table.
*
*/
@Entity
@Table(name="persona")
@NamedQuery(name="Persona.findAll", query="SELECT p FROM Persona p")
public class Persona extends Entidad implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private boolean activo;
@Column(name="apellido1")
private String primerApellido;
@Column(name="apellido2")
private String segundoApellido;
private int edad;
@Temporal(TemporalType.DATE)
private Date fechaNacimiento;
private String nombre;
//bi-directional many-to-one association to Provincia
@ManyToOne
@JoinColumn(name="idProvincia")
private Provincia provincia;
public Persona() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public boolean getActivo() {
return this.activo;
}
public void setActivo(boolean activo) {
this.activo = activo;
}
public String getPrimerApellido() {
return this.primerApellido;
}
public void setPrimerApellido(String primerApellido) {
this.primerApellido = primerApellido;
}
public String getSegundoApellido() {
return this.segundoApellido;
}
public void setSegundoApellido(String segundoApellido) {
this.segundoApellido = segundoApellido;
}
public int getEdad() {
return this.edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
public Date getFechaNacimiento() {
return this.fechaNacimiento;
}
public void setFechaNacimiento(Date fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Provincia getProvincia() {
return this.provincia;
}
public void setProvincia(Provincia provincia) {
this.provincia = provincia;
}
}

View File

@@ -0,0 +1,78 @@
package tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias;
import java.io.Serializable;
import javax.persistence.*;
import tutorialJava.modelosBasesDeDatosComunesJPA.Entidad;
import java.util.List;
/**
* The persistent class for the provincia database table.
*
*/
@Entity
@Table(name="provincia")
@NamedQuery(name="Provincia.findAll", query="SELECT p FROM Provincia p")
public class Provincia extends Entidad implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String descripcion;
//bi-directional many-to-one association to Persona
@OneToMany(mappedBy="provincia")
private List<Persona> personas;
public Provincia() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getDescripcion() {
return this.descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public List<Persona> getPersonas() {
return this.personas;
}
public void setPersonas(List<Persona> personas) {
this.personas = personas;
}
public Persona addPersona(Persona persona) {
getPersonas().add(persona);
persona.setProvincia(this);
return persona;
}
public Persona removePersona(Persona persona) {
getPersonas().remove(persona);
persona.setProvincia(null);
return persona;
}
@Override
public String toString() {
return this.descripcion;
}
}

View File

@@ -0,0 +1,131 @@
package tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.controladores;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import tutorialJava.Utils;
import tutorialJava.modelosBasesDeDatosComunesJPA.Controlador;
import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.Persona;
import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.Provincia;
public class PersonaControlador extends Controlador {
private static PersonaControlador controller = null;
public PersonaControlador() {
super(Persona.class, "PoblacionProvincial");
}
/**
*
* @return
*/
public static PersonaControlador getControlador () {
if (controller == null) {
controller = new PersonaControlador();
}
return controller;
}
/**
*
*/
public Provincia find (int id) {
return (Provincia) super.find(id);
}
/**
*
* @return
*/
public List<Persona> findAllPersonas () {
List<Persona> entities = new ArrayList<Persona>();
EntityManager em = getEntityManagerFactory().createEntityManager();
try {
Query q = em.createNativeQuery("SELECT * FROM persona", Persona.class);
entities = (List<Persona>) q.getResultList();
}
catch (NoResultException nrEx) {
}
em.close();
return entities;
}
// Arrays para generaci<63>n de personas al azar
private static String nombres[] = new String[] {"Eva", "Juan", "Carmen", "Pablo", "Rafa", "Pilar", "Pedro",
"Lola", "Casimiro", "Gertrudis", "Eustaquio", "Gerarda", "Nepomunosio", "Argimira", "Ascensio", "Baltasara", "Baudilio", "Bernabea"};
private static String apellidos[] = new String[] {"Gonzalez", "Lopez", "Gutierrez", "Ruiz", "Jurado", "Carrasco", "Flores",
"Sanchez", "Bose", "Martin", "Martinez", "Santos", "Pozo", "Quijano", "Romero", "Pisano", "Cuevas", "Sanz"};
/**
*
*/
public static void inicializaDatosEnTabla () {
int personasPorProvincia = 100;
// Para cada provincia, eliminar<61> a las personas creadas y crear<61> nuevas
PersonaControlador.getControlador().deleteAll();
List<Provincia> provincias = ProvinciaControlador.getControlador().findAllProvincias();
for (Provincia provincia : provincias) {
for (int i = 0; i < 100; i++) {
Persona persona = new Persona();
persona.setNombre(getStringAlAzar(nombres));
persona.setPrimerApellido(getStringAlAzar(apellidos));
persona.setSegundoApellido(getStringAlAzar(apellidos));
persona.setProvincia(provincia);
persona.setFechaNacimiento(getFechaAzar(1900, 2019));
persona.setEdad(calculaEdad(persona.getFechaNacimiento()));
persona.setActivo( (Utils.obtenerNumeroAzar(0, 100) <= 50)? true : false );
PersonaControlador.getControlador().persist(persona);
}
}
}
/**
*
* @param strings
* @return
*/
private static String getStringAlAzar (String strings[]) {
return strings[Utils.obtenerNumeroAzar(0, strings.length - 1)];
}
/**
*
* @return
*/
private static Date getFechaAzar (int anioMin, int anioMax) {
Calendar calendar = new GregorianCalendar(Utils.obtenerNumeroAzar(anioMin, anioMax) /*a<>o*/, Utils.obtenerNumeroAzar(0, 11) /*mes*/, Utils.obtenerNumeroAzar(1, 31) /*d<>a*/);
return calendar.getTime();
}
/**
*
* @return
*/
private static int calculaEdad (Date fechaNacimiento) {
return (int) ChronoUnit.YEARS.between(fechaNacimiento.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
}
}

View File

@@ -0,0 +1,93 @@
package tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.controladores;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import tutorialJava.modelosBasesDeDatosComunesJPA.Controlador;
import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.Provincia;
public class ProvinciaControlador extends Controlador {
private static ProvinciaControlador controller = null;
public ProvinciaControlador() {
super(Provincia.class, "PoblacionProvincial");
}
/**
*
* @return
*/
public static ProvinciaControlador getControlador () {
if (controller == null) {
controller = new ProvinciaControlador();
}
return controller;
}
/**
*
*/
public Provincia find (int id) {
return (Provincia) super.find(id);
}
/**
*
* @return
*/
public List<Provincia> findAllProvincias () {
List<Provincia> entities = new ArrayList<Provincia>();
EntityManager em = getEntityManagerFactory().createEntityManager();
try {
Query q = em.createNativeQuery("SELECT * FROM provincia", Provincia.class);
entities = (List<Provincia>) q.getResultList();
}
catch (NoResultException nrEx) {
}
em.close();
return entities;
}
/**
*
*/
public static void inicializaDatosEnTabla () {
String nombresProvincias[] = new String[] {"<EFBFBD>lava", "Albacete", "Alicante", "Almer<EFBFBD>a", "Asturias", "<EFBFBD>vila", "Badajoz",
"Barcelona", "Burgos", "C<EFBFBD>ceres", "C<EFBFBD>diz", "Cantabria", "Castell<EFBFBD>n", "Ciudad Real", "C<EFBFBD>rdoba", "Cuenca", "Gerona",
"Granada", "Guadalajara", "Guip<EFBFBD>zcoa", "Huelva", "Huesca", "Islas Baleares", "Ja<EFBFBD>n", "La Coru<72>a", "La Rioja",
"Las Palmas", "Le<EFBFBD>n", "L<EFBFBD>rida", "Lugo", "Madrid", "M<EFBFBD>laga", "Murcia", "Navarra", "Orense", "Palencia", "Pontevedra",
"Salamanca", "Segovia", "Sevilla", "Soria", "Tarragona", "Tenerife", "Teruel", "Toledo", "Valencia", "Valladolid",
"Vizcaya", "Zamora", "Zaragoza"};
Provincia entidades[] = new Provincia[nombresProvincias.length];
// Tenemos 50 provincias, si no se llega a tener todas, se eliminan los datos de la BBDD y se crea nuevamente
if (ProvinciaControlador.getControlador().findAll().size() != 50) {
// Elimino los datos de personas y despu<70>s los de provincias
PersonaControlador.getControlador().deleteAll();
ProvinciaControlador.getControlador().deleteAll();
// Recorro el array de Strings, dando de alta entidades en la tabla
for (String nombreProvincia : nombresProvincias) {
Provincia provincia = new Provincia();
provincia.setDescripcion(nombreProvincia);
ProvinciaControlador.getControlador().persist(provincia);
}
}
}
}