List of usage examples for org.jdom2 Element setAttribute
public Element setAttribute(final String name, final String value, final Namespace ns)
This sets an attribute value for this element.
From source file:ca.nrc.cadc.uws.JobWriter.java
License:Open Source License
/** * Get an Element representing the Job destruction. * * @return The Job destruction Element./*from w ww . j a v a2 s .co m*/ */ public Element getDestruction(Job job) { Element element = new Element(JobAttribute.DESTRUCTION_TIME.getAttributeName(), UWS.NS); Date date = job.getDestructionTime(); if (date == null) element.setAttribute("nil", "true", UWS.XSI_NS); else element.addContent(dateFormat.format(date)); return element; }
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;//from w w w. j a v a 2 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++;// w ww .j a v a2s .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 w ww . j a v a 2s . c o m 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++;/*ww w . j av a 2s. co 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> */ }
From source file:cager.parser.test.SimpleTest2.java
License:Open Source License
private Element inicializaDataTypes() { // Creamos el builder basado en SAX SAXBuilder builder = new SAXBuilder(); Namespace xmi = Namespace.getNamespace("xmi", "http://www.omg.org/XMI"); Namespace code = Namespace.getNamespace("code", "http://kdm.omg.org/code"); Element model = new Element("model"); model.setAttribute("id", "id." + idCount, xmi); model.setAttribute("type", "code:CodeModel", xmi); idCount++;/* ww w. ja va 2 s .co m*/ Element codeElementP = new Element("codeElement"); codeElementP.setAttribute("id", "id." + idCount, xmi); codeElementP.setAttribute("type", "code:LanguageUnit", xmi); idCount++; Element codeElementI = new Element("codeElement"); for (int i = 0; i < dataTypes.length; i++) { codeElementI = new Element("codeElement"); codeElementI.setAttribute("id", "id." + idCount, xmi); if (dataTypes[i].equals("Double") || dataTypes[i].equals("Long") || dataTypes[i].equals("Short")) { codeElementI.setAttribute("type", "code:DecimalType", xmi); } else if (dataTypes[i].equals("Byte")) { codeElementI.setAttribute("type", "code:OctetType", xmi); } else { codeElementI.setAttribute("type", "code:" + dataTypes[i] + "Type", xmi); } codeElementI.setAttribute("name", dataTypes[i]); if (!hsmLanguajeUnitDataType.containsKey(dataTypes[i])) { hsmLanguajeUnitDataType.put(dataTypes[i], idCount); } idCount++; codeElementP.addContent(codeElementI); } //model.addContent(codeElementP); return codeElementP; }
From source file:cager.parser.test.SimpleTest3.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 w w .j a v a 2s . 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); this.segmento = segmento; //<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); this.segmento = segmento; //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); this.segmento = segmento; } 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.SimpleTest3.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 av a 2s. c o 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; } } //Se busca el nombre 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 (tipo del Return) 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.SimpleTest3.java
License:Open Source License
private void trataNodo2(SimpleNode astNode, Element segmento, int nivel, int nivelAcumulado, String contexto) { int numChildren = astNode.jjtGetNumChildren(); if ((SimpleNode) astNode instanceof ASTStatements) { System.out.println("***>" + nivel + " - " + numChildren + " -> " + astNode.getClass().getName() + " " + astNode.toString());/*ww w .j av a 2s .c om*/ } SimpleNode snHijo = new SimpleNode(0); String strNombre = ""; contextoLocal = contexto; strNombre = astNode.getName(); if (hsmMethodUnits.get(strNombre) != null) { 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()); System.out.println(espacios + 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 || (SimpleNode) astNode.jjtGetChild(i) instanceof ASTExpression) { ASTAssignment assigment = (ASTAssignment) astNode.jjtGetChild(i); //Preparamos el ActionElement Element actionElement = new Element("codeElement"); idAction = idCount; idCount++; actionElement.setAttribute("id", "id." + idAction, xmi); trataExpressions(assigment, actionElement, nivelAcumulado, segmento); } else if ((SimpleNode) astNode.jjtGetChild(i) instanceof ASTStatement) { ASTStatement astStatement = (ASTStatement) astNode.jjtGetChild(i); //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++; trataStatements(astStatement, actionElement, segmento); } trataNodo2((SimpleNode) astNode.jjtGetChild(i), segmento, nivel + 1, nivel + nivelAcumulado, contextoLocal); } }
From source file:cager.parser.test.SimpleTest3.java
License:Open Source License
private void trataExpressions(SimpleNode astAssignment, Element actionElement, int nivelAcumulado, Element segmento) {// w w w. j av a 2 s.c o m SimpleNode snHijo = new SimpleNode(0); String strNombre = ""; actionElement.setAttribute("type", "action:ActionElement", xmi); if (this.debuggMode) actionElement.setAttribute("debug", astAssignment.toString()); actionElement.setAttribute("name", "a" + idName); idName++; String espacios = ""; for (int j = 0; j < nivelAcumulado; j++) espacios += " "; //Recorre todos los nodos del ASTAssignment for (int k = 0; k < astAssignment.jjtGetNumChildren(); k++) { snHijo = (SimpleNode) astAssignment.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); // this.segmento = segmento; //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); // this.segmento = segmento; //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) else { System.out.println("ESTO ES UN ASTBinOp distinto."); } // 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); // this.segmento = segmento; } else { actionElement.setAttribute("kind", "local"); Element elementAux = hsmMethodUnitsObj.get(hsmMethodUnits.get(contextoLocal));//.getChild("codeElement"); elementAux.addContent(actionElement); } }