List of usage examples for org.eclipse.jdt.core.dom VariableDeclarationFragment toString
@Override public final String toString()
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; }