/** * método que permite verificar si el ODE tiene metadatos.. ya sea integrados en el manifest o * externos al mismo. * * @return String con tres posibles valores * <ul> * <li>null . - si el ODE no tiene metadatos * <li>vacio . - si el ODE tiene metadatos integrados en el manifest * <li>path al metadato. - si el ODE tiene metadatos externos que sean lomes validos </ul */ private String chequearLomes() throws Exception { String resultado = null; List listaLomes = new ArrayList(); Node nodo = modelo.getNode().getChildNodes().item(0); NodeModel.simplify(nodo); boolean terminado = false; NodeList hijos = nodo.getChildNodes(); for (int i = 0; i < hijos.getLength() && !terminado; i++) { Node child = hijos.item(i); if (child.getLocalName() != null && child.getLocalName().equals("metadata")) { NodeList hijos2 = child.getChildNodes(); for (int j = 0; j < hijos2.getLength() && !terminado; j++) { Node child2 = hijos2.item(j); if (child2.getLocalName() != null && child2.getLocalName().equals("lom")) { resultado = ""; terminado = true; } if (child2.getLocalName() != null && child2.getLocalName().equals("location")) { listaLomes.add(child2.getFirstChild().getNodeValue()); } } } // metadata } if (resultado == null && listaLomes.size() > 0) { // busco en la lista de nodos externos al primero que sea lomes boolean encontrado = false; for (Iterator iter = listaLomes.iterator(); iter.hasNext() && !encontrado; ) { String path = (String) iter.next(); if (chequearTipoLomesExterno(path)) { resultado = path; encontrado = true; } } } return resultado; }
/** * metodo que permite verificar si un fichero lomes externo es un fichero lomes * * @param lomesExterno path al fichero xml con los metadatos * @return * <ul> * <li>true .- si es un lomes * <li>false.- si no es un lomes * </ul> */ private boolean chequearTipoLomesExterno(String lomesExterno) throws Exception { boolean resultado = false; NodeModel modeloExterno = null; try { modeloExterno = NodeModel.parse(new File(pathOde + "/" + lomesExterno)); Node nodo = modeloExterno.getNode().getChildNodes().item(0); if (nodo != null && nodo.getNamespaceURI() != null && nodo.getNamespaceURI().equals("http://ltsc.ieee.org/xsd/LOM")) { resultado = true; } } catch (Exception e) { if (logger.isDebugEnabled()) { logger.debug( "Error en GeneradorHTML:chequearTipoLomesExterno .. problemas al leer fichero lomes externo: " + e.getMessage()); } throw e; } return resultado; }
/** * Método que devuelve el título de ode en caso que existiera.. busca el título en el lomes * integrado en el manifest o en algun lomes externo si lo tuviera. * * @return String con el título del ode */ private String obtenerTitulo() throws Exception { String resultado = ""; if (pathLomesExterno == null) return resultado; boolean terminado = false; if (pathLomesExterno.equals("")) { Node nodo = modelo.getNode().getChildNodes().item(0); NodeModel.simplify(nodo); NodeList hijos = nodo.getChildNodes(); for (int i = 0; i < hijos.getLength() && !terminado; i++) { Node child = hijos.item(i); if (child.getLocalName() != null && child.getLocalName().equals("metadata")) { NodeList hijos2 = child.getChildNodes(); for (int j = 0; j < hijos2.getLength() && !terminado; j++) { Node child2 = hijos2.item(j); if (child2.getLocalName() != null && child2.getLocalName().equals("lom")) { NodeList hijos3 = child2.getChildNodes(); for (int k = 0; k < hijos3.getLength() && !terminado; k++) { Node child3 = hijos3.item(k); if (child3.getLocalName() != null && child3.getLocalName().equals("general")) { NodeList hijos4 = child3.getChildNodes(); for (int l = 0; l < hijos4.getLength() && !terminado; l++) { Node child4 = hijos4.item(l); if (child4.getLocalName() != null && child4.getLocalName().equals("title")) { NodeList hijos5 = child4.getChildNodes(); for (int ll = 0; ll < hijos5.getLength() && !terminado; ll++) { Node child5 = hijos5.item(ll); if (child5.getLocalName() != null && child5.getLocalName().equals("string")) { resultado = child5.getFirstChild().getNodeValue(); terminado = true; } } } } } } } } } // metadata } } else { NodeModel modeloExterno = null; try { modeloExterno = NodeModel.parse(new File(pathOde + "/" + pathLomesExterno)); Node nodo = modeloExterno.getNode().getChildNodes().item(0); NodeModel.simplify(nodo); NodeList hijos = nodo.getChildNodes(); for (int i = 0; i < hijos.getLength() && !terminado; i++) { Node child = hijos.item(i); if (child.getLocalName() != null && child.getLocalName().equals("general")) { NodeList hijos2 = child.getChildNodes(); for (int j = 0; j < hijos2.getLength() && !terminado; j++) { Node child2 = hijos2.item(j); if (child2.getLocalName() != null && child2.getLocalName().equals("title")) { NodeList hijos3 = child2.getChildNodes(); for (int k = 0; k < hijos3.getLength() && !terminado; k++) { Node child3 = hijos3.item(k); if (child3.getLocalName() != null && child3.getLocalName().equals("string")) { resultado = child3.getFirstChild().getNodeValue(); terminado = true; } } } } } // metadata } } catch (Exception e) { if (logger.isDebugEnabled()) { logger.debug("Error en GeneradorHTML:obtenerTitulo .. " + e.getMessage()); } throw e; } } return resultado; }