예제 #1
0
 private Profesor parseProfesor(ResultSet resultSet) throws SQLException {
   Profesor profesor = new Profesor();
   profesor.setId(resultSet.getLong(1));
   profesor.setNombre(resultSet.getString(2));
   profesor.setApellido(resultSet.getString(3));
   profesor.setFechaNacimiento(new Date(resultSet.getDate(4).getTime()));
   Curso grado = new Curso();
   grado.setId(resultSet.getLong(5));
   Materia materia = new Materia();
   List<Profesor> profesores = Lists.newArrayList(profesor);
   materia.setProfesores(profesores);
   profesor.setMaterias(materiaDAO.search(materia));
   return profesor;
 }
예제 #2
0
 @Override
 public List<Profesor> search(final Profesor entity) throws SQLException {
   StringBuilder sqlBuilder = new StringBuilder("SELECT p.* FROM profesor p ");
   boolean needsAnd = false;
   if (entity != null && entity.getMaterias() != null && !entity.getMaterias().isEmpty()) {
     sqlBuilder.append("INNER JOIN profesores_materias pm ON (p.id = pm.id_profesor) ");
   }
   if (entity != null && entity.getId() != null) {
     sqlBuilder.append("WHERE id = ? ");
     needsAnd = true;
   }
   if (entity != null && entity.getNombre() != null) {
     addSqlNexus(sqlBuilder, needsAnd);
     sqlBuilder.append("nombre = ? ");
   }
   if (entity != null && entity.getApellido() != null) {
     addSqlNexus(sqlBuilder, needsAnd);
     sqlBuilder.append("apellido = ? ");
   }
   if (entity != null && entity.getFechaNacimiento() != null) {
     addSqlNexus(sqlBuilder, needsAnd);
     sqlBuilder.append("fecha_nacimiento = ? ");
   }
   if (entity != null && entity.getMaterias() != null && !entity.getMaterias().isEmpty()) {
     addSqlNexus(sqlBuilder, needsAnd);
     sqlBuilder.append("pm.id_materia IN (?)");
   }
   GenericStatement<ResultSet> genericStatement = new GenericStatement<ResultSet>();
   ResultSet resultSet =
       genericStatement
           .statement(sqlBuilder.toString())
           .populator(
               new ParameterPopulator() {
                 @Override
                 public void populateParameters(PreparedStatement prepStmt, Connection connection)
                     throws SQLException {
                   int param = 1;
                   if (entity != null && entity.getId() != null) {
                     prepStmt.setLong(param, entity.getId());
                     param++;
                   }
                   if (entity != null && entity.getNombre() != null) {
                     prepStmt.setString(param, entity.getNombre());
                     param++;
                   }
                   if (entity != null && entity.getApellido() != null) {
                     prepStmt.setString(param, entity.getApellido());
                     param++;
                   }
                   if (entity != null && entity.getFechaNacimiento() != null) {
                     prepStmt.setDate(
                         param, new java.sql.Date(entity.getFechaNacimiento().getTime()));
                     param++;
                   }
                   if (entity != null
                       && entity.getMaterias() != null
                       && !entity.getMaterias().isEmpty()) {
                     List<Long> transform =
                         Lists.transform(
                             entity.getMaterias(),
                             new Function<Materia, Long>() {
                               @Override
                               public Long apply(Materia materia) {
                                 return materia.getId();
                               }
                             });
                     Array materiasArray =
                         connection.createArrayOf("INTEGER", transform.toArray());
                     prepStmt.setArray(param, materiasArray);
                     param++;
                   }
                 }
               })
           .handler(new ProjectableResultHandler())
           .run();
   return parseProfesores(resultSet);
 }