mirror of
https://gitlab.com/tutorial-java-rafa-munoz/tutorial-java-2024-25/tutorialjava2024-25.git
synced 2025-11-10 02:13:07 +01:00
feat(ch 8 & 9): added
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user