/** * Created on 17 Jan. 2007 * * @author */ package integration.lecture_ecriture; import com.medias.EcritureLog; import integration.exceptions.*; import integration.utils.Constantes; import integration.vues.ParametreModele; import java.io.File; import java.util.*; import org.jdom.Element; /** * Lecture et déchiffrrage d'un modéle XML décrivant la structure d'un fichier * de données correspondant é un jeu donné. */ public class LectureModeleXML { private Element root; private String categorie; private String jeu; public LectureModeleXML(String categorie, String jeu) { this.categorie = categorie; this.jeu = jeu; } public void lireModele() { // Chemin du modéle xml é manipuler String modele = Constantes.cheminModeles + "/" + categorie + "/" + jeu + "_modele.xml"; // Etape de Construction du "parser XML" XMLParser builder = new XMLParser(); File f = new File(modele); if (f.exists()) { try { builder.readXml(modele); // EcritureLog.ecrire("******* Modéle du jeu de données : "+ f.getName() + " *******", "out"); } catch (XMLException e) { e.printStackTrace(); } } else { EcritureLog.ecrire( "Fichier " + f.getName() + " non trouvé !", "err" ); } root = builder.getRoot(); } // Partie faisant référence é l'entéte public String getNomCategorie() { return root.getChild("entete").getAttributeValue("categorie"); } // Références relatives au jeu public String getNomJeu() { return root.getChild("entete").getAttributeValue("jeu"); } // Description du jeu en question public String getDescriptionJeu() { return root.getChild("entete").getAttributeValue("description"); } // Valeur absente public String getValeurAbsente() { return root.getChild("entete").getAttributeValue("valeur_absente"); } // Noms relatifs aux organismes public String getNumOrganismeJeu() { return root.getChild("entete").getAttributeValue("organisme"); } // Delimiteur du modéle public String getDelimiteur() { return root.getChild("entete").getAttributeValue("delimiteur"); } // Subdivision ou non public String getSubdiviser() { return root.getChild("entete").getAttributeValue("subdiviser"); } // Coordonnées de la personne "pi" public String getNumeroPi() { return root.getChild("entete").getChild("pi").getAttributeValue( "numero"); } // Coordonnées de la personne "contact" public String getNumeroContact() { return root.getChild("entete").getChild("contact").getAttributeValue("numero"); } // Coordonnées de la personne "integrateur" public String getNumeroIntegrateur() { return root.getChild("entete").getChild("integrateur").getAttributeValue("numero"); } // Partie des données é manimpuler /** * Renvoie les paramétres avec leurs caractéristiques dans une liste. * * @return La liste de tous les paramétres et leurs caractéristiques. */ public ArrayList getParametres() { ArrayList infosParam = new ArrayList(); Iterator it = root.getChild("donnees").getChildren("parametre").iterator(); while (it.hasNext()) { Element child = (Element) it.next(); infosParam.add(new ParametreModele(child.getAttributeValue("nom"), child.getAttributeValue("type"), child.getAttributeValue("fonction"), child.getAttributeValue("unite"), child.getAttributeValue("delta"), child.getAttributeValue("numero"),child.getAttributeValue("format"),child.getAttributeValue("lod"))); } return infosParam; } /** * Renvoie les paramétres associés é une valeur avec leurs caractéristiques dans une liste. * * @return La liste de tous les paramétres associés et leurs caractéristiques. */ public ArrayList getParametresValeur() { ArrayList infosParam = new ArrayList(); Iterator it = root.getChild("donnees").getChildren("parametre").iterator(); String fonction; while (it.hasNext()) { Element child = (Element) it.next(); fonction = child.getAttributeValue("fonction"); if (fonction.equals(Constantes.nomFonctionInsererVal)) { infosParam.add(new ParametreModele(child.getAttributeValue("nom"), child.getAttributeValue("type"), fonction, child.getAttributeValue("unite"), child.getAttributeValue("delta"), child.getAttributeValue("numero"), child.getAttributeValue("format"),child.getAttributeValue("lod"))); } } return infosParam; } /** * Renvoie des numéros correspondant aux plateformes et leur références. */ // Liste des plateformes é manipuler public ArrayList getNumsPlateforme() { ArrayList numPlats = new ArrayList(); Iterator it = root.getChild("donnees").getChildren("plateforme").iterator(); Element child; while (it.hasNext()) { child = (Element) it.next(); numPlats.add(child.getAttributeValue("numero")); } return numPlats; } /** * Renvoie des numéros correspondant aux capteurs et leur références. */ // Liste des capteurs é manipuler public ArrayList getNumsCapteur() { ArrayList numCapts = new ArrayList(); Iterator it = root.getChild("donnees").getChildren("capteur").iterator(); Element child; while (it.hasNext()) { child = (Element) it.next(); numCapts.add(child.getAttributeValue("numero")); } return numCapts; } }