/* * Group.java * * Proyecto Fin de Carrera 2002/2003 * GESTION DE INFORMES DE ALTA CON TECNOLOGIA JAVA * Y BASE DE DATOS XML NATIVAS */ package InformeAlta; import java.util.Vector; import java.util.Hashtable; import org.xmldb.api.base.*; import org.xmldb.api.modules.*; import org.w3c.dom.*; import org.apache.xpath.*; import org.apache.xpath.objects.*; /** * @author Irene Lavado Gomez */ /** * Definimos la clase Group, que nos ayudará a trabajar con los grupos de * clases del tipo Informe */ public class Group { private Vector informeList = new Vector(); private int index = 0; /** * Devuelve el index actual */ public int getIndex() { return index - 1; } /** * Devuelve el siguiente informe de la lista */ public Informe getNext() { Informe informe = (Informe) informeList.get(index); index = index + 1; return informe; } /** * Devuelve el elemento informe con un index determinado */ public Informe getInformeAt(int i) { return (Informe) informeList.get(i); } /** * Añade informe al Group */ public void add(Informe informe) { informeList.add(informe); } /** * Añade Informes a partir de Result set */ public void addResults(ResourceIterator results) { try { while (results.hasMoreResources()) { // Crea una nueva instancia informe para añadir al Group Informe informe = new Informe(); // Recupera el nodo siguiente XMLResource resource = (XMLResource) results.nextResource(); // Lo convierte a nodo Dom Node originalnode = resource.getContentAsDOM(); // Consigue el dockey de este nodo para su posterior uso String dockey = resource.getDocumentId(); informe.setDocKey(dockey); // Usa parser xpath Xalan para extraer los datos, almacenados // en una hastable XObject xo = new XObject(); xo = XPathAPI.eval(originalnode, "/informe/DatosDemograficosPaciente/IdPaciente"); // DNI xo = XPathAPI.eval(originalnode, "/informe/DatosDemograficosPaciente/IdPaciente/ValorId"); informe.setValorId(xo.toString()); // Nombre y apellidos del paciente xo = XPathAPI.eval(originalnode, "/informe/DatosDemograficosPaciente/NombrePaciente/NombreEstructurado/Nombre"); informe.setNombre(xo.toString()); xo = XPathAPI.eval(originalnode, "/informe/DatosDemograficosPaciente/NombrePaciente/NombreEstructurado/PrimerApellido"); informe.setPrimerApellido(xo.toString()); xo = XPathAPI.eval(originalnode, "/informe/DatosDemograficosPaciente/NombrePaciente/NombreEstructurado/SegundoApellido"); informe.setSegundoApellido(xo.toString()); // Añade un informe al group this.add(informe); } } catch (Exception e) { e.printStackTrace(); } } /** * Borra un informe del Group */ public void remove(int i) { informeList.remove(i); } /** * Borra todos los informess del Group */ public void removeAll() { informeList.removeAllElements(); } /** * Return the size of the Group */ public int sizeOf() { return informeList.size(); } /** * Borra el contador para recuperar informe */ public void reset() { index = 0; } /** * Devuelve true si existen mas informes */ public boolean hasMoreInformes() { return index < informeList.size(); } }