//Construimos el DOM con las preferencias
DocumentBuilderFactory dbFactory;
DocumentBuilder docBuilder;
LogicExperimento experimento = null;
try
{
dbFactory = DocumentBuilderFactory.newInstance();
docBuilder = dbFactory.newDocumentBuilder();
if(fichExperimento.exists()) {
xmlDoc = docBuilder.parse(fichExperimento);
elementoCabecera = xmlDoc.getDocumentElement();
} else {
Practica1.log.error("Abrir, no existe el experimento");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
//Buscamos las propiedades del experimento
NodeList lstPropiedades = elementoCabecera.
getElementsByTagName("propiedades-experimento");
boolean propiedadesCorrecto = true;
if(lstPropiedades.getLength() == 1) {
Node nodePropiedades = lstPropiedades.item(0);
//Obtenemos las propiedades del experimento
NodeList lstValores = nodePropiedades.getChildNodes();
//Recorremos las propiedades
for(int i=0; i<lstValores.getLength() && propiedadesCorrecto; i++) {
Node nodoPropExp = lstValores.item(i);
if(nodoPropExp.getNodeType() == Node.ELEMENT_NODE) {
String nProp = nodoPropExp.getNodeName();
//Comprobamos en orden que se cumplen las propiedades esperadas
switch(i) {
case 1: //Nombre experimento
if(nProp.equals("nombre-experimento")) {
nombreExperimento = nodoPropExp.
getTextContent();
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, nombre experimento inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
break;
case 3:
if(nProp.equals("tipo-bacteria")) {
tipoBacteria = nodoPropExp.
getTextContent();
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, tipo bacteria inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
break;
case 5:
if(nProp.equals("nombre-investigador")) {
nombreInvestigador = nodoPropExp.
getTextContent();
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, nombre investigador inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
break;
case 7:
if(nProp.equals("proyecto-investigacion")) {
proyectoInvestigacion = nodoPropExp.
getTextContent();
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, proyecto investigación inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
break;
case 9:
if(nProp.equals("num-dias-experimento")) {
numDiasExperimento = Integer.parseInt(nodoPropExp.
getTextContent());
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, proyecto investigación inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
break;
case 11:
if(nProp.equals("limite-ali-maxima")) {
limiteAlimentacionMaxima = Integer.parseInt(
nodoPropExp.getTextContent());
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, proyecto investigación inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
break;
case 13:
if(nProp.equals("unidades-medida")) {
unidadesMedida = nodoPropExp.
getTextContent();
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, proyecto investigación inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
break;
}
}
}
} else {
propiedadesCorrecto = false;
Practica1.log.error("Abrir, fichero inválido");
fireErrorAbriendoExperimento(fichExperimento.getName());
}
if(!propiedadesCorrecto) {
fireErrorAbriendoExperimento(fichExperimento.getName());
}
//Creamos el modelo del experimento
experimento = new LogicExperimento(fichExperimento,
nombreExperimento, tipoBacteria, nombreInvestigador,
proyectoInvestigacion, numDiasExperimento,
limiteAlimentacionMaxima, unidadesMedida, false);
//Buscamos las poblaciones del experimento