diff --git a/src/main/java/edu/lu/uni/serval/FixPatternMiner/AkkaMiner.java b/src/main/java/edu/lu/uni/serval/FixPatternMiner/AkkaMiner.java index 0061f3d..4250e37 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternMiner/AkkaMiner.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternMiner/AkkaMiner.java @@ -30,12 +30,13 @@ public class AkkaMiner { ActorSystem system = null; ActorRef parsingActor = null; - final int numberOfWorkers = 100; + final int numberOfWorkers = 200; + final WorkMessage msg = new WorkMessage(0, msgFiles); try { log.info("Akka beings..."); system = ActorSystem.create("Mining-FixPattern-System"); parsingActor = system.actorOf(MineFixPatternActor.props(numberOfWorkers, editScriptsFilePath, patchesSourceCodeFilePath), "mine-fix-pattern-actor"); - parsingActor.tell(msgFiles, ActorRef.noSender()); + parsingActor.tell(msg, ActorRef.noSender()); } catch (Exception e) { system.shutdown(); e.printStackTrace(); diff --git a/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternActor.java b/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternActor.java index 83c25ff..718fb24 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternActor.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternActor.java @@ -43,8 +43,8 @@ public class MineFixPatternActor extends UntypedActor { @SuppressWarnings("deprecation") @Override public void onReceive(Object message) throws Exception { - if (message instanceof List) { - List files = (List) message; + if (message instanceof WorkMessage) { + List files = ((WorkMessage) message).getMsgFiles(); int size = files.size(); int average = size / numberOfWorkers; @@ -55,9 +55,10 @@ public class MineFixPatternActor extends UntypedActor { toIndex = size; } - List filesOfWorkers = new ArrayList<>(); + List filesOfWorkers = new ArrayList<>(); filesOfWorkers.addAll(files.subList(fromIndex, toIndex)); - mineRouter.tell(filesOfWorkers, getSelf()); + final WorkMessage workMsg = new WorkMessage(i + 1, filesOfWorkers); + mineRouter.tell(workMsg, getSelf()); logger.info("Assign a task to worker #" + (i + 1) + "..."); } } else if ("STOP".equals(message.toString())) { diff --git a/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternWorker.java b/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternWorker.java index 46ec742..7a03eeb 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternWorker.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternMiner/MineFixPatternWorker.java @@ -33,17 +33,17 @@ public class MineFixPatternWorker extends UntypedActor { @Override public void onReceive(Object message) throws Exception { - if (message instanceof List) { - List files = (List) message; + if (message instanceof WorkMessage) { + WorkMessage msg = (WorkMessage) message; + List files = msg.getMsgFiles(); StringBuilder editScripts = new StringBuilder(); StringBuilder patchesSourceCode = new StringBuilder(); - for (Object obj : files) { - MessageFile msgFile = (MessageFile) obj; + for (MessageFile msgFile : files) { File revFile = msgFile.getRevFile(); File prevFile = msgFile.getPrevFile(); File diffentryFile = msgFile.getDiffEntryFile(); if (!prevFile.exists()) { - System.out.println(prevFile.getPath()); + System.out.println("Previous File:" + prevFile.getPath()); continue; } Miner miner = new Miner(); @@ -52,15 +52,13 @@ public class MineFixPatternWorker extends UntypedActor { editScripts.append(miner.getAstEditScripts()); patchesSourceCode.append(miner.getPatchesSourceCode()); } catch (Exception e) { - System.out.println(revFile.getPath()); + System.out.println("Revised File:" + revFile.getPath()); e.printStackTrace(); } } - List subFiles1 = FileHelper.getAllFilesInCurrentDiectory(editScriptsFilePath, ".list"); - List subFiles2 = FileHelper.getAllFilesInCurrentDiectory(patchesSourceCodeFilePath, ".list"); - FileHelper.outputToFile(editScriptsFilePath + "edistScripts" + subFiles1.size() + ".list", editScripts, false); - FileHelper.outputToFile(patchesSourceCodeFilePath + "patches" + subFiles2.size() + ".list", patchesSourceCode, false); + FileHelper.outputToFile(editScriptsFilePath + "edistScripts" + msg.getId() + ".list", editScripts, false); + FileHelper.outputToFile(patchesSourceCodeFilePath + "patches" + msg.getId() + ".list", patchesSourceCode, false); this.getSender().tell("STOP", getSelf()); } else { diff --git a/src/main/java/edu/lu/uni/serval/FixPatternMiner/WorkMessage.java b/src/main/java/edu/lu/uni/serval/FixPatternMiner/WorkMessage.java new file mode 100644 index 0000000..39f7f41 --- /dev/null +++ b/src/main/java/edu/lu/uni/serval/FixPatternMiner/WorkMessage.java @@ -0,0 +1,24 @@ +package edu.lu.uni.serval.FixPatternMiner; + +import java.util.List; + +public class WorkMessage { + + private int id; + private List msgFiles; + + public WorkMessage(int id, List msgFiles) { + super(); + this.id = id; + this.msgFiles = msgFiles; + } + + public int getId() { + return id; + } + + public List getMsgFiles() { + return msgFiles; + } + +}