Example usage for org.eclipse.jdt.core.dom VariableDeclarationFragment toString

List of usage examples for org.eclipse.jdt.core.dom VariableDeclarationFragment toString

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom VariableDeclarationFragment toString.

Prototype

@Override
public final String toString() 

Source Link

Document

Returns a string representation of this node suitable for debugging purposes only.

Usage

From source file:fr.imag.exschema.neo4j.Neo4jUtil.java

License:Open Source License

/**
 * Associate fields to their corresponding Neo4j's containers.
 * /*  w ww.  ja v  a 2  s  .  c om*/
 * @param declarations
 * @param updateInvocations
 * @return
 */
private static Map<String, List<String>> associateContainersFields(
        final List<VariableDeclarationFragment> declarations, List<MethodInvocation> updateInvocations) {
    String fragmentKey;
    String fragmentRoot;
    String invocationRoot;
    String fragmentString;
    List<String> currentFields;
    Map<String, List<String>> returnValue;

    returnValue = new HashMap<String, List<String>>();
    // Declarations
    for (VariableDeclarationFragment fragment : declarations) {
        currentFields = new ArrayList<String>();
        fragmentRoot = ((CompilationUnit) fragment.getRoot()).getTypeRoot().getElementName();

        // Fields
        for (MethodInvocation invocation : updateInvocations) {
            invocationRoot = ((CompilationUnit) invocation.getRoot()).getTypeRoot().getElementName();
            // Match name of declare and update variables, in the same file
            if (fragmentRoot.equals(invocationRoot)) {
                if (fragment.getName().toString().equals(invocation.getExpression().toString())) {
                    currentFields.add(invocation.arguments().get(0).toString().replace('"', ' ').trim());
                }
            }
        }

        // Save only the class name
        if (fragmentRoot.contains(".java")) {
            fragmentRoot = fragmentRoot.substring(0, fragmentRoot.indexOf(".java")).trim();
        }

        // Save only variable name if the declaration contains an assignment
        // (var=expr)
        fragmentString = fragment.toString();
        if (fragmentString.contains("=")) {
            fragmentString = fragmentString.substring(0, fragmentString.indexOf('=')).trim();
        }

        // Save association between fields and container
        fragmentKey = fragmentRoot + "." + fragmentString;
        if ((currentFields.size() > 0) && (returnValue.get(fragmentKey) == null)) {
            returnValue.put(fragmentKey, currentFields);
        }
    }

    return returnValue;
}

From source file:logic.Translator.java

License:Open Source License

/** This method translates the node passed as parameter to use
 * the variable object of the method passed as parameter or of the root.
 * @param node the node to translate./*  ww w  .j  av a  2  s .com*/
 * @param method the method.
 */
