List of usage examples for org.dom4j Element elementIterator
Iterator<Element> elementIterator(QName qName);
From source file:de.xwic.sandbox.server.installer.XmlImport.java
License:Apache License
/** * @param entity//from w w w . j a va 2s .c om * @param property * @param elProp */ @SuppressWarnings("unchecked") private void loadPropertyValue(IEntity entity, Property property, Element elProp) throws Exception { PropertyDescriptor pd = property.getDescriptor(); Class<?> type = pd.getPropertyType(); Method mWrite = pd.getWriteMethod(); // check if value is null boolean isNull = elProp.element(XmlExport.ELM_NULL) != null; Object value = null; if (!isNull) { if (Set.class.isAssignableFrom(type)) { // a set. Set<IEntity> set = new HashSet<IEntity>(); Element elSet = elProp.element(XmlExport.ELM_SET); for (Iterator<?> itSet = elSet.elementIterator(XmlExport.ELM_ELEMENT); itSet.hasNext();) { Element elSetElement = (Element) itSet.next(); String typeElement = elSetElement.attributeValue("type"); int refId = Integer.parseInt(elSetElement.getText()); Integer newId = importedEntities.get(new EntityKey(typeElement, refId)); if (newId != null) { // its an imported object refId = newId.intValue(); } DAO refDAO = DAOSystem.findDAOforEntity(typeElement); IEntity refEntity = refDAO.getEntity(refId); set.add(refEntity); } value = set; } else if (IEntity.class.isAssignableFrom(type)) { // entity type int refId = Integer.parseInt(elProp.getText()); Integer newId = importedEntities.get(new EntityKey(type.getName(), refId)); if (newId != null) { // its an imported object refId = newId.intValue(); } if (IPicklistEntry.class.isAssignableFrom(type)) { IPicklisteDAO plDAO = (IPicklisteDAO) DAOSystem.getDAO(IPicklisteDAO.class); value = plDAO.getPickListEntryByID(refId); } else { DAO refDAO = DAOSystem.findDAOforEntity((Class<? extends IEntity>) type); IEntity refEntity = refDAO.getEntity(refId); value = refEntity; } } else { // basic type String text = elProp.getText(); if (String.class.equals(type)) { value = text; } else if (int.class.equals(type) || Integer.class.equals(type)) { value = Integer.valueOf(text); } else if (long.class.equals(type) || Long.class.equals(type)) { value = Long.valueOf(text); } else if (boolean.class.equals(type) || Boolean.class.equals(type)) { value = Boolean.valueOf(text.equals("true")); } else if (Date.class.equals(type)) { value = new Date(Long.parseLong(text)); } else if (double.class.equals(type) || Double.class.equals(type)) { value = Double.valueOf(text); } } } mWrite.invoke(entity, new Object[] { value }); }
From source file:delphsim.model.Compartimento.java
License:Open Source License
/** * Mtodo para cargar los datos contenidos en un objeto de tipo * <CODE>org.dom4j.Element</CODE> en este objeto. * @param elementoCompartimento El objeto <CODE>org.dom4j.Element</CODE>. *//*from ww w . j a v a 2s. c o m*/ public void cargarDesdeXML(Element elementoCompartimento) { this.setNombre(elementoCompartimento.attributeValue("nombre")); this.setHabitantes(Long.valueOf(elementoCompartimento.attributeValue("habitantes"))); String[] procVinculados = new String[elementoCompartimento.elements("procesoVinculado").size()]; int indice = 0; for (Iterator i = elementoCompartimento.elementIterator("procesoVinculado"); i.hasNext();) { Element elementoProcesoVinculado = (Element) i.next(); procVinculados[indice++] = elementoProcesoVinculado.attributeValue("nombre"); } this.setProcesosVinculados(procVinculados); String[] compVinculados = new String[elementoCompartimento.elements("compartimentoVinculados").size()]; indice = 0; for (Iterator i = elementoCompartimento.elementIterator("compartimentoVinculados"); i.hasNext();) { Element elementoCompartimentoVinculado = (Element) i.next(); compVinculados[indice++] = elementoCompartimentoVinculado.attributeValue("nombre"); } this.setCompartimentosVinculados(compVinculados); Element elementoDefinicionContinua = elementoCompartimento.element("definicionContinua"); if (elementoDefinicionContinua != null) { this.setDefinicionContinua(elementoDefinicionContinua.attributeValue("definicion")); } }
From source file:delphsim.model.Division.java
License:Open Source License
/** * Mtodo para cargar los datos contenidos en un objeto de tipo * <CODE>org.dom4j.Element</CODE> en este objeto. * @param elementoDivision El objeto <CODE>org.dom4j.Element</CODE>. *///from ww w . j av a2 s .c om public void cargarDesdeXML(Element elementoDivision) { this.setNombre(elementoDivision.attributeValue("nombre")); this.categorias = new Categoria[elementoDivision.elements("categoria").size()]; int indice = 0; for (Iterator i = elementoDivision.elementIterator("categoria"); i.hasNext();) { Element elementoCategoria = (Element) i.next(); this.categorias[indice] = new Categoria(); this.categorias[indice++].cargarDesdeXML(elementoCategoria); } }
From source file:delphsim.model.Epidemia.java
License:Open Source License
/** * Abre un archivo XML y, si es correcto y vlido, carga su informacin en * esta epidemia./*from w w w . ja va 2s. c o m*/ * @param XMLSchema Ruta relativa al archivo .xsd contra el que hay que * validar el fichero que se quiere abrir. * @param archivoOrigen El fichero que se quiere abrir. * @return Una cadena con los errores detectados. Vaca si no hay ninguno. * @throws org.dom4j.DocumentException Si hay algn problema al analizar el archivo. * @throws org.xml.sax.SAXException Si hay algn problema al validar el archivo. * @throws java.io.IOException Si hay algn problema al leer el archivo. */ public String abrirXML(String XMLSchema, File archivoOrigen) throws DocumentException, SAXException, IOException { // Comprobar que el archivo se ajusta al esquema XML de DelphSim SchemaValidator validadorEsquemas = new SchemaValidator(); validadorEsquemas.setXMLSchemaURL(new File(System.getProperty("java.class.path")).getParent() + XMLSchema); String errores = validadorEsquemas.validar(archivoOrigen); if (errores.equals("")) { // Abrir el archivo XML de la ruta especificada y coger el elemento "epidemia" (raz) Document archivoXML = this.analizar(archivoOrigen); Element elementoEpidemia = archivoXML.getRootElement(); if (elementoEpidemia.attributeValue("unidadTiempo") != null) { this.unidadTiempo = elementoEpidemia.attributeValue("unidadTiempo"); } // Iterar para recuperar todos los elementos "parmetro" y crear los objetos Vector vectorParametros = new Vector(); this.parametros = new Parametro[elementoEpidemia.elements("parametro").size()]; int indice = 0; for (Iterator i = elementoEpidemia.elementIterator("parametro"); i.hasNext();) { Element elementoParametro = (Element) i.next(); this.parametros[indice] = new Parametro(); this.parametros[indice].cargarDesdeXML(elementoParametro); vectorParametros.add(this.parametros[indice].getNombre()); this.palabrasReservadas.add(this.parametros[indice].getNombre()); indice++; } // Iterar para recuperar todos los elementos "proceso" y crear los objetos Vector vectorProcesos = new Vector(); this.procesos = new Proceso[elementoEpidemia.elements("proceso").size()]; indice = 0; for (Iterator i = elementoEpidemia.elementIterator("proceso"); i.hasNext();) { Element elementoProceso = (Element) i.next(); this.procesos[indice] = new Proceso(); this.procesos[indice].cargarDesdeXML(elementoProceso); vectorProcesos.add(this.procesos[indice].getNombre()); this.palabrasReservadas.add(this.procesos[indice].getNombre()); indice++; } // Comprobar que, dentro de los parmetros, parametrosVinculados y // procesosVinculados usen nombres definidos y adems que // parametrosVinculados estn en el orden apropiado. for (int i = 0; i < this.parametros.length; i++) { String nombrePar = this.parametros[i].getNombre(); String[] parVinc = this.parametros[i].getParametrosVinculados(); String[] procVinc = this.parametros[i].getProcesosVinculados(); for (int j = 0; j < parVinc.length; j++) { int posicion = vectorParametros.indexOf(parVinc[j]); if (posicion == -1) { errores += String.format( "<Error> El parmetro '%s' se utiliza en la definicin del parmetro '%s', " + "pero ste ltimo no se ha definido realmente.\n\n", nombrePar, parVinc[j]); } else if (posicion == i) { errores += String.format("<Error> El parmetro '%s' no puede depender de s mismo.\n\n", nombrePar); } else if (posicion < i) { errores += String.format("<Advertencia> El parmetro '%s' depende del parmetro '%s', " + "por lo que debe definirse despus de l.\n\n", parVinc[j], nombrePar); } } for (int j = 0; j < procVinc.length; j++) { if (!vectorProcesos.contains(procVinc[j])) { errores += String.format( "<Error> El parmetro '%s' se utiliza en la definicin del proceso '%s', " + "pero ste ltimo no se ha definido realmente.\n\n", nombrePar, procVinc[j]); } } } // Comprobar que, dentro de los procesos, procesosVinculados usen // nombres definidos y estn en el orden apropiado. for (int i = 0; i < this.procesos.length; i++) { String nombreProc = this.procesos[i].getNombre(); String[] procVinc = this.procesos[i].getProcesosVinculados(); for (int j = 0; j < procVinc.length; j++) { int posicion = vectorProcesos.indexOf(procVinc[j]); if (posicion == -1) { errores += String.format( "<Error> El proceso '%s' se utiliza en la definicin del proceso '%s', " + "pero ste ltimo no se ha definido realmente.\n\n", nombreProc, procVinc[j]); } else if (posicion == i) { errores += String.format("<Error> El proceso '%s' no puede depender de s mismo.\n\n", nombreProc); } else if (posicion < i) { errores += String.format( "<Advertencia> El proceso '%s' depende del proceso '%s', " + "por lo que debe definirse despus de l.\n\n", procVinc[j], nombreProc); } } } // Recuperar el elemento "poblacion" y crear el objeto correspondiente Element elementoPoblacion = elementoEpidemia.element("poblacion"); this.poblacion = new Poblacion(); this.poblacion.cargarDesdeXML(elementoPoblacion); // Iterar para recuperar todos los elementos "compartimento" y crear los objetos // Comprobar que el nmero, nombre y orden de los compartimentos corresponda con las categoras this.compartimentos = new Compartimento[elementoEpidemia.elements("compartimento").size()]; String[] segunDivisiones = this.combinarCategorias(null); if (segunDivisiones.length != this.compartimentos.length) { errores += "<Error> Los compartimentos definidos en el archivo abierto no se corresponden " + "con la verdadera combinacin de las distintas categoras definidas."; return errores; } indice = 0; for (Iterator i = elementoEpidemia.elementIterator("compartimento"); i.hasNext();) { Element elementoCompartimento = (Element) i.next(); this.compartimentos[indice] = new Compartimento(); this.compartimentos[indice].cargarDesdeXML(elementoCompartimento); if (!this.compartimentos[indice].getNombre().equals(segunDivisiones[indice])) { errores += "<Error> Los compartimentos definidos en el archivo abierto no se corresponden " + "con la verdadera combinacin de las distintas categoras definidas."; return errores; } this.palabrasReservadas.add(this.compartimentos[indice].getNombre()); indice++; } // Generar los atajos correspondientes a los compartimentos cargados this.generarAtajos(); } // Devolver los errores producidos, cadena vaca si no ha habido return errores; }
From source file:delphsim.model.Parametro.java
License:Open Source License
/** * Mtodo para cargar los datos contenidos en un objeto de tipo * <CODE>org.dom4j.Element</CODE> en este objeto. * @param elementoParametro El objeto <CODE>org.dom4j.Element</CODE>. *///from w ww. j a v a 2 s .c o m public void cargarDesdeXML(Element elementoParametro) { this.setNombre(elementoParametro.attributeValue("nombre")); this.setDescripcion(elementoParametro.elementText("descripcion")); String[] parVinculados = new String[elementoParametro.elements("parametroVinculado").size()]; int indice = 0; for (Iterator i = elementoParametro.elementIterator("parametroVinculado"); i.hasNext();) { Element elementoParametroVinculado = (Element) i.next(); parVinculados[indice++] = elementoParametroVinculado.attributeValue("nombre"); } this.setParametrosVinculados(parVinculados); String[] procVinculados = new String[elementoParametro.elements("procesoVinculado").size()]; indice = 0; for (Iterator i = elementoParametro.elementIterator("procesoVinculado"); i.hasNext();) { Element elementoProcesoVinculado = (Element) i.next(); procVinculados[indice++] = elementoProcesoVinculado.attributeValue("nombre"); } this.setProcesosVinculados(procVinculados); String[] compVinculados = new String[elementoParametro.elements("compartimentoVinculado").size()]; indice = 0; for (Iterator i = elementoParametro.elementIterator("compartimentoVinculado"); i.hasNext();) { Element elementoCompartimentoVinculado = (Element) i.next(); compVinculados[indice++] = elementoCompartimentoVinculado.attributeValue("nombre"); } this.setCompartimentosVinculados(compVinculados); Element elementoDefinicionContinua = elementoParametro.element("definicionContinua"); if (elementoDefinicionContinua != null) { this.setDefinicionContinua(elementoDefinicionContinua.attributeValue("definicion")); } }
From source file:delphsim.model.Poblacion.java
License:Open Source License
/** * Mtodo para cargar los datos contenidos en un objeto de tipo * <CODE>org.dom4j.Element</CODE> en este objeto. * @param elementoPoblacion El objeto <CODE>org.dom4j.Element</CODE>. */// w ww.j av a2 s.c om public void cargarDesdeXML(Element elementoPoblacion) { this.setNombre(elementoPoblacion.attributeValue("nombre")); this.setHabitantes(Long.valueOf(elementoPoblacion.attributeValue("habitantes"))); this.divisiones = new Division[elementoPoblacion.elements("division").size()]; int indice = 0; for (Iterator i = elementoPoblacion.elementIterator("division"); i.hasNext();) { Element elementoDivision = (Element) i.next(); this.divisiones[indice] = new Division(); this.divisiones[indice++].cargarDesdeXML(elementoDivision); } }
From source file:delphsim.model.Proceso.java
License:Open Source License
/** * Mtodo para cargar los datos contenidos en un objeto de tipo * <CODE>org.dom4j.Element</CODE> en este objeto. * @param elementoProceso El objeto <CODE>org.dom4j.Element</CODE>. *//*w w w. j a va2s . co m*/ public void cargarDesdeXML(Element elementoProceso) { this.setNombre(elementoProceso.attributeValue("nombre")); this.setDescripcion(elementoProceso.elementText("descripcion")); String[] procVinculados = new String[elementoProceso.elements("procesoVinculado").size()]; int indice = 0; for (Iterator i = elementoProceso.elementIterator("procesoVinculado"); i.hasNext();) { Element elementoProcesoVinculado = (Element) i.next(); procVinculados[indice++] = elementoProcesoVinculado.attributeValue("nombre"); } this.setProcesosVinculados(procVinculados); String[] compVinculados = new String[elementoProceso.elements("compartimentoVinculado").size()]; indice = 0; for (Iterator i = elementoProceso.elementIterator("compartimentoVinculado"); i.hasNext();) { Element elementoCompartimentoVinculado = (Element) i.next(); compVinculados[indice++] = elementoCompartimentoVinculado.attributeValue("nombre"); } this.setCompartimentosVinculados(compVinculados); Element elementoDefinicionContinua = elementoProceso.element("definicionContinua"); if (elementoDefinicionContinua != null) { this.tramosContinua = new TramoContinua[elementoDefinicionContinua.elements("tramo").size()]; indice = 0; for (Iterator i = elementoDefinicionContinua.elementIterator("tramo"); i.hasNext();) { Element elementoTramo = (Element) i.next(); this.tramosContinua[indice] = new TramoContinua(); this.tramosContinua[indice++].cargarDesdeXML(elementoTramo); } } }
From source file:dkpro.similarity.algorithms.sound.dict.PLS.java
License:Apache License
/** * * @param dictionaryFilename//from ww w . j a v a 2 s .c om * The filename of the PLS dictionary to read in. * @throws DocumentException */ @SuppressWarnings("unchecked") public PLS(String dictionaryFilename) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(dictionaryFilename); dict = new MultiValueMap(); // Get dictionary alphabet and language Element lexicon = document.getRootElement(); alphabetId = lexicon.attributeValue("alphabet"); dictionaryLanguage = lexicon.attributeValue("lang"); // Extract dictionary name from metadata Map<String, String> namespaceMap = new HashMap<String, String>(); namespaceMap.put("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); namespaceMap.put("dc", "http://purl.org/dc/elements/1.1/"); XPath xpath = document.createXPath("//rdf:Description"); xpath.setNamespaceURIs(namespaceMap); Node node = xpath.selectSingleNode(lexicon); if (node != null) { dictionaryId = node.valueOf("@dc:title"); } else { dictionaryId = ""; } for (Iterator<Element> lexemeIterator = lexicon.elementIterator("lexeme"); lexemeIterator.hasNext();) { Element lexeme = lexemeIterator.next(); List<Element> graphemes = lexeme.selectNodes("grapheme"); List<Element> phonemes = lexeme.selectNodes("phoneme"); for (Element grapheme : graphemes) { for (Element phoneme : phonemes) { dict.put(grapheme.getText(), phoneme.getText()); } } } }
From source file:edu.common.dynamicextensions.entitymanager.DataTypeFactory.java
License:BSD License
/** * This method updates module map by parsing xml file * @param xmlFileName file to be parsed/* w ww. j av a2 s. co m*/ * @return dataType Map * @throws DataTypeFactoryInitializationException on Exception */ public final Map populateDataTypeMap(String xmlFileName) throws DataTypeFactoryInitializationException { dataTypeMap = new HashMap<String, String>(); SAXReader saxReader = new SAXReader(); InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(xmlFileName); Document document = null; try { document = saxReader.read(inputStream); Element name = null; Element databaseDataType = null; Element primitiveAttributesElement = document.getRootElement(); Iterator primitiveAttributeElementIterator = primitiveAttributesElement .elementIterator("Primitive-Attribute"); Element primitiveAttributeElement = null; while (primitiveAttributeElementIterator.hasNext()) { primitiveAttributeElement = (Element) primitiveAttributeElementIterator.next(); name = primitiveAttributeElement.element("name"); databaseDataType = primitiveAttributeElement.element("database-datatype"); dataTypeMap.put(name.getStringValue(), databaseDataType.getStringValue()); } } catch (DocumentException documentException) { throw new DataTypeFactoryInitializationException(documentException); } return dataTypeMap; }
From source file:edu.ku.brc.af.core.db.DBTableIdMgr.java
License:Open Source License
/** * Reads in datamodel input file and populates the Hashtable of the DBTableMgr with DBTableInfo * @param inputFile the input file./*from www . jav a 2 s . com*/ */ public void initialize(final File inputFile) { log.debug( "Reading in datamodel file: " + inputFile.getAbsolutePath() + " to create and populate DBTableMgr"); //$NON-NLS-1$ //$NON-NLS-2$ String classname = null; try { SAXReader reader = new SAXReader(); reader.setValidation(false); Element databaseNode = XMLHelper.readFileToDOM4J(inputFile); if (databaseNode != null) { for (Iterator<?> i = databaseNode.elementIterator("table"); i.hasNext();) //$NON-NLS-1$ { Element tableNode = (Element) i.next(); classname = tableNode.attributeValue("classname"); //$NON-NLS-1$ String tablename = tableNode.attributeValue("table"); //$NON-NLS-1$ int tableId = Integer.parseInt(tableNode.attributeValue("tableid")); //$NON-NLS-1$ boolean isSearchable = XMLHelper.getAttr(tableNode, "searchable", false); //$NON-NLS-1$ String primaryKeyField = null; // iterate through child elements of id nodes, there should only be 1 for (Iterator<?> i2 = tableNode.elementIterator("id"); i2.hasNext();) //$NON-NLS-1$ { Element idNode = (Element) i2.next(); primaryKeyField = idNode.attributeValue("name"); //$NON-NLS-1$ } if (classname == null) { log.error("classname is null; check input file"); //$NON-NLS-1$ } if (tablename == null) { log.error("tablename is null; check input file"); //$NON-NLS-1$ } if (isFullSchema && primaryKeyField == null) { log.error("primaryKeyField is null; check input file table[" + tablename + "]"); //$NON-NLS-1$ //$NON-NLS-2$ } //log.debug("Populating hashtable ID["+tableId+"]for class: " + classname+" "+ inputFile.getName()); DBTableInfo tblInfo = new DBTableInfo(tableId, classname, tablename, primaryKeyField, tableNode.attributeValue("abbrv")); //$NON-NLS-1$ tblInfo.setSearchable(isSearchable); tblInfo.setBusinessRuleName(XMLHelper.getAttr(tableNode, "businessrule", null)); //$NON-NLS-1$ if (hash.get(tableId) != null) { log.error("Table ID used twice[" + tableId + "]"); //$NON-NLS-1$ //$NON-NLS-2$ } hash.put(tableId, tblInfo); byClassNameHash.put(classname.toLowerCase(), tblInfo); byShortClassNameHash.put(tblInfo.getShortClassName().toLowerCase(), tblInfo); tables.add(tblInfo); Element idElement = (Element) tableNode.selectSingleNode("id"); //$NON-NLS-1$ if (idElement != null) { tblInfo.setIdColumnName(getAttr(idElement, "column", null)); //$NON-NLS-1$ tblInfo.setIdFieldName(getAttr(idElement, "name", null)); //$NON-NLS-1$ tblInfo.setIdType(getAttr(idElement, "type", null)); //$NON-NLS-1$ } for (Iterator<?> ir = tableNode.elementIterator("tableindex"); ir.hasNext();) //$NON-NLS-1$ { Element irNode = (Element) ir.next(); String inxName = getAttr(irNode, "indexName", null); String inxColNames = getAttr(irNode, "columnNames", null); tblInfo.addTableIndex(inxName, inxColNames); } Element displayElement = (Element) tableNode.selectSingleNode("display"); //$NON-NLS-1$ if (displayElement != null) { tblInfo.setDefaultFormName(getAttr(displayElement, "view", null)); //$NON-NLS-1$ tblInfo.setUiFormatter(getAttr(displayElement, "uiformatter", null)); //$NON-NLS-1$ tblInfo.setDataObjFormatter(getAttr(displayElement, "dataobjformatter", null)); //$NON-NLS-1$ tblInfo.setSearchDialog(getAttr(displayElement, "searchdlg", null)); //$NON-NLS-1$ tblInfo.setNewObjDialog(getAttr(displayElement, "newobjdlg", null)); //$NON-NLS-1$ } else { tblInfo.setDefaultFormName(""); //$NON-NLS-1$ tblInfo.setUiFormatter(""); //$NON-NLS-1$ tblInfo.setDataObjFormatter(""); //$NON-NLS-1$ tblInfo.setSearchDialog(""); //$NON-NLS-1$ tblInfo.setNewObjDialog(""); //$NON-NLS-1$ } for (Iterator<?> ir = tableNode.elementIterator("relationship"); ir.hasNext();) //$NON-NLS-1$ { Element irNode = (Element) ir.next(); DBRelationshipInfo tblRel = new DBRelationshipInfo( irNode.attributeValue("relationshipname"), //$NON-NLS-1$ getRelationshipType(irNode.attributeValue("type")), //$NON-NLS-1$ irNode.attributeValue("classname"), //$NON-NLS-1$ irNode.attributeValue("columnname"), //$NON-NLS-1$ irNode.attributeValue("othersidename"), //$NON-NLS-1$ irNode.attributeValue("jointable"), //$NON-NLS-1$ getAttr(irNode, "required", false), //$NON-NLS-1$ getAttr(irNode, "updatable", false), //$NON-NLS-1$ getAttr(irNode, "save", false), //$NON-NLS-1$ getAttr(irNode, "likemanytoone", false)); //$NON-NLS-1$ tblInfo.getRelationships().add(tblRel); } for (Iterator<?> ir = tableNode.elementIterator("field"); ir.hasNext();) //$NON-NLS-1$ { Element irNode = (Element) ir.next(); int len = -1; String lenStr = irNode.attributeValue("length"); //$NON-NLS-1$ if (StringUtils.isNotEmpty(lenStr) && StringUtils.isNumeric(lenStr)) { len = Integer.parseInt(lenStr); // if (!UIRegistry.isMobile() && len > 256) // length over 255 are memo/text fields in MySQL and do not need to be constrained // { // len = 32767; // } } DBFieldInfo fieldInfo = new DBFieldInfo(tblInfo, irNode.attributeValue("column"), //$NON-NLS-1$ irNode.attributeValue("name"), //$NON-NLS-1$ irNode.attributeValue("type"), //$NON-NLS-1$ len, getAttr(irNode, "required", false), //$NON-NLS-1$ getAttr(irNode, "updatable", false), //$NON-NLS-1$ getAttr(irNode, "unique", false), //$NON-NLS-1$ getAttr(irNode, "indexed", false), //$NON-NLS-1$ getAttr(irNode, "partialDate", false), //$NON-NLS-1$ getAttr(irNode, "datePrecisionName", null)); //$NON-NLS-1$ // This done to cache the original setting. fieldInfo.setRequiredInSchema(fieldInfo.isRequired()); tblInfo.addField(fieldInfo); } for (Iterator<?> faIter = tableNode.elementIterator("fieldalias"); faIter.hasNext();) //$NON-NLS-1$ { Element faNode = (Element) faIter.next(); String vName = getAttr(faNode, "vname", null);//$NON-NLS-1$ String aName = getAttr(faNode, "aname", null);//$NON-NLS-1$ if (vName != null && aName != null) { tblInfo.addFieldAlias(vName, aName); } } //Collections.sort(tblInfo.getFields()); } } else { log.error("Reading in datamodel file. SAX parser got null for the root of the document."); //$NON-NLS-1$ } } catch (java.lang.NumberFormatException numEx) { edu.ku.brc.af.core.UsageTracker.incrHandledUsageCount(); edu.ku.brc.exceptions.ExceptionTracker.getInstance().capture(DBTableIdMgr.class, numEx); log.error("Specify datamodel input file: " + inputFile.getAbsolutePath() //$NON-NLS-1$ + " failed to provide valid table id for class/table:" + classname); //$NON-NLS-1$ log.error(numEx); } catch (Exception ex) { edu.ku.brc.af.core.UsageTracker.incrHandledUsageCount(); edu.ku.brc.exceptions.ExceptionTracker.getInstance().capture(DBTableIdMgr.class, ex); log.error(ex); ex.printStackTrace(); } Collections.sort(tables); log.debug("Done Reading in datamodel file: " + inputFile.getAbsolutePath()); //$NON-NLS-1$ }