@Override protected Integer doInBackground() { setMessage("Procensado usuarios..."); int cont = 0; PreparedStatement st = null; ResultSet res = null; int asoc = 0; try { st = (PreparedStatement) MaimonidesApp.getConexion() .prepareStatement( "SELECT p.cod FROM profesores AS p JOIN usuarios_profesores AS up ON up.profesor_id=p.id AND p.ano=up.ano WHERE p.ano<>? AND up.usuario_id=? ORDER BY p.ano DESC LIMIT 0,1"); st.setInt(1, MaimonidesApp.getApplication().getAnoEscolar().getId()); for (Usuario u : modelo.getDatos()) { cont++; setProgress(cont, 0, modelo.getRowCount()); setMessage("Verificando " + u + "..."); if (u.getProfesor() == null) { // Vemos la id del profesor del año anterior st.setInt(2, u.getId()); res = st.executeQuery(); if (res.next()) { Profesor p = Profesor.getProfesorPorCodigo( res.getInt(1), MaimonidesApp.getApplication().getAnoEscolar()); if (p != null) { u.setProfesor(p); if (u.guardar()) { asoc++; } } } } } } catch (SQLException ex) { Logger.getLogger(PanelUsuarios.class.getName()).log(Level.SEVERE, null, ex); } return asoc; }
public ArrayList<ParteConvivencia> getPartes() { if (partes == null) { partes = new ArrayList<ParteConvivencia>(); PreparedStatement st = null; ResultSet res = null; try { st = (PreparedStatement) MaimonidesApp.getConexion() .prepareStatement("SELECT * FROM conv_partes WHERE expulsion_id=?"); st.setInt(1, getId()); res = st.executeQuery(); while (res.next()) { ParteConvivencia parte = new ParteConvivencia(); parte.cargarDesdeResultSet(res); partes.add(parte); } } catch (Exception ex) { Logger.getLogger(Expulsion.class.getName()).log(Level.SEVERE, null, ex); } Obj.cerrar(st, res); } return partes; }
// TODO Implementar el envío directo a Séneca public File exportarHorariosXMLSeneca() throws IOException { File ficheroXml = null; // Primero precargamos los profesores, unidades, etc firePropertyChange("message", null, "Precargando datos de profesores..."); Profesor.getProfesores(); firePropertyChange("message", null, "Precargando datos de unidades..."); Unidad.getUnidades(); firePropertyChange("message", null, "Precargando datos de dependencias..."); Dependencia.getDependencias(); firePropertyChange("message", null, "Precargando datos de tramos horarios..."); TramoHorario.getTramosHorarios(); firePropertyChange("message", null, "Precargando datos de materias..."); Materia.getMaterias(); firePropertyChange("message", null, "Precargando datos de actividades..."); Actividad.getActividades(); firePropertyChange("message", null, "Precargando datos de unidades..."); Unidad.getUnidades(); firePropertyChange("message", null, "Precargando datos de cursos..."); Curso.getCursos(); int contadorProfesores = 1; int contadorActividad = 1; // Ahora cargamos todos los horarios del año escolar PreparedStatement st = null; ResultSet res = null; try { firePropertyChange("message", null, "Procesando horarios..."); st = (PreparedStatement) MaimonidesApp.getConexion() .prepareStatement("SELECT * FROM horarios_ WHERE ano=? ORDER BY profesor_id "); st.setInt(1, MaimonidesApp.getApplication().getAnoEscolar().getId()); res = st.executeQuery(); int ultimoProfesor = -1; ArrayList<String> bloquesProfesores = new ArrayList<String>(); ArrayList<String> bloquesActividad = new ArrayList<String>(); while (res.next()) { try { int idProfesor = res.getInt("profesor_id"); int dia = res.getInt("dia"); int idMateria = res.getInt("materia_id"); int idActividad = res.getInt("actividad_id"); int idUnidad = res.getInt("unidad_id"); int idDependencia = res.getInt("aula_id"); Dependencia dependencia = null; if (idDependencia > 0) { try { dependencia = Dependencia.getDependencia(idDependencia); } catch (Exception ex) { Logger.getLogger(ExportadorHorariosSeneca.class.getName()) .log(Level.SEVERE, "No existe la dependencia " + idDependencia + ".", ex); } } TramoHorario tramo = TramoHorario.getTramoHorario(res.getInt("tramo_id")); Materia materia = null; Actividad actividad = Actividad.getActividad(idActividad); Unidad unidad = Unidad.getUnidad(idUnidad); Curso curso = Curso.getCurso(unidad.getIdCurso()); if (idMateria > 0) { materia = Materia.getMateria(idMateria); } if (idProfesor != ultimoProfesor) { // Si cambiamos de profesor tenemos que crear un nuevo registro // si el profesor anterior no era -1 if (ultimoProfesor != -1) { String bloqueProfesor = getBloqueProfesor(contadorProfesores, idProfesor, bloquesActividad); if (bloqueProfesor != null) { bloquesProfesores.add(bloqueProfesor); contadorProfesores++; } bloquesActividad.clear(); contadorActividad = 1; } } ultimoProfesor = idProfesor; // Añadimos el bloque de actividades bloquesActividad.add( getXMLBloqueHorario( MaimonidesApp.getApplication().getAnoEscolar(), contadorActividad, dia, tramo, dependencia, curso, unidad, actividad, materia)); contadorActividad++; } catch (Exception e) { Logger.getLogger(ExportadorHorariosSeneca.class.getName()) .log(Level.SEVERE, "Ha habido un error procesando el horario.", e); } } // Añadimos el último profesor if (ultimoProfesor != -1) { String bloqueProfesor = getBloqueProfesor(contadorProfesores, ultimoProfesor, bloquesActividad); if (bloqueProfesor != null) { bloquesProfesores.add(bloqueProfesor); } } // Ahora generamos el resto del documento GregorianCalendar fecha = new GregorianCalendar(); StringBuilder xml = new StringBuilder(); xml.append( String.format( "<SERVICIO modulo=\"HORARIOS\" tipo=\"I\" autor=\"Maimonides %s\" fecha=\"%2$tm/%2$td/%2$tY %tT\">\n", Mantenimiento.getAplicationVersion(), fecha, fecha)); xml.append("<BLOQUE_DATOS>\n"); xml.append( String.format( "\t<grupo_datos seq=\"ANNO_ACADEMICO\">\n\t\t<dato nombre_dato=\"C_ANNO\">%d</dato>\n\t</grupo_datos>\n", MaimonidesApp.getApplication().getAnoEscolar().getAno())); xml.append( String.format( "\t<grupo_datos seq=\"HORARIOS_REGULARES\" registros=\"%d\">\n", bloquesProfesores.size())); xml.append(Str.implode(bloquesProfesores, "")); xml.append("\t</grupo_datos>\n"); xml.append("</BLOQUE_DATOS>\n"); xml.append("</SERVICIO>\n"); // Ahora guardamos el contenido en el fichero ficheroXml = File.createTempFile("horarios_seneca", ".xml"); Archivo.setContenido(xml.toString(), "ISO-8859-1", ficheroXml, false); } catch (SQLException ex) { Logger.getLogger(ExportadorHorariosSeneca.class.getName()) .log(Level.SEVERE, "Error recuperando listado de horarios.", ex); } Obj.cerrar(st, res); return ficheroXml; }