private String translateVars(ASTNode node, MethodDeclaration method) {
    //Metodo che permette di tradurre il nodo passato come parametro
    //in modo da usare l'oggetto variabili necessario
    //(ad esempio: l'istruzione "i = x + y;" deve essere tradotta in
    //"OGG_VAR.i = OGG_VAR.x + OGG_VAR.y", dove "OGG_VAR" rappresenta
    //l'oggetto variabili da utilizzare).
    //Il parametro "MethodDeclaration" indica che bisogna usare l'oggetto
    //variabili di questo metodo o quello della root (non quello di qualche
    //altro metodo).

    //troviamo tutti i "SimpleName" del nodo passato come parametro
    ArrayList<SimpleName> simpleNamesList = null;
    if (node instanceof SimpleName) {
        simpleNamesList = new ArrayList<SimpleName>();
        simpleNamesList.add((SimpleName) node);
    } else {
        //utilizziamo l'apposito visitor per trovare tutti i "SimpleName"
        //del nodo passato come parametro e dei suoi sotto-nodi
        SimpleNameVisitor visitor = new SimpleNameVisitor();
        node.accept(visitor);
        simpleNamesList = visitor.getSimpleNamesList();
    }

    //ricaviamo l'istruzione da tradurre
    String istruzione = "";
    if (node instanceof VariableDeclarationStatement) {
        //se il nodo passato come parametro rappresenta la dichiarazione
        //di una variabile, dobbiamo eliminare il tipo della variabile a
        //sinistra dell'istruzione; ad esempio, se abbiamo questa istruzione:
        // int x = y + z;
        //eliminiamo "int" dalla parte sinistra e l'istruzione diventa:
        // OGG_VAR.x = OGG_VAR.y + OGG_VAR.z;
        VariableDeclarationStatement vd = (VariableDeclarationStatement) node;
        for (int i = 0; i < vd.fragments().size(); i++) {
            if (vd.fragments().get(i) instanceof VariableDeclarationFragment) {
                VariableDeclarationFragment v = (VariableDeclarationFragment) vd.fragments().get(i);
                if (v.getInitializer() != null) {
                    //le dichiarazioni di variabili senza assegnazione di valore
                    //(cio, quelle che hanno "getInitializer() = null", come ad
                    //esempio: "int x;") non vanno tradotte; traduciamo solo
                    //quelle che assegnano un valore alle variabili (es.: "int x = 1;")
                    istruzione += v.toString() + ";";
                }
            }
        }
    } else {
        istruzione = node.toString(); //contiene l'istruzione rappresentata dal nodo passato come parametro
    }

    if (istruzione.equals("") == false) {
        //prima di manipolare la stringa che rappresenta l'istruzione,
        //sostituiamo il testo tra virgolette (che non deve essere
        //modificato) con il carattere speciale "@"; poi, al termine
        //delle modifiche, ogni carattere speciale "@" verr sostituito
        //con il testo tra virgolette originale
        ArrayList<String> stringheTraVirgolette = new ArrayList<String>();
        ArrayList<Integer> indiciVirgolette = new ArrayList<Integer>();

        for (int i = 0; i < istruzione.length(); i++) {
            char carattereCorr = istruzione.charAt(i);
            if (((i == 0) && (carattereCorr == '\"'))
                    || ((i > 0) && (carattereCorr == '\"') && (istruzione.charAt(i - 1) != '\\'))) {
                //se abbiamo trovato il carattere " e questo carattere
                //non  preceduto dal carattere \ (per ignorare la rappresentazione
                //di una virgoletta all'interno di un testo tra virgolette),
                //memorizziamo l'indice attuale
                indiciVirgolette.add(i);
            }
        }

        //memorizziamo il testo tra virgolette
        int k = 0;
        while (k < (indiciVirgolette.size() - 1)) {
            String sottostringa = istruzione.substring(indiciVirgolette.get(k),
                    indiciVirgolette.get(k + 1) + 1);
            stringheTraVirgolette.add(sottostringa);
            k = k + 2;
        }

        //sostituiamo il testo tra virgolette con il carattere
        //speciale "@" seguito da un numero che permette di identificare
        //successivamente quale sottostringa  stata sostituita
        for (int i = 0; i < stringheTraVirgolette.size(); i++) {
            istruzione = istruzione.replace(stringheTraVirgolette.get(i), "@" + i);
        }

        //separiamo con il carattere speciale "#" i vari componenti dell'istruzione
        //per effettuare successivamente in maniera corretta la sostituzione
        //dei nomi delle variabili (ogni nome di variabile  preceduto e seguito
        //dal carattere speciale "#" o da uno spazio vuoto)
        istruzione = "#" + istruzione + "#";
        istruzione = istruzione.replace("+", "#+#");
        istruzione = istruzione.replace("-", "#-#");
        istruzione = istruzione.replace("~", "#~#");
        istruzione = istruzione.replace("!", "#!#");
        istruzione = istruzione.replace("*", "#*#");
        istruzione = istruzione.replace("/", "#/#");
        istruzione = istruzione.replace("%", "#%#");
        istruzione = istruzione.replace("<", "#<#");
        istruzione = istruzione.replace(">", "#>#");
        istruzione = istruzione.replace("=", "#=#");
        istruzione = istruzione.replace("&", "#&#");
        istruzione = istruzione.replace("^", "#^#");
        istruzione = istruzione.replace("|", "#|#");
        istruzione = istruzione.replace("?", "#?#");
        istruzione = istruzione.replace(":", "#:#");
        istruzione = istruzione.replace("(", "#(#");
        istruzione = istruzione.replace(")", "#)#");
        istruzione = istruzione.replace("[", "#[#");
        istruzione = istruzione.replace("]", "#]#");
        istruzione = istruzione.replace("{", "#{#");
        istruzione = istruzione.replace("}", "#}#");
        istruzione = istruzione.replace(",", "#,#");
        istruzione = istruzione.replace(".", "#.#");
        istruzione = istruzione.replace(";", "#;#");

        //per ogni "SimpleName" trovato, vediamo quale variabile rappresenta
        //e scegliamo di conseguenza l'oggetto variabili da utilizzare.
        //NOTA: per l'oggetto variabili della root utilizziamo il nome "varRoot",
        //mentre per gli oggetti variabili degli stati composti utilizziamo il
        //formato "varXxx", dove "xxx"  il nome del metodo
        for (int i = 0; i < simpleNamesList.size(); i++) {
            SimpleName sn = simpleNamesList.get(i);

            //cerchiamo la variabile con il nome corrente
            //e riceviamo l'oggetto variabili da utilizzare
            String oggVar = Util.findVar(sn, method, this.unit);

            if (oggVar != null) {
                //se "oggVar"  diverso da NULL, significa che la
                //variabile  stata trovata, quindi anteponiamo il
                //nome dell'oggetto variabili al nome della variabile
                //all'interno dell'istruzione
                istruzione = istruzione.replace("#" + sn.toString() + "#",
                        "#" + oggVar + "." + sn.toString() + "#");
                istruzione = istruzione.replace("#" + sn.toString() + " ",
                        "#" + oggVar + "." + sn.toString() + " ");
                istruzione = istruzione.replace(" " + sn.toString() + "#",
                        " " + oggVar + "." + sn.toString() + "#");
                istruzione = istruzione.replace(" " + sn.toString() + " ",
                        " " + oggVar + "." + sn.toString() + " ");
            }
        }

        //eliminiamo i caratteri speciali "#"
        istruzione = istruzione.replace("#", "");

        //eliminiamo i caratteri speciali "@", sostituendo ad
        //ogni carattere "@" il testo tra virgolette originale
        for (int i = 0; i < stringheTraVirgolette.size(); i++) {
            istruzione = istruzione.replace("@" + i, stringheTraVirgolette.get(i));
        }
    }

    return istruzione;
}

From source file:org.evosuite.junit.TestExtractingVisitor.java

License:Open Source License

private VariableReference retrieveVariableReference(VariableDeclarationFragment varDeclFrgmnt) {
    IVariableBinding variableBinding = varDeclFrgmnt.resolveBinding();
    Class<?> clazz = retrieveTypeClass(variableBinding.getType());
    if (clazz.isArray()) {
        ArrayReference arrayReference = new ValidArrayReference(testCase.getReference(), clazz);
        arrayReference.setOriginalCode(varDeclFrgmnt.toString());
        testCase.addVariable(varDeclFrgmnt.resolveBinding(), arrayReference);
        return arrayReference;
    }/*from  ww w.  j ava 2s .co  m*/
    VariableReference result = new BoundVariableReferenceImpl(testCase, clazz, variableBinding.getName());
    testCase.addVariable(variableBinding, result);
    return result;
}