Skip to content
Snippets Groups Projects
Commit 1e5977ce authored by Johannes Ohlemacher's avatar Johannes Ohlemacher
Browse files

Merge branch 'master' of build.se.informatik.uni-kiel.de:chw/integration-project

parents 3132858b 09bee3ef
Branches
No related tags found
No related merge requests found
Showing
with 770 additions and 683 deletions
package de.mzl.examples;
public class HelloWorld {
public static void main(String... args) {
System.out.println("Hello World!");
}
}
...@@ -36,8 +36,8 @@ public class DBController { ...@@ -36,8 +36,8 @@ public class DBController {
} }
public void setPath(String path) { public void setPath(String path) {
stopDB();
this.path = path; this.path = path;
this.db = null;
} }
public GraphDatabaseService startDB() { public GraphDatabaseService startDB() {
...@@ -54,19 +54,17 @@ public class DBController { ...@@ -54,19 +54,17 @@ public class DBController {
return db; return db;
} }
public void setDB(GraphDatabaseService newDb) { public final void setDB(GraphDatabaseService newDb) {
stopDB(); stopDB();
this.db = newDb; this.db = newDb;
} }
public void stopDB() { public final void stopDB() {
try { if (db != null) {
db.shutdown(); db.shutdown();
} catch (Exception e) {
}
this.db = null; this.db = null;
} }
}
private static void registerShutdownHook(final GraphDatabaseService database) { private static void registerShutdownHook(final GraphDatabaseService database) {
Runtime.getRuntime().addShutdownHook(new Thread() { Runtime.getRuntime().addShutdownHook(new Thread() {
......
...@@ -14,6 +14,7 @@ import org.neo4j.kernel.impl.core.NodeProxy; ...@@ -14,6 +14,7 @@ import org.neo4j.kernel.impl.core.NodeProxy;
import de.chw.parallax.java.GeneratorExecutor; import de.chw.parallax.java.GeneratorExecutor;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import logging.Logger;
import model.ParallelizationPattern; import model.ParallelizationPattern;
import model.Pattern; import model.Pattern;
import model.Query; import model.Query;
...@@ -22,11 +23,12 @@ public class LazyTransformer { ...@@ -22,11 +23,12 @@ public class LazyTransformer {
private Pattern activeCandidatePattern; private Pattern activeCandidatePattern;
private ParallelizationPattern activeUpdatePattern; private ParallelizationPattern activeUpdatePattern;
private int numberOfMatches;
private Map<Pattern, ObservableList<String>> patternMatches; private Map<Pattern, ObservableList<String>> patternMatches;
private Map<Pattern, List<Node>> patternNodes; private Map<Pattern, List<Node>> patternNodes;
private Map<Pattern, List<Map<String, Object>>> patternParameters; private Map<Pattern, List<Map<String, Object>>> patternParameters;
private Map<Pattern, List<String>> patternCode; private Map<Pattern, String[]> patternCode;
private Map<Pattern, Map<ParallelizationPattern, List<String>>> patternCodeOptimized; private Map<Pattern, Map<ParallelizationPattern, String[]>> patternCodeOptimized;
private static LazyTransformer instance; private static LazyTransformer instance;
...@@ -47,8 +49,8 @@ public class LazyTransformer { ...@@ -47,8 +49,8 @@ public class LazyTransformer {
this.patternMatches = new HashMap<Pattern, ObservableList<String>>(); this.patternMatches = new HashMap<Pattern, ObservableList<String>>();
this.patternNodes = new HashMap<Pattern, List<Node>>(); this.patternNodes = new HashMap<Pattern, List<Node>>();
this.patternParameters = new HashMap<Pattern, List<Map<String, Object>>>(); this.patternParameters = new HashMap<Pattern, List<Map<String, Object>>>();
this.patternCode = new HashMap<Pattern, List<String>>(); this.patternCode = new HashMap<Pattern, String[]>();
this.patternCodeOptimized = new HashMap<Pattern, Map<ParallelizationPattern, List<String>>>(); this.patternCodeOptimized = new HashMap<Pattern, Map<ParallelizationPattern, String[]>>();
} }
public Pattern getActiveCandidatePattern() { public Pattern getActiveCandidatePattern() {
...@@ -77,7 +79,7 @@ public class LazyTransformer { ...@@ -77,7 +79,7 @@ public class LazyTransformer {
GraphDatabaseService db = DBController.getInstance().startDB(); GraphDatabaseService db = DBController.getInstance().startDB();
System.out.println("Querying: " + name + " (" + query + ")"); Logger.info("Querying: " + name + " (" + query + ")");
try (Transaction tx = db.beginTx(); Result results = db.execute(query)) { try (Transaction tx = db.beginTx(); Result results = db.execute(query)) {
...@@ -109,41 +111,38 @@ public class LazyTransformer { ...@@ -109,41 +111,38 @@ public class LazyTransformer {
patternParameters.put(activeCandidatePattern, updateParameters); patternParameters.put(activeCandidatePattern, updateParameters);
tx.success(); tx.success();
System.out.println("Calculated Matches!"); Logger.info("Calculated Matches!");
} }
} }
this.numberOfMatches = patternMatches.get(activeCandidatePattern).size();
System.out.println("Matches : " + numberOfMatches);
return patternMatches.get(activeCandidatePattern); return patternMatches.get(activeCandidatePattern);
} }
public String getNormalCode(int index, String matchedClass) { public String getNormalCode(int index, String matchedClass) {
if (!patternCode.containsKey(activeCandidatePattern)) { if (!patternCode.containsKey(activeCandidatePattern)) {
patternCode.put(activeCandidatePattern, new ArrayList<String>()); System.out.println("Matches : " + numberOfMatches);
patternCode.put(activeCandidatePattern, new String[numberOfMatches]);
} }
try { if (patternCode.get(activeCandidatePattern)[index] == null) {
return patternCode.get(activeCandidatePattern).get(index);
} catch (IndexOutOfBoundsException e) {
String code = SourceFinder.getInstance().locateSourceCode(matchedClass); String code = SourceFinder.getInstance().locateSourceCode(matchedClass);
patternCode.get(activeCandidatePattern).add(index, code); patternCode.get(activeCandidatePattern)[index] = code;
return patternCode.get(activeCandidatePattern).get(index);
} }
return patternCode.get(activeCandidatePattern)[index];
} }
public String getOptimizedCode(int index) { public String getOptimizedCode(int index) {
if (!patternCodeOptimized.containsKey(activeCandidatePattern)) { if (!patternCodeOptimized.containsKey(activeCandidatePattern)) {
patternCodeOptimized.put(activeCandidatePattern, new HashMap<ParallelizationPattern, List<String>>()); patternCodeOptimized.put(activeCandidatePattern, new HashMap<ParallelizationPattern, String[]>());
} }
if (!patternCodeOptimized.get(activeCandidatePattern).containsKey(activeUpdatePattern)) { if (!patternCodeOptimized.get(activeCandidatePattern).containsKey(activeUpdatePattern)) {
patternCodeOptimized.get(activeCandidatePattern).put(activeUpdatePattern, new ArrayList<String>()); patternCodeOptimized.get(activeCandidatePattern).put(activeUpdatePattern, new String[numberOfMatches]);
} }
try { if (patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern)[index] == null) {
return patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern).get(index);
} catch (IndexOutOfBoundsException e) {
GraphDatabaseService db = DBController.getInstance().startDB(); GraphDatabaseService db = DBController.getInstance().startDB();
System.out.println("Started : " + db.isAvailable(500));
for (Query q : activeUpdatePattern.getQueries()) { for (Query q : activeUpdatePattern.getQueries()) {
String queryString = q.generateQueryString(); String queryString = q.generateQueryString();
...@@ -157,17 +156,16 @@ public class LazyTransformer { ...@@ -157,17 +156,16 @@ public class LazyTransformer {
// exportController.toSourceCode(node); // exportController.toSourceCode(node);
GeneratorExecutor codeGenerator = new GeneratorExecutor(db); GeneratorExecutor codeGenerator = new GeneratorExecutor(db);
System.out.println("Within : " + db.isAvailable(500));
String optimizedCode = codeGenerator.toCode(node); String optimizedCode = codeGenerator.toCode(node);
patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern).add(index, optimizedCode); patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern)[index] = optimizedCode;
tx.failure(); tx.failure();
} }
} }
System.out.println("Stopped : " + db.isAvailable(500));
return patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern).get(index);
} }
return patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern)[index];
} }
public void applyParallelizationPattern(int index) { public void applyParallelizationPattern(int index) {
......
...@@ -68,8 +68,8 @@ public class Matcher { ...@@ -68,8 +68,8 @@ public class Matcher {
Map<String, Object> candidateResult = match.getCandidateResultForUpdate(); Map<String, Object> candidateResult = match.getCandidateResultForUpdate();
Logger.info("Running update query " + p.getName() + " for " + match.getPattern().getName() + ", Commit changes = " Logger.info("Running update query " + p.getName() + " for " + match.getPattern().getName()
+ commitChanges); + ", Commit changes = " + commitChanges);
String code = "An error occured!"; String code = "An error occured!";
...@@ -119,14 +119,14 @@ public class Matcher { ...@@ -119,14 +119,14 @@ public class Matcher {
String name = pattern.getName(); String name = pattern.getName();
String query = pattern.getCandidateQuery().generateQueryString(); String query = pattern.getCandidateQuery().generateQueryString();
Logger.info("Querying: " + name + " (" + query + ")"); Logger.info("Running candidate pattern " + name);
try (Transaction tx = db.beginTx(); Result result = db.execute(query, Query.getMinExecutionTimeParams())) { try (Transaction tx = db.beginTx(); Result result = db.execute(query, Query.getMinExecutionTimeParams())) {
List<CandidatePatternResult> queryResults = extractQueryResults(result); List<CandidatePatternResult> queryResults = extractQueryResults(result);
for (CandidatePatternResult queryResult : queryResults) { for (CandidatePatternResult queryResult : queryResults) {
ExportController export = ExportController.getInstance(); // ExportController export = ExportController.getInstance();
String code = "Enable candidate pattern code generation in Matcher.java!";// export.toSourceCode(queryResult.getDisplayNode()); String code = "Enable candidate pattern code generation in Matcher.java!";// export.toSourceCode(queryResult.getDisplayNode());
queryResult.setCode(code); queryResult.setCode(code);
matches.add(new Match(pattern, queryResult)); matches.add(new Match(pattern, queryResult));
......
...@@ -8,6 +8,7 @@ import org.apache.commons.lang3.SystemUtils; ...@@ -8,6 +8,7 @@ import org.apache.commons.lang3.SystemUtils;
import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.GraphDatabaseService;
import de.chw.sdg.Sdg; import de.chw.sdg.Sdg;
import logging.Logger;
public class SootController { public class SootController {
...@@ -28,7 +29,7 @@ public class SootController { ...@@ -28,7 +29,7 @@ public class SootController {
for (int i = 0; i < listOfFiles.length; i++) { for (int i = 0; i < listOfFiles.length; i++) {
File f = listOfFiles[i]; File f = listOfFiles[i];
if (f.isFile() && f.getName().endsWith(".jar")) { if (f.isFile() && f.getName().endsWith(".jar")) {
System.out.println("File " + f.getName()); Logger.info("File " + f.getName());
input += f.getAbsolutePath(); input += f.getAbsolutePath();
input += ";"; input += ";";
} }
...@@ -42,8 +43,8 @@ public class SootController { ...@@ -42,8 +43,8 @@ public class SootController {
input = input.replace(";", ":"); input = input.replace(";", ":");
} }
System.out.println("Src Folder for Soot : " + input); Logger.info("Src Folder for Soot : " + input);
System.out.println("Main Class for Soot : " + mainClass); Logger.info("Main Class for Soot : " + mainClass);
args.add(input); args.add(input);
args.add("-pp"); args.add("-pp");
...@@ -63,7 +64,7 @@ public class SootController { ...@@ -63,7 +64,7 @@ public class SootController {
args.add(mainClass); args.add(mainClass);
args.add(mainClass); args.add(mainClass);
System.out.println("Arguments for Soot : " + args.toString()); Logger.info("Arguments for Soot : " + args.toString());
String[] argArray = new String[args.size()]; String[] argArray = new String[args.size()];
argArray = args.toArray(argArray); argArray = args.toArray(argArray);
......
...@@ -14,6 +14,8 @@ import org.neo4j.graphdb.factory.GraphDatabaseFactory; ...@@ -14,6 +14,8 @@ import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.GraphDatabaseSettings;
import org.neo4j.io.fs.FileUtils; import org.neo4j.io.fs.FileUtils;
import logging.Logger;
public class TempNeo4jInstance { public class TempNeo4jInstance {
private GraphDatabaseService databaseService = null; private GraphDatabaseService databaseService = null;
private Path tempDatabasePath = null; private Path tempDatabasePath = null;
...@@ -43,7 +45,7 @@ public class TempNeo4jInstance { ...@@ -43,7 +45,7 @@ public class TempNeo4jInstance {
try { try {
deleteRecursive(path.toFile()); deleteRecursive(path.toFile());
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
Logger.exception(e);
} }
} }
}; };
...@@ -168,7 +170,7 @@ public class TempNeo4jInstance { ...@@ -168,7 +170,7 @@ public class TempNeo4jInstance {
return databaseService; return databaseService;
} }
public static void main(String[] args) throws IOException { public static void main(String... args) throws IOException {
String src = args[0]; String src = args[0];
String dst = args[1]; String dst = args[1];
......
package logging;
public interface GraphicLogger extends LoggerInterface {
void clear();
}
package logging;
import javafx.scene.control.Label;
public class LabelLogger implements GraphicLogger {
private final Label textField;
public LabelLogger(final Label errorTextField) {
this.textField = errorTextField;
}
@Override
public void warn(final String text) {
textField.setText(text);
Logger.warning(text);
}
@Override
public void error(final String text) {
textField.setText(text);
Logger.error(text);
}
@Override
public void exception(final String reason, final Throwable exception) {
textField.setText(reason);
Logger.exception(reason, exception);
}
@Override
public void info(final String text) {
textField.setText(text);
Logger.info(text);
}
@Override
public void clear() {
textField.setText("");
}
@Override
public void exception(Throwable exception) {
textField.setText(exception.getMessage());
Logger.exception(exception);
}
}
...@@ -2,15 +2,13 @@ package logging; ...@@ -2,15 +2,13 @@ package logging;
import java.io.PrintStream; import java.io.PrintStream;
import logging.LoggerInterface.Level;
public final class Logger { public final class Logger {
private Logger() { private Logger() {
} }
private enum Level {
INFO, WARNING, ERROR
}
public static void info(final String text) { public static void info(final String text) {
log(Level.INFO, text); log(Level.INFO, text);
} }
...@@ -23,6 +21,11 @@ public final class Logger { ...@@ -23,6 +21,11 @@ public final class Logger {
log(Level.WARNING, text); log(Level.WARNING, text);
} }
public static void exception(final String reason, final Throwable exception) {
PrintStream printStream = log(Level.ERROR, reason);
exception.printStackTrace(printStream);
}
public static void exception(final Throwable exception) { public static void exception(final Throwable exception) {
PrintStream printStream = log(Level.ERROR, exception.getMessage()); PrintStream printStream = log(Level.ERROR, exception.getMessage());
exception.printStackTrace(printStream); exception.printStackTrace(printStream);
......
package logging;
public interface LoggerInterface {
public enum Level {
INFO, WARNING, ERROR
}
void warn(final String reason);
void error(final String reason);
void exception(final String reason, final Throwable exception);
void exception(final Throwable exception);
void info(final String reason);
}
...@@ -10,8 +10,6 @@ import org.neo4j.graphdb.Transaction; ...@@ -10,8 +10,6 @@ import org.neo4j.graphdb.Transaction;
import controller.DBController; import controller.DBController;
import controller.Matcher; import controller.Matcher;
import de.chw.parallax.java.GeneratorExecutor; import de.chw.parallax.java.GeneratorExecutor;
import javafx.concurrent.WorkerStateEvent;
import javafx.event.EventHandler;
import logging.Logger; import logging.Logger;
import preferences.PrefCons; import preferences.PrefCons;
import preferences.Prefs; import preferences.Prefs;
...@@ -64,7 +62,7 @@ public class CompareState { ...@@ -64,7 +62,7 @@ public class CompareState {
} }
public void chooseMatch(final int match_id) { public void chooseMatch(final int match_id) {
matchID = Math.max(0, Math.min(match_id, patternMatches.size() - 1)); matchID = Math.max(0, Math.min(match_id, patternMatches.get(patternMatchID).getMatches().size() - 1));
} }
public void chooseUpdatePatternVersion(final String ppName) { public void chooseUpdatePatternVersion(final String ppName) {
...@@ -135,30 +133,32 @@ public class CompareState { ...@@ -135,30 +133,32 @@ public class CompareState {
String mainClass = Prefs.getInstance().getValue(PrefCons.DEFAULT_CLASS); String mainClass = Prefs.getInstance().getValue(PrefCons.DEFAULT_CLASS);
final Java2SDGTask java2sdg = new Java2SDGTask(targetSourceDir.getAbsolutePath(), classpath, pathToDB, final Java2SDGTask java2sdg = new Java2SDGTask(targetSourceDir.getAbsolutePath(), classpath, pathToDB,
mainClass); mainClass);
java2sdg.setOnSucceeded(new EventHandler<WorkerStateEvent>() { java2sdg.run();
@Override // java2sdg.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
public void handle(final WorkerStateEvent arg0) { // @Override
// public void handle(final WorkerStateEvent arg0) {
List<Pattern> matchedPatterns = new ArrayList<>(); List<Pattern> matchedPatterns = new ArrayList<>();
for (CandidatePatternMatches pm : patternMatches) { for (CandidatePatternMatches pm : patternMatches) {
matchedPatterns.add(pm.getPattern()); matchedPatterns.add(pm.getPattern());
} }
Logger.info("Running candidate patterns"); Logger.info("Running candidate patterns");
init(matchedPatterns); init(matchedPatterns);
} // }
}); // });
java2sdg.setOnFailed(new EventHandler<WorkerStateEvent>() { // java2sdg.setOnFailed(new EventHandler<WorkerStateEvent>() {
@Override // @Override
public void handle(final WorkerStateEvent arg0) { // public void handle(final WorkerStateEvent arg0) {
Logger.exception(java2sdg.getException()); // Logger.exception(java2sdg.getException());
} // throw new IllegalStateException(java2sdg.getException());
}); // }
Thread java2sdgThread = new Thread(java2sdg); // });
java2sdgThread.start(); // Thread t = new Thread(java2sdg);
try { // t.start();
java2sdgThread.join(); // try {
} catch (InterruptedException e) { // t.join();
Logger.exception(e); // } catch (InterruptedException e) {
} // throw new IllegalStateException(e);
// }
} }
} }
...@@ -2,8 +2,10 @@ package model; ...@@ -2,8 +2,10 @@ package model;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.UUID;
public class Match { public class Match {
private final String matchId = UUID.randomUUID().toString();
private Pattern pattern; private Pattern pattern;
private CandidatePatternResult candidateResult; private CandidatePatternResult candidateResult;
private Map<String, String> updateResults; private Map<String, String> updateResults;
...@@ -30,7 +32,7 @@ public class Match { ...@@ -30,7 +32,7 @@ public class Match {
return pattern; return pattern;
} }
public void setPattern(final Pattern pattern) { public final void setPattern(final Pattern pattern) {
this.pattern = pattern; this.pattern = pattern;
} }
...@@ -38,7 +40,7 @@ public class Match { ...@@ -38,7 +40,7 @@ public class Match {
return candidateResult; return candidateResult;
} }
public void setCandidateResult(final CandidatePatternResult queryResult) { public final void setCandidateResult(final CandidatePatternResult queryResult) {
this.candidateResult = queryResult; this.candidateResult = queryResult;
} }
...@@ -47,4 +49,8 @@ public class Match { ...@@ -47,4 +49,8 @@ public class Match {
result.putAll(candidateResult.getResults()); result.putAll(candidateResult.getResults());
return result; return result;
} }
public String getId() {
return matchId;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment