// 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; }