Skip to content
Snippets Groups Projects
Commit deb7890c authored by Dean Jonas Finkes's avatar Dean Jonas Finkes
Browse files
parents d65cdfac 3ecb87cd
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,7 @@ import logging.Logger;
*/
public class DatabaseController {
private String path;
private GraphDatabaseService db;
private GraphDatabaseService database;
private static DatabaseController instance;
......@@ -29,10 +29,10 @@ public class DatabaseController {
path = newDB.getAbsolutePath();
}
public DatabaseController(GraphDatabaseService db) {
public DatabaseController(final GraphDatabaseService database) {
File newDB = FileSystemController.initializeFolder("database");
path = newDB.getAbsolutePath();
this.setDB(db);
this.setDB(database);
}
public String getPath() {
......@@ -45,7 +45,7 @@ public class DatabaseController {
* @param path
* path of next DB
*/
public void setPath(String path) {
public void setPath(final String path) {
stopDB();
this.path = path;
}
......@@ -56,28 +56,28 @@ public class DatabaseController {
* @return Database handle
*/
public GraphDatabaseService startDB() {
if (db == null) {
if (database == null) {
Logger.info("db started at " + path);
db = new Neo4Jdb(path).getGraphDatabaseService();
database = new Neo4Jdb(path).getGraphDatabaseService();
registerShutdownHook(db);
registerShutdownHook(database);
}
if (!db.isAvailable(500)) {
db = new Neo4Jdb(path).getGraphDatabaseService();
if (!database.isAvailable(500)) {
database = new Neo4Jdb(path).getGraphDatabaseService();
}
return db;
return database;
}
public final void setDB(GraphDatabaseService newDb) {
public final void setDB(final GraphDatabaseService newDb) {
stopDB();
this.db = newDb;
this.database = newDb;
}
public final void stopDB() {
if (db != null) {
db.shutdown();
this.db = null;
if (database != null) {
database.shutdown();
this.database = null;
}
}
......
......@@ -22,13 +22,13 @@ public class ExportController {
}
public ExportController() {
GraphDatabaseService db = DatabaseController.getInstance().startDB();
generator = new GeneratorExecutor(db);
GraphDatabaseService database = DatabaseController.getInstance().startDB();
generator = new GeneratorExecutor(database);
}
public String toSourceCode(Node node) {
GraphDatabaseService db = DatabaseController.getInstance().startDB();
generator = new GeneratorExecutor(db);
public String toSourceCode(final Node node) {
GraphDatabaseService database = DatabaseController.getInstance().startDB();
generator = new GeneratorExecutor(database);
return generator.toCode(node);
}
}
......@@ -12,11 +12,13 @@ import logging.Logger;
* directory
*
*/
public class FileSystemController {
public final class FileSystemController {
private final static String BASE_PATH = "tmp";
public static File initializeFolder(String dirName) {
private FileSystemController() {
}
public static File initializeFolder(final String dirName) {
File dbDir = new File(BASE_PATH, dirName);
Logger.info("Initializing DB Folder: " + dbDir.getAbsolutePath());
if (dbDir.exists()) {
......@@ -26,7 +28,7 @@ public class FileSystemController {
return dbDir;
}
public static void deleteDir(File folder) {
public static void deleteDir(final File folder) {
File[] files = folder.listFiles();
if (files != null) { // some JVMs return null for empty dirs
for (File f : files) {
......@@ -58,19 +60,19 @@ public class FileSystemController {
return targetFile;
}
private static void copyDir(final File source, final File dest, CopyOption... options) throws IOException {
private static void copyDir(final File source, final File dest, final CopyOption... options) throws IOException {
if (!dest.exists()) {
dest.mkdirs();
}
File[] contents = source.listFiles();
if (contents != null) {
for (File f : contents) {
String p = dest.getAbsolutePath() + File.separator + f.getName();
File newFile = new File(p);
if (f.isDirectory()) {
copyDir(f, newFile, options);
for (File file : contents) {
String path = dest.getAbsolutePath() + File.separator + file.getName();
File newFile = new File(path);
if (file.isDirectory()) {
copyDir(file, newFile, options);
} else {
Files.copy(f.toPath(), newFile.toPath(), options);
Files.copy(file.toPath(), newFile.toPath(), options);
}
}
}
......
......@@ -18,7 +18,7 @@ public class Java2SDGController {
private Sdg sdg;
public String[] buildArguments(String pathToJava, String classpath, String mainClass) {
public String[] buildArguments(final String pathToJava, final String classpath, final String mainClass) {
ArrayList<String> args = new ArrayList<String>();
String input = "";
......@@ -31,10 +31,10 @@ public class Java2SDGController {
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
File f = listOfFiles[i];
if (f.isFile() && f.getName().endsWith(".jar")) {
Logger.info("File " + f.getName());
input += f.getAbsolutePath();
File file = listOfFiles[i];
if (file.isFile() && file.getName().endsWith(".jar")) {
Logger.info("File " + file.getName());
input += file.getAbsolutePath();
input += ";";
}
}
......@@ -80,19 +80,20 @@ public class Java2SDGController {
return sdg.getGraphDatabaseService();
}
public void startUp(String pathToDB) {
public void startUp(final String pathToDB) {
sdg = new Sdg(pathToDB);
sdg.connect();
sdg.deleteContent();
}
public void startJava2SDG(String[] args) throws IOException {
public void startJava2SDG(final String[] args) throws IOException {
sdg.transform(args);
}
public void startJava2SDG(String javaSrc, String classpath, String mainClass, String pathToDB) throws Exception {
public void startJava2SDG(final String javaSrc, final String classpath, final String mainClass,
final String pathToDB) throws IOException {
startUp(pathToDB);
startJava2SDG(buildArguments(javaSrc, classpath, mainClass));
......
......@@ -29,11 +29,11 @@ public class LazyQueryController {
private Pattern activeCandidatePattern;
private ParallelizationPattern activeUpdatePattern;
private int numberOfMatches;
private Map<Pattern, ObservableList<String>> patternMatches;
private Map<Pattern, List<Node>> patternNodes;
private Map<Pattern, List<Map<String, Object>>> patternParameters;
private Map<Pattern, String[]> patternCode;
private Map<Pattern, Map<ParallelizationPattern, String[]>> patternCodeOptimized;
private final Map<Pattern, ObservableList<String>> patternMatches;
private final Map<Pattern, List<Node>> patternNodes;
private final Map<Pattern, List<Map<String, Object>>> patternParameters;
private final Map<Pattern, String[]> patternCode;
private final Map<Pattern, Map<ParallelizationPattern, String[]>> patternCodeOptimized;
private static LazyQueryController instance;
......@@ -62,7 +62,7 @@ public class LazyQueryController {
return activeCandidatePattern;
}
public void setActiveCandidatePattern(Pattern activeCandidatePattern) {
public void setActiveCandidatePattern(final Pattern activeCandidatePattern) {
this.activeCandidatePattern = activeCandidatePattern;
}
......@@ -70,7 +70,7 @@ public class LazyQueryController {
return activeUpdatePattern;
}
public void setActiveUpdatePattern(ParallelizationPattern activeUpdatePattern) {
public void setActiveUpdatePattern(final ParallelizationPattern activeUpdatePattern) {
this.activeUpdatePattern = activeUpdatePattern;
}
......@@ -82,11 +82,12 @@ public class LazyQueryController {
List<Map<String, Object>> updateParameters = new ArrayList<Map<String, Object>>();
ObservableList<String> classNames = FXCollections.observableArrayList();
GraphDatabaseService db = DatabaseController.getInstance().startDB();
GraphDatabaseService database = DatabaseController.getInstance().startDB();
Logger.info("Querying: " + name + " (" + query + ")");
try (Transaction tx = db.beginTx(); Result results = db.execute(query, Query.getMinExecutionTimeParams())) {
try (Transaction transaction = database.beginTx();
Result results = database.execute(query, Query.getMinExecutionTimeParams())) {
while (results.hasNext()) {
......@@ -114,7 +115,7 @@ public class LazyQueryController {
patternMatches.put(activeCandidatePattern, classNames);
patternNodes.put(activeCandidatePattern, classNodes);
patternParameters.put(activeCandidatePattern, updateParameters);
tx.success();
transaction.success();
Logger.info("Calculated Matches!");
}
......@@ -124,7 +125,7 @@ public class LazyQueryController {
return patternMatches.get(activeCandidatePattern);
}
public String getNormalCode(int index, String matchedClass) {
public String getNormalCode(final int index, final String matchedClass) {
if (!patternCode.containsKey(activeCandidatePattern)) {
Logger.info("Matches : " + numberOfMatches);
patternCode.put(activeCandidatePattern, new String[numberOfMatches]);
......@@ -137,7 +138,7 @@ public class LazyQueryController {
return patternCode.get(activeCandidatePattern)[index];
}
public String getOptimizedCode(int index) {
public String getOptimizedCode(final int index) {
if (!patternCodeOptimized.containsKey(activeCandidatePattern)) {
patternCodeOptimized.put(activeCandidatePattern, new HashMap<ParallelizationPattern, String[]>());
}
......@@ -147,7 +148,7 @@ public class LazyQueryController {
}
if (patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern)[index] == null) {
GraphDatabaseService db = DatabaseController.getInstance().startDB();
GraphDatabaseService database = DatabaseController.getInstance().startDB();
for (Query q : activeUpdatePattern.getQueries()) {
String queryString = q.generateQueryString();
......@@ -155,17 +156,18 @@ public class LazyQueryController {
Map<String, Object> parameters = patternParameters.get(activeCandidatePattern).get(index);
Node node = patternNodes.get(activeCandidatePattern).get(index);
try (Transaction tx = db.beginTx(); Result result = db.execute(queryString, parameters)) {
try (Transaction transaction = database.beginTx();
Result result = database.execute(queryString, parameters)) {
// ExportController exportController =
// ExportController.getInstance();
// String optimizedCode =
// exportController.toSourceCode(node);
GeneratorExecutor codeGenerator = new GeneratorExecutor(db);
GeneratorExecutor codeGenerator = new GeneratorExecutor(database);
String optimizedCode = codeGenerator.toCode(node);
patternCodeOptimized.get(activeCandidatePattern).get(activeUpdatePattern)[index] = optimizedCode;
tx.failure();
transaction.failure();
}
}
}
......@@ -174,14 +176,15 @@ public class LazyQueryController {
}
public void applyParallelizationPattern(int index) {
public void applyParallelizationPattern(final int index) {
GraphDatabaseService database = DatabaseController.getInstance().startDB();
for (Query query : activeUpdatePattern.getQueries()) {
String queryString = query.generateQueryString();
Map<String, Object> parameters = patternParameters.get(activeCandidatePattern).get(index);
try (Transaction transaction = database.beginTx(); Result result = database.execute(queryString, parameters)) {
try (Transaction transaction = database.beginTx();
Result result = database.execute(queryString, parameters)) {
transaction.success();
}
}
......
......@@ -26,9 +26,12 @@ import model.Query;
* the java code for the update pattern
*
*/
public class QueryController {
public final class QueryController {
public static List<Match> getResultsForPattern(Pattern pattern, boolean applyPP) {
private QueryController() {
}
public static List<Match> getResultsForPattern(final Pattern pattern, final boolean applyPP) {
List<Match> candidateMatches = queryCandidatePattern(pattern);
if (applyPP) {
for (Match match : candidateMatches) {
......@@ -43,14 +46,14 @@ public class QueryController {
return candidateMatches;
}
public static List<CandidatePatternMatches> getResultsForPatternList(List<Pattern> patterns, boolean applyPP) {
GraphDatabaseService db = DatabaseController.getInstance().startDB();
List<CandidatePatternMatches> results = getResultsForPatternList(patterns, db, applyPP);
return results;
public static List<CandidatePatternMatches> getResultsForPatternList(final List<Pattern> patterns,
final boolean applyPP) {
GraphDatabaseService database = DatabaseController.getInstance().startDB();
return getResultsForPatternList(patterns, database, applyPP);
}
public static List<CandidatePatternMatches> getResultsForPatternList(List<Pattern> patterns,
GraphDatabaseService db, boolean applyPP) {
public static List<CandidatePatternMatches> getResultsForPatternList(final List<Pattern> patterns,
final GraphDatabaseService database, final boolean applyPP) {
List<CandidatePatternMatches> matchingPatterns = new LinkedList<>();
for (int i = 0; i < patterns.size(); i++) {
......@@ -62,71 +65,75 @@ public class QueryController {
return matchingPatterns;
}
public static String queryParallelizationPattern(Match match, boolean commitChanges, ParallelizationPattern p) {
GraphDatabaseService db = DatabaseController.getInstance().startDB();
String result = queryParallelizationPattern(match, commitChanges, p, db);
return result;
public static String queryParallelizationPattern(final Match match, final boolean commitChanges,
final ParallelizationPattern pattern) {
GraphDatabaseService database = DatabaseController.getInstance().startDB();
return queryParallelizationPattern(match, commitChanges, pattern, database);
}
public static String queryParallelizationPattern(Match match, boolean commitChanges, ParallelizationPattern p,
GraphDatabaseService db) {
public static String queryParallelizationPattern(final Match match, final boolean commitChanges,
final ParallelizationPattern pattern, final GraphDatabaseService database) {
Map<String, Object> candidateResult = match.getCandidateResultForUpdate();
Logger.info("Running update query " + p.getName() + " for " + match.getPattern().getName()
Logger.info("Running update query " + pattern.getName() + " for " + match.getPattern().getName()
+ ", Commit changes = " + commitChanges);
String code = "An error occured!";
// Apply
try (Transaction tx = db.beginTx()) {
try (Transaction transaction = database.beginTx()) {
Result result = null;
for (Query updatePattern : p.getQueries()) {
for (Query updatePattern : pattern.getQueries()) {
String query = updatePattern.generateQueryString();
result = db.execute(query, candidateResult);
result = database.execute(query, candidateResult);
}
if (result == null)
Logger.error("PP " + p.getName() + " of " + match.getPattern().getName()
if (result == null) {
Logger.error("PP " + pattern.getName() + " of " + match.getPattern().getName()
+ " has no queries or produces no result!");
}
List<CandidatePatternResult> queryResults = extractQueryResults(result);
if (queryResults.size() != 1)
Logger.error("PP " + p.getName() + " of " + match.getPattern().getName() + " has " + queryResults.size()
+ " returns, but exactly 1 is needed!");
if (queryResults.size() != 1) {
Logger.error("PP " + pattern.getName() + " of " + match.getPattern().getName() + " has "
+ queryResults.size() + " returns, but exactly 1 is needed!");
}
Node display = queryResults.get(0).getDisplayNode();
if (display == null)
Logger.error("PP " + p.getName() + " of " + match.getPattern().getName() + " returns no display node!");
if (display == null) {
Logger.error("PP " + pattern.getName() + " of " + match.getPattern().getName()
+ " returns no display node!");
}
if (commitChanges) {
tx.success();
transaction.success();
} else {
ExportController export = ExportController.getInstance();
code = export.toSourceCode(display);
tx.failure();
transaction.failure();
}
}
Logger.info("Finished update query " + p.getName());
Logger.info("Finished update query " + pattern.getName());
return code;
}
public static List<Match> queryCandidatePattern(Pattern pattern) {
GraphDatabaseService db = DatabaseController.getInstance().startDB();
List<Match> results = queryCandidatePattern(pattern, db);
return results;
public static List<Match> queryCandidatePattern(final Pattern pattern) {
GraphDatabaseService database = DatabaseController.getInstance().startDB();
return queryCandidatePattern(pattern, database);
}
private static List<Match> queryCandidatePattern(Pattern pattern, GraphDatabaseService db) {
private static List<Match> queryCandidatePattern(final Pattern pattern, final GraphDatabaseService database) {
ArrayList<Match> matches = new ArrayList<Match>();
String name = pattern.getName();
String query = pattern.getCandidateQuery().generateQueryString();
Logger.info("Running candidate pattern " + name);
try (Transaction tx = db.beginTx(); Result result = db.execute(query, Query.getMinExecutionTimeParams())) {
try (Transaction transaction = database.beginTx();
Result result = database.execute(query, Query.getMinExecutionTimeParams())) {
List<CandidatePatternResult> queryResults = extractQueryResults(result);
......@@ -137,18 +144,18 @@ public class QueryController {
matches.add(new Match(pattern, queryResult));
}
tx.failure();
transaction.failure();
}
return matches;
}
private static List<CandidatePatternResult> extractQueryResults(Result result) {
private static List<CandidatePatternResult> extractQueryResults(final Result result) {
final List<String> cols = result.columns();
final List<CandidatePatternResult> parsedResults = new ArrayList<CandidatePatternResult>();
ResultVisitor<Exception> visitor = new ResultVisitor<Exception>() {
@Override
public boolean visit(ResultRow row) throws Exception {
public boolean visit(final ResultRow row) {
Map<String, Number> queryResult = new HashMap<String, Number>();
Node displayNode = null;
String className = "";
......
......@@ -29,11 +29,11 @@ public class SourceFinder {
return SourceFinder.instance;
}
public void setSrcDirectory(String file) {
public void setSrcDirectory(final String file) {
this.srcDirectory = new File(file);
}
private File[] locateFiles(File file) {
private File[] locateFiles(final File file) {
File[] list = null;
if (file.isDirectory()) {
list = file.listFiles();
......@@ -46,16 +46,16 @@ public class SourceFinder {
return list;
}
private List<String> getClassContent(List<String> lines) {
private List<String> getClassContent(final List<String> lines) {
List<String> result = new ArrayList<String>();
int openBracket = 0;
int closeBracket = 0;
for (String s : lines) {
openBracket += StringUtils.countMatches(s, "{");
closeBracket += StringUtils.countMatches(s, "}");
for (String string : lines) {
openBracket += StringUtils.countMatches(string, "{");
closeBracket += StringUtils.countMatches(string, "}");
if (openBracket >= closeBracket) {
result.add(s);
result.add(string);
if (openBracket == closeBracket) {
break;
}
......@@ -73,15 +73,15 @@ public class SourceFinder {
this.srcCode = result;
}
public String locateSourceCode(String className) {
public String locateSourceCode(final String className) {
File[] fileList = locateFiles(srcDirectory);
for (File f : fileList) {
if (f.isFile()) {
try {
List<String> linesOfCode = Files.readAllLines(f.toPath(), StandardCharsets.UTF_8);
for (Iterator<String> iter = linesOfCode.listIterator(); iter.hasNext();) {
String s = iter.next();
if (!s.contains("class " + className)) {
String string = iter.next();
if (!string.contains("class " + className)) {
iter.remove();
// linesOfCode.remove(s);
} else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment