Hola a todos, tengo un problema con este método, tiene que ir verificando las fechas que se ingresan con la de hoy, entre ellas, y que una búsqueda retorne más de 3 objetos, si aparece error me tiene que devolver que hubo error, sino el objeto entero:
Código:
public DTOTrabajadorYRol ingresarVigencia(Date fechaInicioRol, Date fechaFinRol){ //inicio metodo ingresarVigencia
DTOTrabajadorYRol dtoTrabajadorYRol = new DTOTrabajadorYRol();
boolean valor = false;
Calendar cal = new GregorianCalendar();
//FECHA INICIO MENOR FECHA HOY
if(valor == false){
int year = cal.get(Calendar.YEAR); //devuelve el anio corriente del sistema
int month = cal.get(Calendar.MONTH); //devuelve el mes actual cooriende del sistema
int day = cal.get(Calendar.DAY_OF_MONTH); //devuelve el dia actual corriente del sistema
if(fechaInicioRol.getYear() <= year){ //inicio if1
if(fechaInicioRol.getMonth() < month){ //inicio if2
dtoTrabajadorYRol.setHayError("FIFH");
valor = true;
} //fin if2
if((fechaInicioRol.getMonth() == month) && (fechaInicioRol.getDate() < day)){ //inicio if3
dtoTrabajadorYRol.setHayError("FIFH");
valor = true;
} // fin if3
} // fin if1
} //FECHA INICIO MENOR FECHA HOY
//FECHA INICIO MAYOR FECHA FIN
if(valor == false){ //inicio if
if(fechaInicioRol.after(fechaFinRol)){ //inicio if
dtoTrabajadorYRol.setHayError("FIFF");
valor = true;
} //fin if
} //fin if
//FECHA INICIO MAYOR FECHA FIN
ArrayList<Object> trabajadoresDisponibles = new ArrayList<Object>();
//MENOS DE 3 TRABAJADORES
if(valor == false){
Expresion criterioVigencia = FachadaPersistencia.getInstance().crearCriterio("fechaFinRol", "<", fechaInicioRol);
ArrayList<Object> trabajadoresRol1 = new ArrayList<Object>();
trabajadoresRol1 = FachadaPersistencia.getInstance().buscar("TrabajadorRol", criterioVigencia);
for( int m = 0; m < trabajadoresRol1.size(); m++){ //inicio for
trabajadoresDisponibles.add(((TrabajadorRol)trabajadoresRol1.get(m)).getTrabajador());
} //fin for
if(trabajadoresDisponibles.size() < 3){ //inicio if
dtoTrabajadorYRol.setHayError("TM3"); // no hay por lo menos 3 trabajadores disponibles
valor = true;
} //fin if
} //fin if
//MENOS DE 3 TRABAJADORES
//RETORNA LOS TRABAJADORES
if(valor == false){
Expresion criterio = (Criterio) FachadaPersistencia.getInstance().crearCriterio("codigoRol", ">", 0);
ArrayList<Object> roles = new ArrayList<Object>();
roles = FachadaPersistencia.getInstance().buscar("Rol", criterio);
for(Object rol : roles){ //inicio for1
DTORol dtoRol = new DTORol();
dtoRol.setCodigoRol(((Rol)rol).getCodigoRol());
dtoRol.setNombreRol(((Rol)rol).getNombreRol());
dtoTrabajadorYRol.setDTORol(dtoRol);
} // fin for1
for(int i = 0; i < trabajadoresDisponibles.size(); i++){ //inicio for2
String nombre = ((Trabajador)trabajadoresDisponibles.get(i)).getNombre();
String apellido = ((Trabajador)trabajadoresDisponibles.get(i)).getApellido();
int legajo = ((Trabajador)trabajadoresDisponibles.get(i)).getLegajo();
ArrayList<Trabajo> trabajos = ((Trabajador)trabajadoresDisponibles.get(i)).getTrabajo();
DTOTrabajador dtoTrabajador = new DTOTrabajador();
dtoTrabajador.setApellido(apellido);
dtoTrabajador.setLegajo(legajo);
dtoTrabajador.setNombre(nombre);
for(int k = 0; i < trabajos.size(); k++){
dtoTrabajador.setNombreTrabajo(trabajos.get(i).getNombreTrabajo());
}
dtoTrabajadorYRol.setDTOTrabajador(dtoTrabajador);
} //fin for 2
this.fechaFinRol = fechaFinRol;
this.fechaInicioRol = fechaInicioRol;
dtoTrabajadorYRol.setFechaInicioRol(this.fechaInicioRol);
dtoTrabajadorYRol.setFechaFinRol(this.fechaFinRol);
this.dtoTrabajadorYRol1 = dtoTrabajadorYRol;
}
//RETORNA LOS TRABAJADORES
return dtoTrabajadorYRol;
} //fin metodo ingresarVigencia
Trato de probarlo y me tira el error de NullPointerException, creería que sería en el retorno de dtoTrabajadorYRol? hace muy poco que estoy con Java y no logro ver bien en donde está el problema.
Muchas gracias.
Saludos.