List of usage examples for org.jdom2 Element Element
public Element(final String name)
From source file:ca.nrc.cadc.vos.server.RssFeed.java
License:Open Source License
/** * Builds a JDOM Element representing the RRS feed of set of Nodes. * * @param parent The parent Node of all other Nodes in the feed. * @param nodes Collection of nodes to display in the feed. * @param baseURL base url for the nodes resource * @return JDOM Element representing the RRS feed. *///from w w w . j a va 2s .c o m public static Element createFeed(Node parent, Collection<RssFeedItem> nodes, String baseURL) { // Get the title and description from the parent properties. String parentTitle = null; String parentDescription = null; for (NodeProperty nodeProperty : parent.getProperties()) { if (nodeProperty.getPropertyURI().equals(VOS.PROPERTY_URI_TITLE)) { parentTitle = nodeProperty.getPropertyValue(); } if (nodeProperty.getPropertyURI().equals(VOS.PROPERTY_URI_DESCRIPTION)) { parentDescription = nodeProperty.getPropertyValue(); } } // Root element. Element rss = new Element("rss"); rss.setAttribute("version", "2.0"); // channel element. Element channel = new Element("channel"); rss.addContent(channel); // channel title. if (parentTitle == null) { parentTitle = "Last modified nodes for " + parent.getName(); } Element channelTitle = new Element("title"); channelTitle.setText(parentTitle); channel.addContent(channelTitle); // channel description. if (parentDescription == null) { parentDescription = nodes.size() + " last modified nodes"; } Element channelDescription = new Element("description"); channelDescription.setText(parentDescription); channel.addContent(channelDescription); // channel link. Element link = new Element("link"); link.setText(baseURL + parent.getUri().getPath() + "?view=rss"); channel.addContent(link); // channel author NodeProperty creator = parent.findProperty(VOS.PROPERTY_URI_CREATOR); if (creator != null && StringUtil.hasText(creator.getPropertyValue())) { Element author = new Element("author"); author.setText(creator.getPropertyValue()); channel.addContent(author); } log.debug("num nodes: " + nodes.size()); // Create an item for each Node and add to channel. for (RssFeedItem rssFeedItem : nodes) { // Get the title, description, and date from the node properties. String nodeTitle = null; String nodeDescription = null; String nodeDate = null; for (NodeProperty nodeProperty : rssFeedItem.node.getProperties()) { if (nodeProperty.getPropertyURI().equals(VOS.PROPERTY_URI_TITLE)) { nodeTitle = nodeProperty.getPropertyValue(); } if (nodeProperty.getPropertyURI().equals(VOS.PROPERTY_URI_DESCRIPTION)) { nodeDescription = nodeProperty.getPropertyValue(); } if (nodeProperty.getPropertyURI().equals(VOS.PROPERTY_URI_DATE)) { nodeDate = nodeProperty.getPropertyValue(); } } // item element. Element item = new Element("item"); // item title. if (nodeTitle == null) { nodeTitle = rssFeedItem.node.getName(); } Element itemTitle = new Element("title"); itemTitle.setText(nodeTitle); item.addContent(itemTitle); // item description. if (nodeDescription == null) { if (rssFeedItem.node instanceof DataNode) { nodeDescription = "File"; } else { nodeDescription = "Directory"; } } Element itemDescription = new Element("description"); itemDescription.setText(nodeDescription); item.addContent(itemDescription); // item pubDate if (nodeDate != null) { Element itemPubDate = new Element("pubDate"); itemPubDate.setText(nodeDate); item.addContent(itemPubDate); } // item link, comment Element itemLink = new Element("link"); Element comments = new Element("comments"); String linkText = baseURL + rssFeedItem.node.getUri().getPath(); if (rssFeedItem.node instanceof DataNode) { linkText += "?view=data"; comments.setText("Click to download this file."); } else { linkText += "?view=rss"; comments.setText("Click to see the last modified nodes within this directory."); } itemLink.setText(linkText); item.addContent(itemLink); item.addContent(comments); // item author creator = rssFeedItem.node.findProperty(VOS.PROPERTY_URI_CREATOR); if (creator != null && StringUtil.hasText(creator.getPropertyValue())) { Element author = new Element("author"); author.setText(creator.getPropertyValue()); item.addContent(author); } // Add item to channel channel.addContent(item); } return rss; }
From source file:ca.nrc.cadc.vos.server.RssFeed.java
License:Open Source License
/** * Builds a JDOM Element representing a RRS feed that displays an error state. * * @param node The Node causing the error. * @param message The message to display. * @param baseURL base url for the nodes resource * @return JDOM Element representing the RRS feed. *//*w ww .j ava2 s . c om*/ public static Element createErrorFeed(Node node, String message, String baseURL) { // Root element. Element rss = new Element("rss"); rss.setAttribute("version", "2.0"); // channel element. Element channel = new Element("channel"); rss.addContent(channel); // channel title. Element title = new Element("title"); String nodeName = node.getName(); if (nodeName == null) { nodeName = "unknown node"; } title.setText("Error processing Node " + nodeName); channel.addContent(title); // channel link. Element link = new Element("link"); String nodePath = node.getUri().getPath(); if (nodePath == null) { link.setText("unknown link"); } else { link.setText(baseURL + nodePath + "?view=rss"); } channel.addContent(link); // channel description. Element description = new Element("description"); description.setText(message); channel.addContent(description); return rss; }
From source file:ca.nrc.cadc.vosi.Capability.java
License:Open Source License
public Element toXmlElement(Namespace xsi, Namespace cap, Namespace vor) { Element eleCapability = new Element("capability"); eleCapability.setAttribute("standardID", _standardID); Element eleInterface = new Element("interface"); eleCapability.addContent(eleInterface); Attribute attType = new Attribute("type", vor.getPrefix() + ":ParamHTTP", xsi); eleInterface.setAttribute(attType);/*from w w w .j av a 2 s. c om*/ if (_role != null) eleInterface.setAttribute("role", _role); Element eleAccessURL = new Element("accessURL"); eleInterface.addContent(eleAccessURL); eleAccessURL.setAttribute("use", "full"); eleAccessURL.setText(_hostContext + _resourceName); return eleCapability; }
From source file:ca.nrc.cadc.vosi.TableSet.java
License:Open Source License
/** * @param cd/*from w w w .j a v a2 s . c o m*/ * @return */ private Element toXmlElement(ColumnDesc cd) { Element eleColumn = new Element("column"); addChild(eleColumn, "name", cd.getColumnName()); addChild(eleColumn, "description", cd.description); addChild(eleColumn, "unit", cd.unit); addChild(eleColumn, "ucd", cd.ucd); addChild(eleColumn, "utype", cd.utype); String datatype = cd.getDatatype(); String[] parts = datatype.split(":"); if (isTapType(parts)) { Element eleDt = addChild(eleColumn, "dataType", parts[1]); if (eleDt != null) { Attribute attType = new Attribute("type", vod.getPrefix() + ":TAPType", xsi); eleDt.setAttribute(attType); if (cd.getArraysize() != null && cd.getArraysize() > 0) eleDt.setAttribute("size", cd.getArraysize().toString()); } } else if (isVOTableType(parts)) { Element eleDt = addChild(eleColumn, "dataType", parts[1]); if (eleDt != null) { Attribute attType = new Attribute("type", vod.getPrefix() + ":VOTableType", xsi); eleDt.setAttribute(attType); if (cd.getArraysize() != null && cd.getArraysize() > 0) eleDt.setAttribute("arraysize", cd.getArraysize().toString()); } } else // custom type { log.warn("cannot convert " + cd + " to a legal VODataService column element, skipping"); return null; } if (cd.indexed) addChild(eleColumn, "flag", "indexed"); // TODO: flag=primary for primary keys? return eleColumn; }
From source file:ca.nrc.cadc.vosi.TableSet.java
License:Open Source License
private Element toXmlElement(KeyDesc kd) { Element ret = new Element("foreignKey"); addChild(ret, "targetTable", kd.getTargetTable()); for (KeyColumnDesc kc : kd.getKeyColumnDescs()) { Element fkc = new Element("fkColumn"); addChild(fkc, "fromColumn", kc.getFromColumn()); addChild(fkc, "targetColumn", kc.getTargetColumn()); ret.addContent(fkc);/* www . j av a 2 s. co m*/ } addChild(ret, "description", kd.description); addChild(ret, "utype", kd.utype); return ret; }
From source file:ca.nrc.cadc.vosi.TableSet.java
License:Open Source License
private Element addChild(Element eleParent, String chdName, String chdText) { Element ele = null;/* ww w.j a v a2s . c o m*/ if (chdText != null && !chdText.equals("")) { ele = new Element(chdName); ele.setText(chdText); eleParent.addContent(ele); } return ele; }
From source file:cager.parser.test.SimpleTest2.java
License:Open Source License
private void trataNodo(SimpleNode astNode, Element segmento, int nivel, String contexto) { int numChildren = astNode.jjtGetNumChildren(); //TODO Solucionar referencias a Namespaces Namespace xmi = Namespace.getNamespace("xmi", "http://www.omg.org/XMI"); String contextoLocal = ""; contextoLocal = contexto;/* w ww . j a v a2 s .c o m*/ String strNombre = ""; for (int i = 0; i < numChildren; i++) { strNombre = ((SimpleNode) astNode.jjtGetChild(i)).getName(); if (astNode.jjtGetChild(i).getClass() == ASTProcDeclaration.class) { for (int j = 0; j < nivel; j++) System.out.print("\t"); //logger.info("1. ->"+astNode.jjtGetChild(i).getClass().toString()+" - "+strNombre+" - "+" Nivel: "+nivel); System.out.println("1. ->" + astNode.jjtGetChild(i).getClass().toString() + " - " + strNombre + " - " + " Nivel: " + nivel); Element codeElement = new Element("codeElement"); codeElement.setAttribute("id", "id." + idCount, xmi); hsmMethodUnits.put(strNombre, idCount); hsmMethodUnitsObj.put(idCount, codeElement); contextoLocal = strNombre; idCount++; codeElement.setAttribute("name", strNombre); codeElement.setAttribute("type", "code:MethodUnit", xmi); //TODO: Comprobar que tipo de method es: Enumeration MethodKind codeElement.setAttribute("kind", "method"); ASTProcDeclaration astProcDecl = (ASTProcDeclaration) astNode.jjtGetChild(i); String contenido = astProcDecl.allText(true); Element sourceElement = new Element("source"); sourceElement.setAttribute("id", "id." + idCount, xmi); idCount++; sourceElement.setAttribute("language", "VisualBasic"); sourceElement.setAttribute("snippet", contenido); codeElement.addContent(sourceElement); segmento.getChild("model").getChild("codeElement").addContent(codeElement); //<source xmi:id="id.41" language="Hla" snippet="Field5[1] -> Acc_Type[0]"/> //Buscar Parmetros para signature codeElement.addContent(TratarSignature((SimpleNode) astNode.jjtGetChild(i), strNombre)); } else if (astNode.jjtGetChild(i) instanceof ASTName) { if (astNode instanceof ASTDeclare && astNode.jjtGetChild(i).jjtGetParent().jjtGetChild(0).equals(astNode.jjtGetChild(i))) { //TODO: Revisar si esto es lgico. ASTDeclare astDeclare = (ASTDeclare) astNode; Element codeElement = new Element("codeElement"); codeElement.setAttribute("id", "id." + idCount, xmi); hsmMethodUnits.put(strNombre, idCount); hsmMethodUnitsObj.put(idCount, codeElement); contextoLocal = strNombre; idCount++; codeElement.setAttribute("name", strNombre); codeElement.setAttribute("export", astDeclare.getFirstToken().toString().toLowerCase()); codeElement.setAttribute("type", "code:MethodUnit", xmi); //TODO: Comprobar que tipo de method es: Enumeration MethodKind codeElement.setAttribute("kind", "method"); String contenido = astDeclare.allText(true); Element sourceElement = new Element("source"); sourceElement.setAttribute("id", "id." + idCount, xmi); idCount++; sourceElement.setAttribute("language", "VisualBasic"); sourceElement.setAttribute("snippet", contenido); codeElement.addContent(sourceElement); segmento.getChild("model").getChild("codeElement").addContent(codeElement); //Buscar Parmetros para signature codeElement.addContent(TratarSignature(astNode, strNombre)); } else if (astNode instanceof ASTVarDecl) { ASTDeclaration astDeclaration = null; String exportVal = null; if (astNode.jjtGetParent() instanceof ASTDeclaration) { astDeclaration = (ASTDeclaration) astNode.jjtGetParent(); exportVal = astDeclaration.getFirstToken().toString().toLowerCase(); } Element codeElement = new Element("codeElement"); codeElement.setAttribute("id", "id." + idCount, xmi); String tipo = null; //Buscamos el tipo de la variable declarada recorriendo todos los hijos buscando el ASTTypeName for (int n = 0; n < astNode.jjtGetNumChildren() && tipo == null; n++) { if (astNode.jjtGetChild(n) instanceof ASTTypeName) { tipo = ((SimpleNode) ((SimpleNode) astNode.jjtGetChild(n)).jjtGetChild(0)).getName(); } } //Si no se ha encontrado comprobamos si es una declaracin mltiple y buscamos el tipo if (tipo == null) { SimpleNode Padre = (SimpleNode) astNode.jjtGetParent(); for (int t = 0; t < Padre.jjtGetNumChildren() && tipo == null; t++) { SimpleNode Hijo = (SimpleNode) Padre.jjtGetChild(t); for (int n = 0; n < Hijo.jjtGetNumChildren(); n++) { if (Hijo.jjtGetChild(n) instanceof ASTTypeName) { tipo = ((SimpleNode) ((SimpleNode) Hijo.jjtGetChild(n)).jjtGetChild(0)) .getName(); } } } } hsmStorableUnits.put(strNombre, idCount); hsmStorableUnitsObj.put(idCount, codeElement); Integer numeroTipo = hsmLanguajeUnitDataType.get(tipo); if (numeroTipo == null) { numeroTipo = 13; } /* if(numeroTipo == null){ numeroTipo = idCount; Element enumerated = new Element("codeElement"); enumerated.setAttribute("id", "id."+numeroTipo, xmi); //enumerated.setAttribute("type", "code:ClassUnit", xmi); enumerated.setAttribute("type", "code:StringType", xmi); enumerated.setAttribute("name", tipo); hsmLanguajeUnitDataType.put(tipo, numeroTipo); idCount++; //Aadimos el enumerated a la lista de tipos elementoTipos.addContent(enumerated); } */ idCount++; codeElement.setAttribute("name", strNombre); //StorableUnit no permite atributo export //if(exportVal != null) codeElement.setAttribute("export", exportVal); codeElement.setAttribute("type", "code:StorableUnit", xmi); codeElement.setAttribute("type", "id." + numeroTipo); if (contextoLocal == "") { codeElement.setAttribute("kind", "global"); segmento.getChild("model").getChild("codeElement").addContent(codeElement); } else { codeElement.setAttribute("kind", "local"); Element elementAux = hsmMethodUnitsObj.get(hsmMethodUnits.get(contextoLocal));//.getChild("codeElement"); elementAux.addContent(codeElement); } } } trataNodo((SimpleNode) astNode.jjtGetChild(i), segmento, nivel + 1, contextoLocal); } }
From source file:cager.parser.test.SimpleTest2.java
License:Open Source License
private Element TratarSignature(SimpleNode astNode, String strNombre) { Namespace xmi = Namespace.getNamespace("xmi", "http://www.omg.org/XMI"); Element signature = new Element("codeElement"); signature.setAttribute("id", "id." + idCount, xmi); signature.setAttribute("type", "code:Signature", xmi); signature.setAttribute("name", strNombre); idCount++;//from w w w . j a va2s . co m for (int i = 0; i < astNode.jjtGetNumChildren(); i++) { if (astNode.jjtGetChild(i) instanceof ASTFormalParamList) { SimpleNode paramList = (SimpleNode) astNode.jjtGetChild(i); for (int j = 0; j < paramList.jjtGetNumChildren(); j++) { String tipo = ""; String nombre = ""; String valorTipo = ""; String kind = null; for (int k = 0; k < paramList.jjtGetChild(j).jjtGetNumChildren(); k++) { SimpleNode hijo = (SimpleNode) paramList.jjtGetChild(j).jjtGetChild(k); //TODO: hacer la correspondencia token/valor del ParameterKind (byVal/byValue, etc...) if (paramList.jjtGetChild(j) instanceof ASTParamSpec) { ASTParamSpec param = ((ASTParamSpec) paramList.jjtGetChild(j)); if (param.getByVal()) { kind = "byValue"; } else if (param.getbyRef()) { kind = "byReference"; } else { kind = null; } } if (hijo instanceof ASTName) { nombre = hijo.getName(); } else if (hijo instanceof ASTTypeName) { if (hijo.jjtGetNumChildren() > 1) { tipo = ((SimpleNode) hijo.jjtGetChild(0)).getName(); for (int l = 1; l < hijo.jjtGetNumChildren(); l++) { tipo = tipo + "." + ((SimpleNode) hijo.jjtGetChild(l)).getName(); } } else { tipo = ((SimpleNode) hijo.jjtGetChild(0)).getName(); } } else { if (hijo instanceof ASTExpression) { valorTipo = ((SimpleNode) hijo.jjtGetChild(0)).getName(); } } } Integer numeroTipo = hsmLanguajeUnitDataType.get(tipo); if (numeroTipo == null) { numeroTipo = idCount; Element enumerated = new Element("codeElement"); enumerated.setAttribute("id", "id." + numeroTipo, xmi); enumerated.setAttribute("type", "code:EnumeratedType", xmi); enumerated.setAttribute("name", tipo); hsmLanguajeUnitDataType.put(tipo, numeroTipo); idCount++; Element valor = new Element("value"); valor.setAttribute("id", "id." + idCount, xmi); valor.setAttribute("name", valorTipo); valor.setAttribute("type", "id." + String.valueOf(numeroTipo)); idCount++; enumerated.addContent(valor); //Aadimos el enumerated a la lista de tipos elementoTipos.addContent(enumerated); } Element parameterUnit = new Element("parameterUnit"); parameterUnit.setAttribute("id", "id." + idCount, xmi); parameterUnit.setAttribute("name", nombre); if (kind != null) parameterUnit.setAttribute("kind", kind); parameterUnit.setAttribute("type", "id." + numeroTipo); parameterUnit.setAttribute("pos", String.valueOf(j)); idCount++; signature.addContent(parameterUnit); } //Aadimos el tipo devuelto String tipo = "Void"; for (int n = 1; n < astNode.jjtGetNumChildren(); n++) { if (astNode.jjtGetChild(n) instanceof ASTName) { tipo = ((SimpleNode) astNode.jjtGetChild(n)).getName(); } } Element parameterUnit = new Element("parameterUnit"); parameterUnit.setAttribute("id", "id." + idCount, xmi); parameterUnit.setAttribute("type", "id." + hsmLanguajeUnitDataType.get(tipo)); parameterUnit.setAttribute("kind", "return"); idCount++; signature.addContent(parameterUnit); } } return signature; }
From source file:cager.parser.test.SimpleTest2.java
License:Open Source License
private void trataNodo2(SimpleNode astNode, Element segmento, int nivel, int nivelAcumulado, String contexto) { int numChildren = astNode.jjtGetNumChildren(); //TODO Solucionar referencias a Namespaces Namespace xmi = Namespace.getNamespace("xmi", "http://www.omg.org/XMI"); SimpleNode snHijo = new SimpleNode(0); String strNombre = ""; String contextoLocal = ""; contextoLocal = contexto;//from ww w.ja va 2s . com strNombre = astNode.getName(); // if (strNombre!= null && contextoLocal.compareTo(strNombre)!=0) idName = 0; if (hsmMethodUnits.get(strNombre) != null) { // if (contextoLocal.compareTo(strNombre)!=0) idName = 0; contextoLocal = strNombre; } String espacios = ""; for (int j = 0; j < nivelAcumulado; j++) espacios += " "; //logger.info(espacios+"Trata nodo : "+nivel+" - "+numChildren+" -> "+astNode.getClass().getName()+" "+astNode.toString()); System.out.println(espacios + "Trata nodo : " + nivel + " - " + numChildren + " -> " + astNode.getClass().getName() + " " + astNode.toString()); // Recorre todos los hijos del ASTNode for (int i = 0; i < numChildren; i++) { strNombre = ((SimpleNode) astNode.jjtGetChild(i)).getName(); if ((SimpleNode) astNode.jjtGetChild(i) instanceof ASTAssignment) { //Preparamos el ActionElement Element actionElement = new Element("codeElement"); idAction = idCount; idCount++; actionElement.setAttribute("id", "id." + idAction, xmi); actionElement.setAttribute("type", "action:ActionElement", xmi); if (this.debuggMode) actionElement.setAttribute("debug", astNode.jjtGetChild(i).toString()); actionElement.setAttribute("name", "a" + idName); //actionElement.setAttribute("name",contexto+"_"+idName); idName++; espacios = ""; for (int j = 0; j < nivelAcumulado; j++) espacios += " "; //Recorre todos los nodos del ASTAssignment for (int k = 0; k < ((SimpleNode) astNode.jjtGetChild(i)).jjtGetNumChildren(); k++) { snHijo = (SimpleNode) (astNode.jjtGetChild(i)).jjtGetChild(k); //Tratamos el hijo ASTPrimaryExpresion if (snHijo instanceof ASTPrimaryExpression) { SimpleNode snNieto; //Recorre todos los hijos del ASTPrimaryExpression for (int l = 0; l < snHijo.jjtGetNumChildren(); l++) { snNieto = (SimpleNode) snHijo.jjtGetChild(l); String nombreCompleto = ""; for (int m = 0; m < snHijo.jjtGetNumChildren(); m++) { if (m > 0) nombreCompleto += "."; nombreCompleto += ((SimpleNode) snHijo.jjtGetChild(m)).getName(); } //Comprobamos si se trata de un StorableUnit reconocido if (hsmStorableUnits.get(nombreCompleto) != null) { //<actionRelation xmi:id="id.46" xmi:type="action:Writes" to="id.39"/> Element actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); idCount++; actionRelation.setAttribute("type", "action:Writes", xmi); actionRelation.setAttribute("to", "id." + String.valueOf(hsmStorableUnits.get(nombreCompleto))); actionRelation.setAttribute("from", "id." + idAction); actionElement.addContent(actionRelation); //TODO: Revisar qu hacemos con las referencias a tributos de Objetos (Objeto.atributo = ...) ASTName y ASTName //salir //TODO: Tomamos solo uno de los ASTNames hasta que sepamos cmo hacer con las properties de un objeto. break; } else { //logger.info("Detectado un StorabeUnit nuevo!!!! Qu hacemos?"); System.out.println( "Detectado un StorabeUnit nuevo!!!! Que hacemos?: " + snNieto.getName()); //Optamos temporalmente por aadirlo como StorableUnit global. //TODO: Revisar qu hacer en estos casos, ya que el parser no trata los "Begin" //Comprobamos si a Element codeElement = new Element("codeElement"); codeElement.setAttribute("id", "id." + idCount, xmi); hsmStorableUnits.put(nombreCompleto, idCount); hsmStorableUnitsObj.put(idCount, codeElement); idCount++; codeElement.setAttribute("name", nombreCompleto); codeElement.setAttribute("type", "code:StorableUnit", xmi); codeElement.setAttribute("type", ""); //codeElement.setAttribute("kind", "external");//TODO: Ver cmo tratar ste caso, variables utilizadas no definidas. //Para MethodUnit no hay external codeElement.setAttribute("kind", "unknown"); segmento.getChild("model").getChild("codeElement").addContent(codeElement); //Aadimos el Action:Writes //TODO: Qu hacemos con los properties de un objeto. Element actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); idCount++; actionRelation.setAttribute("type", "action:Writes", xmi); actionRelation.setAttribute("to", "id." + String.valueOf(hsmStorableUnits.get(nombreCompleto))); actionRelation.setAttribute("from", "id." + idAction); actionElement.addContent(actionRelation); //salir //TODO: Tomamos solo uno de los ASTNames hasta que sepamos cmo hacer con las properties de un objeto. break; //l=snHijo.jjtGetNumChildren(); } } //FIN hijos ASTPrimaryExpression //Tratamos el caso de ASTExpression } else if (snHijo instanceof ASTExpression) { SimpleNode snNieto; //Recorre todos los hijos del ASTExpression for (int l = 0; l < snHijo.jjtGetNumChildren(); l++) { snNieto = (SimpleNode) snHijo.jjtGetChild(l); //Si el hijo es un ASTName if (snNieto instanceof ASTName) { //Comprobamos si es un storableUnit reconocido if (hsmStorableUnits.get(snNieto.getName()) != null) { Element actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); idCount++; actionRelation.setAttribute("type", "action:Reads", xmi); actionRelation.setAttribute("to", "id." + String.valueOf(hsmStorableUnits.get(snNieto.getName()))); actionRelation.setAttribute("from", "id." + idAction); actionElement.addContent(actionRelation); //TODO: Revisar qu hacemos con las referencias atributos de Objetos (Objeto.atributo = ...) ASTName y ASTName //Si no es un storableUnit reconocido } else { //logger.info("Encontrado un Hijo de ASTExpression que no es ASTName"); System.out.println("Encontrado un Hijo de ASTExpression que no es ASTName"); } //FIN Comprobar si se conoce el storableUnit //Si el hijo es ASTBinOp } else if (snNieto instanceof ASTBinOp) { //Si el hijo es ASTName if (snNieto.jjtGetChild(0) instanceof ASTName) { strNombre = ((SimpleNode) (snNieto).jjtGetChild(0)).getName(); //Tratamos la llamada a mtodo //Si la MethodUnit no estaba registrada if (hsmMethodUnits.get(strNombre) == null && strNombre != null) { //idCount++; //Se da de alta como nueva MethodUnit Element nuevaFuncion = new Element("codeElement"); nuevaFuncion.setAttribute("id", "id." + idCount, xmi); hsmMethodUnits.put(strNombre, idCount); hsmMethodUnitsObj.put(idCount, nuevaFuncion); //logger.info("METODO: "+strNombre+": "+idCount); System.out.println("METODO: " + strNombre + ": " + idCount); idCount++; nuevaFuncion.setAttribute("name", "" + strNombre); nuevaFuncion.setAttribute("type", "code:MethodUnit", xmi); //nuevaFuncion.setAttribute("kind", "system"); //TODO: Ver cmo tratar ste caso, funciones llamadas no definidas. //nuevaFuncion.setAttribute("kind", "unknown"); //TODO: Ver cmo tratar ste caso, funciones llamadas no definidas. //nuevaFuncion.setAttribute("kind", "external"); //Tratamos los mtodos no conocidos como de tipo exteral. //Para los MethodUnit no hay external nuevaFuncion.setAttribute("kind", "unknown"); segmento.getChild("model").getChild("codeElement").addContent(nuevaFuncion); //Se registra el actionRelation (Call) Element actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); actionRelation.setAttribute("type", "action:Calls", xmi); actionRelation.setAttribute("to", "id." + String.valueOf(hsmMethodUnits.get(strNombre))); // actionRelation.setAttribute("from","id."+String.valueOf(idCount)); actionRelation.setAttribute("from", "id." + idAction); idCount++; actionElement.addContent(actionRelation); //segmento.getChild("model").getChild("codeElement").addContent(codeElement); //Si el MethodUnit ya existia } else { //Se registra el actionRelation (Call) Element actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); actionRelation.setAttribute("type", "action:Calls", xmi); actionRelation.setAttribute("to", "id." + String.valueOf(hsmMethodUnits.get(strNombre))); actionRelation.setAttribute("from", "id." + String.valueOf(idAction)); idCount++; actionElement.addContent(actionRelation); } //FIN Tratamiento la llamada a mtodo } //FIN Tratar hijo ASTName //TODO Hijos que no sean ASTName (Otro ASTBinOp contatenaciones // EJEMPLO -> AFOROS.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BaseDatos.mdb;Persist Security Info=False" } //FIN Tratamiento tipos de hijos de ASTExpression } //FIN Recorrido de hijos de ASTExpression } //FIN Tratamiento tipos de hijos de ASTAssignment } //FIN Recorrido de hijos de ASTAssignment if (contextoLocal == "") { actionElement.setAttribute("kind", "global"); segmento.getChild("model").getChild("codeElement").addContent(actionElement); } else { actionElement.setAttribute("kind", "local"); Element elementAux = hsmMethodUnitsObj.get(hsmMethodUnits.get(contextoLocal));//.getChild("codeElement"); elementAux.addContent(actionElement); } } else if ((SimpleNode) astNode.jjtGetChild(i) instanceof ASTStatement) { ASTStatement astStatement = (ASTStatement) astNode.jjtGetChild(i); astStatement.getClass().getName(); //System.out.println("SENTENCIA!!"+astStatement.getClass().getName()); /* switch (astStatement.getClass().getName()) { case "ASTIfStatement": System.out.println("SENTENCIA IF encontrada!!"+astStatement.getClass().getName()); break; case "ASTCaseStatment": System.out.println("SENTENCIA CASE encontrada!!"+astStatement.getClass().getName()); break; case "ASTDoWhileStatement": System.out.println("SENTENCIA DOWHILE encontrada!!"+astStatement.getClass().getName()); break; case "ASTForEachStatement": System.out.println("SENTENCIA FOREACH encontrada!!"+astStatement.getClass().getName()); break; case "ASTForWhileWendStatement": System.out.println("SENTENCIA FORWHILE encontrada!!"+astStatement.getClass().getName()); break; case "ASTWithStatement": System.out.println("SENTENCIA WITH encontrada!!"+astStatement.getClass().getName()); break; default: break; } */ if (astStatement.getClass().getName().compareTo("cager.parser.ASTIfStatement") == 0) { System.out.println("SENTENCIA IF encontrada!!" + astStatement.getClass().getName()); System.out.println(((ASTIfStatement) astStatement).toString()); //Preparamos el ActionElement Element actionElement = new Element("codeElement"); idCount++; idAction = idCount; idCount++; actionElement.setAttribute("id", "id." + idAction, xmi); actionElement.setAttribute("type", "action:ActionElement", xmi); actionElement.setAttribute("name", "a" + idName); //actionElement.setAttribute("name",contexto+"_"+idName); idName++; actionElement.setAttribute("kind", "Condition"); if (contextoLocal == "") { //actionElement.setAttribute("kind", "global"); segmento.getChild("model").getChild("codeElement").addContent(actionElement); } else { //actionElement.setAttribute("kind", "local"); Element elementAux = hsmMethodUnitsObj.get(hsmMethodUnits.get(contextoLocal)); elementAux.addContent(actionElement); } TratarASTIfStatement(astStatement, actionElement); } else if (astStatement.getClass().getName().compareTo("cager.parser.ASTCaseStatment") == 0) { System.out.println("SENTENCIA CASE encontrada!!" + astStatement.getClass().getName()); } else if (astStatement.getClass().getName().compareTo("cager.parser.ASTForStatement") == 0) { System.out.println("SENTENCIA FOR encontrada!!" + astStatement.getClass().getName()); } else if (astStatement.getClass().getName().compareTo("cager.parser.ASTDoWhileStatement") == 0) { System.out.println("SENTENCIA DOWHILE encontrada!!" + astStatement.getClass().getName()); } else if (astStatement.getClass().getName().compareTo("cager.parser.ASTWhileWendStatement") == 0) { System.out.println("SENTENCIA WHILEWEND encontrada!!" + astStatement.getClass().getName()); } else if (astStatement.getClass().getName().compareTo("cager.parser.ASTForEachStatement") == 0) { System.out.println("SENTENCIA FOREACH encontrada!!" + astStatement.getClass().getName()); } else if (astStatement.getClass().getName().compareTo("cager.parser.ASTWithStatement") == 0) { System.out.println("SENTENCIA WITH encontrada!!" + astStatement.getClass().getName()); } else { System.out.println("SENTENCIA encontrada SIN DETERMINAR!!" + astStatement.getClass().getName()); } } trataNodo2((SimpleNode) astNode.jjtGetChild(i), segmento, nivel + 1, nivel + nivelAcumulado, contextoLocal); } }
From source file:cager.parser.test.SimpleTest2.java
License:Open Source License
private void TratarASTIfStatement(ASTStatement astStatement, Element actionElement) { Namespace xmi = Namespace.getNamespace("xmi", "http://www.omg.org/XMI"); //<actionRelation xmi:id="id.26" xmi:type="action:Reads" to="id.20" from="id.25"/> Element actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); idCount++;/*from ww w . ja v a2 s.c o m*/ actionRelation.setAttribute("type", "action:Reads", xmi); //actionRelation.setAttribute("to", "id."+(idAction+2));//TODO calcular a dnde va actionRelation.setAttribute("from", "id." + idAction); actionElement.addContent(actionRelation); //<actionRelation xmi:id="id.46" xmi:type="action:Writes" to="id.39"/> actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); idCount++; actionRelation.setAttribute("type", "action:TrueFlow", xmi); //actionRelation.setAttribute("to", "id."+(idAction+2));//TODO calcular a dnde va actionRelation.setAttribute("from", "id." + idAction); actionElement.addContent(actionRelation); actionRelation = new Element("actionRelation"); actionRelation.setAttribute("id", "id." + idCount, xmi); idCount++; actionRelation.setAttribute("type", "action:FalseFlow", xmi); //actionRelation.setAttribute("to", "id."+(idAction+1));//TODO calcular a dnde va actionRelation.setAttribute("from", "id." + idAction); actionElement.addContent(actionRelation); // <codeElement xmi:id="id.34" xmi:type="action:ActionElement" name="a3.1" kind="Condition"> // <actionRelation xmi:id="id.35" xmi:type="action:Reads" to="id.29" from="id.34"/> // <actionRelation xmi:id="id.36" xmi:type="action:TrueFlow" to="id.38" from="id.28"/> // <actionRelation xmi:id="id.37" xmi:type="action:FalseFlow" to="id.42" from="id.34"/> // </codeElement> // <codeElement xmi:id="id.111" xmi:type="action:ActionElement" name="p5.2" kind="GreaterThan"> // <actionRelation xmi:id="id.112" xmi:type="action:Reads" to="id.104" from="id.111"/> // <actionRelation xmi:id="id.113" xmi:type="action:TrueFlow" to="id.115" from="id.111"/> // <actionRelation xmi:id="id.114" xmi:type="action:FalseFlow" to="id.120" from="id.111"/> // </codeElement> /* <codeElement xmi:id="id.25" xmi:type="action:ActionElement" name="1.3" kind="Condition"> <actionRelation xmi:id="id.26" xmi:type="action:Reads" to="id.20" from="id.25"/> <actionRelation xmi:id="id.27" xmi:type="action:TrueFlow" to="id.29" from="id.25"/> <actionRelation xmi:id="id.28" xmi:type="action:FalseFlow" to="id.39" from="id.25"/> </codeElement> <codeElement xmi:id="id.75" xmi:type="action:ActionElement" name="a1" kind="Condition"> <actionRelation xmi:id="id.76" xmi:type="action:TrueFlow" to="id.77" from="id.75" /> <actionRelation xmi:id="id.77" xmi:type="action:FalseFlow" to="id.76" from="id.75" /> </codeElement> */ }