EJECUCIÓN Y TESTEO DE LA APLICACIÓN
Llega el momento de comprobar si el mapeo de la base de datos ha sido correcto. Para ello vamos a proceder a crear nuestro fichero main de aplicación JavaSE, al cual vamos a llamar NominaApp.El diseño de NominaApp será simple. Por un lado crearemos un método que llamaremos generaDatos(). En ese método crearemos y grabaremos los datos de varios trabajadores, junto con las nóminas de varios meses.
La información adicional para la creación de datos sería esta:
- Las categorias laborales son: peones, auxiliares,oficiales, encargados, administrativos,jefes, directores.
- Los puestos son: operario, encargado, administrativo, jefe.
- Los centros de trabajo:
a. Central - c/albasanz, 24 - Madrid
b. Almacén - av. de la industria, 4 - Coslada
Por otro lado crearemos el método listaDatos() que se encargará de mostrarnos por pantalla los datos creados anteriormente.
En ambos métodos estaremos testeando el correcto funcionamiento de nuestro mapeo, tanto de nuestras relaciones OneToOne como las relaciones ManyToOne.
He aquí la clase NominaApp:
public class NominaApp {
private static NominaApp app;
public static void main(String[] args) {
// instanciamos la aplicacion
app=new NominaApp();
// creamos los datos
app.generaDatos();
// mostramos informacion
app.listaDatos();
// al terminar cerramos el EntityManagerFactory y cerramos todas la conexiones
NominaDAO.closeEmf();
}
private void generaDatos() {
// PARA TESTEAR ESTA APLICACIÓN VAMOS A CREAR 3 EMPLEADOS CON DISTINTAS CATEGORIAS Y
// CENTROS DE TRABAJO, Y VAMOS A CREAR DOS NOMINAS DE MESES DISTINTOS POR CADA EMPLEADO.
NominaDAO nomDAO=new NominaDAO();
// primero los empleados - para ello creamos los datos profesionales y
// luego los personales
// ***** EMPLEADO 1
// datos profesionales
Datosprofesionales dprof1=new Datosprofesionales("Oficial","Operario","Central","Albasanz, 24","Madrid");
// datos personales
Empleado empl1=new Empleado(dprof1,"Felipe Mendez","50999999E","28/034425522/08","Alcala, 522","Madrid","28032",2,1,(float) 12.5,"ESAB00340100001045628945");
if (nomDAO.creaEmpleado(empl1)) {
System.out.println("Creado empleado 1");
} else System.out.println("Error creando empleado");
// ***** EMPLEADO 2
// datos profesionales
Datosprofesionales dprof2=new Datosprofesionales("Auxiliar","Operario","Almacén","Av. de la Industria, 4","Coslada");
// datos personales
Empleado empl2=new Empleado(dprof2,"Andrés Gómez","22222222J","28/034567321/07","Miguel Yuste, 5","Madrid","28022",3,0,(float) 15,"ESCD20380105300030056745");
if (nomDAO.creaEmpleado(empl2)) {
System.out.println("Creado empleado 2");
} else System.out.println("Error creando empleado");
// ***** EMPLEADO 3
// datos profesionales
Datosprofesionales dprof3=new Datosprofesionales("Administrativo","Administrativo","Central","Albasanz, 24","Madrid");
// datos personales
Empleado empl3=new Empleado(dprof3,"Luis Subirana","37988123E","28/018536774/08","Puerto Arlabán, 7","Madrid","28053",3,1,(float) 15,"ESLC01011234013000243511");
if (nomDAO.creaEmpleado(empl3)) {
System.out.println("Creado empleado 3");
} else System.out.println("Error creando empleado");
// Para crear las nominas, listamos los empleados y grabamos las nominas una a una
List<Empleado> listaEmpleados=nomDAO.listaEmpleados();
// ***** GRABACION DE LAS NOMINAS DEL MES DE MAYO
if (listaEmpleados!=null) {
for (Empleado emp: listaEmpleados) {
int periodo=0; // mes
float salario=0; // salario neto
float compl=0; //complemento
float retIrpf=emp.getRetencion(); //retencion irpf
float irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
float retSS=8; // retencion seguridad social
float segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
float neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
// grabacion de la nomina de mayo
if (emp.getNombre().equals("Felipe Mendez")) {
// nomina de Felipe Mendez
// creamos los datos para hacer la nomina del empleado 1 mes mayo
periodo=5; // mes de mayo
salario=1500; // salario neto
compl=250; //complemento
retIrpf=emp.getRetencion(); //retencion irpf
irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
retSS=8; // retencion seguridad social
segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
}
if (emp.getNombre().equals("Andrés Gómez")) {
// nomina de Andrés Gómez
// creamos los datos para hacer la nomina del empleado 2 mes mayo
periodo=5; // mes de mayo
salario=1300; // salario neto
compl=150; //complemento
retIrpf=emp.getRetencion(); //retencion irpf
irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
retSS=8; // retencion seguridad social
segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
}
if (emp.getNombre().equals("Luis Subirana")) {
// nomina de Luis Subirana
// creamos los datos para hacer la nomina del empleado 3 mes mayo
periodo=5; // mes de mayo
salario=1600; // salario neto
compl=100; //complemento
retIrpf=emp.getRetencion(); //retencion irpf
irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
retSS=8; // retencion seguridad social
segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
}
// creamos la nomina y la grabamos
Nomina nomina=new Nomina(emp,emp.getProfs(), periodo, salario, compl, retIrpf, irpf, retSS, segsoc, neto);
if (nomDAO.creaNomina(nomina)) {
System.out.println("Nomina creada");
System.out.println(nomina.toString());
} else System.out.println("Error creando nomina");
}
}
// ***** GRABACION DE LAS NOMINAS DEL MES DE JUNIO + PAGA
if (listaEmpleados!=null) {
for (Empleado emp: listaEmpleados) {
int periodo=0; // mes
float salario=0; // salario neto
float compl=0; //complemento
float retIrpf=emp.getRetencion(); //retencion irpf
float irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
float retSS=8; // retencion seguridad social
float segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
float neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
// grabacion de la nomina de mayo
if (emp.getNombre().equals("Felipe Mendez")) {
// nomina de Felipe Mendez
// creamos los datos para hacer la nomina del empleado 1 mes junio
periodo=6; // mes de junio + paga
salario=2500; // salario neto
compl=250; //complemento
retIrpf=emp.getRetencion(); //retencion irpf
irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
retSS=8; // retencion seguridad social
segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
}
if (emp.getNombre().equals("Andrés Gómez")) {
// nomina de Andrés Gómez
// creamos los datos para hacer la nomina del empleado 2 mes junio
periodo=6; // mes de junio + paga
salario=2100; // salario neto
compl=150; //complemento
retIrpf=emp.getRetencion(); //retencion irpf
irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
retSS=8; // retencion seguridad social
segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
}
if (emp.getNombre().equals("Luis Subirana")) {
// nomina de Luis Subirana
// creamos los datos para hacer la nomina del empleado 3 mes junio
periodo=6; // mes de junio + paga
salario=2700; // salario neto
compl=100; //complemento
retIrpf=emp.getRetencion(); //retencion irpf
irpf=(salario+compl)*retIrpf/100; // cantidad retenida por irpf
retSS=8; // retencion seguridad social
segsoc=(salario+compl)*retSS/100; // cantidad retenida por s.s.
neto=salario+compl-irpf-segsoc; // neto a cobrar en nomina
}
// creamos la nomina y la grabamos
Nomina nomina=new Nomina(emp,emp.getProfs(), periodo, salario, compl, retIrpf, irpf, retSS, segsoc, neto);
if (nomDAO.creaNomina(nomina)) {
System.out.println("Nomina creada");
System.out.println(nomina.toString());
} else System.out.println("Error creando nomina");
}
}
}
private void listaDatos() {
// PARA TESTEAR EL ACCESO A DATOS VAMOS A SOLICITAR DIFERENTE INFORMACIÓN A LA APLICACIÓN
// ACCEDEREMOS DESDE OBJETOS DISTINTOS PARA COMPROBAR QUE LAS RELACIONES ONETOONE,
// MANYTOONE Y ONETOMANY FUNCIONAN CORRECTAMENTE.
NominaDAO nomDAO=new NominaDAO();
// lista total de empleados
System.out.println();
System.out.println("Lista de empleados");
System.out.println("----------------------------");
for (Empleado emp:nomDAO.listaEmpleados()) {
// aqui se testea el OneToOne
System.out.println(emp.toString());
}
// lista de empleados en la central
System.out.println();
System.out.println("Lista de empleados de la Central");
System.out.println("----------------------------");
for (Empleado emp:nomDAO.listaEmpleados()) {
// aqui se testea el OneToOne
if (emp.getProfs().getCentro().equals("Central")) System.out.println(emp.toString());
}
// lista de todas las nominas
System.out.println();
System.out.println("Lista de Nominas");
System.out.println("----------------------------");
for (Nomina nom:nomDAO.listaNominas()) {
// aqui se testea el ManyToOne
System.out.println(nom.toString());
}
// lista de las nominas de la central
System.out.println();
System.out.println("Lista de nominas de la Central");
System.out.println("----------------------------");
for (Nomina nom:nomDAO.listaNominas()) {
// aqui se testea el ManyToOne
if (nom.getIdDatosProfesionales().getCentro().equals("Central")) System.out.println(nom.toString());
}
// lista de las nominas de Felipe Mendez
System.out.println();
System.out.println("Lista de nominas de un trabajador");
System.out.println("----------------------------");
for (Empleado emp:nomDAO.listaEmpleados()) {
// aqui se testea el OneToMany
if (emp.getNombre().equals("Felipe Mendez")) {
for (Nomina nom:emp.getNominas()) {
System.out.println(nom.toString());
}
}
}
System.out.println();
System.out.println("Lista de nominas de un trabajador");
System.out.println("----------------------------");
for (Nomina nom:nomDAO.listaNominas()) {
// REPETIMOS CONSULTA: aqui se testea lo mismo pero con el ManyToOne
if (nom.getIdEmpleado().getNombre().equals("Felipe Mendez")) System.out.println(nom.toString());
}
// lista de las nominas del mes de junio
System.out.println();
System.out.println("Lista de nominas del mes junio");
System.out.println("----------------------------");
for (Nomina nom:nomDAO.listaNominas()) {
// aqui se testea el ManyToOne
if (nom.getPeriodo()==6) System.out.println(nom.toString());
}
// lista de las nominas de la categoria Operario
System.out.println();
System.out.println("Lista de nominas por categoria profesional Operario");
System.out("----------------------------");
for (Nomina nom:nomDAO.listaNominas()) {
// aqui se testea el ManyToOne
if (nom.getIdDatosProfesionales().getTipo().equals("Operario"))
System.out.println( nom.toString());
}
}
}
Continuará...
No hay comentarios:
Publicar un comentario