Example usage for org.jdom2 Element addContent

List of usage examples for org.jdom2 Element addContent

Introduction

In this page you can find the example usage for org.jdom2 Element addContent.

Prototype

@Override
public Element addContent(final Collection<? extends Content> newContent) 

Source Link

Document

Appends all children in the given collection to the end of the content list.

Usage

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;/*from   w  w w  .j a  va  2  s  .co  m*/
    if (chdText != null && !chdText.equals("")) {
        ele = new Element(chdName);
        ele.setText(chdText);
        eleParent.addContent(ele);
    }
    return ele;
}

From source file:ca.nrc.cadc.vosi.util.Util.java

License:Open Source License

public static Element addChild(Element ele0, Namespace ns, String chdName, String chdText) {
    Element ele = null;/*from w w w .j av  a 2s .  c  om*/
    if (chdText != null && !chdText.equals("")) {
        if (ns != null)
            ele = new Element(chdName, ns);
        else
            ele = new Element(chdName);
        ele.setText(chdText);
        ele0.addContent(ele);
    }
    return ele;
}

From source file:ca.nrc.cadc.xml.JsonInputter.java

License:Open Source License

private void processJSONObject(JSONObject jsonObject, Element element, List<Namespace> namespaces)
        throws JSONException {
    List<String> keys = Arrays.asList(JSONObject.getNames(jsonObject));
    Namespace namespace = getNamespace(namespaces, jsonObject, keys);
    if (namespace == null) {
        namespace = element.getNamespace();
    }// w  w w.j  av a2  s.  c  o  m

    for (String key : keys) {
        if (jsonObject.isNull(key)) {
            continue;
        }

        // attribute
        if (key.startsWith("@")) {
            Object value = jsonObject.get(key);
            element.setAttribute(new Attribute(key.substring(1), getStringValue(value)));
            continue;
        }

        // text content
        Object value = jsonObject.get(key);
        if (key.equals("$")) {
            element.setText(getStringValue(value));
            continue;
        }

        Element child = new Element(key, namespace);
        if (listElementMap.containsKey(key)) {
            final String childKey = listElementMap.get(key);
            final Object childObject = ((JSONObject) value).get("$");
            Element grandChild = new Element(childKey, namespace);

            if (childObject instanceof JSONArray) {
                processJSONArray(key, (JSONArray) childObject, child, namespace, namespaces);
            } else if (childObject instanceof JSONObject) {
                processJSONObject((JSONObject) childObject, grandChild, namespaces);
                child.addContent(grandChild);
            }
        } else if (value instanceof JSONObject) {
            processJSONObject((JSONObject) value, child, namespaces);
        }

        element.addContent(child);
    }
}

From source file:ca.nrc.cadc.xml.JsonInputter.java

License:Open Source License

private void processJSONArray(String key, JSONArray jsonArray, Element arrayElement, Namespace namespace,
        List<Namespace> namespaces) throws JSONException {
    String childTypeName = getListElementMap().get(key);

    for (int i = 0; i < jsonArray.length(); i++) {
        if (jsonArray.isNull(i)) {
            continue;
        }/*from  ww  w  . j a  va  2  s.  co m*/

        Element child;
        if (childTypeName == null) {
            child = arrayElement;
        } else {
            child = new Element(childTypeName, namespace);
            arrayElement.addContent(child);
        }

        Object value = jsonArray.get(i);
        processObject(childTypeName, value, child, namespace, namespaces);
    }
}

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  ww . ja  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 . ja v a2 s.  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  .j  a  v a2s . 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++;/*from w  w  w .ja  v 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 inicializaKDM(String segmentName) {

    // Creamos el builder basado en SAX
    SAXBuilder builder = new SAXBuilder();

    Namespace xmi = Namespace.getNamespace("xmi", "http://www.omg.org/XMI");
    Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    Namespace action = Namespace.getNamespace("action", "http://kdm.omg.org/action");
    Namespace code = Namespace.getNamespace("code", "http://kdm.omg.org/code");
    Namespace kdm = Namespace.getNamespace("kdm", "http://kdm.omg.org/kdm");
    Namespace source = Namespace.getNamespace("source", "http://kdm.omg.org/source");

    Element segmento = new Element("Segment", kdm);
    segmento.addNamespaceDeclaration(xmi);
    segmento.addNamespaceDeclaration(xsi);
    segmento.addNamespaceDeclaration(action);
    segmento.addNamespaceDeclaration(code);
    segmento.addNamespaceDeclaration(kdm);
    segmento.addNamespaceDeclaration(source);

    segmento.setAttribute("name", segmentName.substring(0, segmentName.indexOf('.')));

    Element modelo = new Element("model");
    modelo.setAttribute("id", "id.0", xmi);
    idCount++;//from   ww w.j ava 2s  .c om
    modelo.setAttribute("name", segmentName.substring(0, segmentName.indexOf('.')));
    modelo.setAttribute("type", "code:CodeModel", xmi);

    Element codeElement = new Element("codeElement");
    codeElement.setAttribute("id", "id.1", xmi);
    idCount++;
    codeElement.setAttribute("name", segmentName);
    codeElement.setAttribute("type", "code:CompilationUnit", xmi);

    modelo.addContent(codeElement);

    elementoTipos = inicializaDataTypes();

    modelo.addContent(elementoTipos);

    segmento.addContent(modelo);

    return segmento;
}

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++;/* w w w  . j a v a  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;

}