dumsp
This commit is contained in:
+136
-67
@@ -9,6 +9,8 @@ import com.github.gumtreediff.matchers.Matchers;
|
|||||||
import com.github.gumtreediff.tree.ITree;
|
import com.github.gumtreediff.tree.ITree;
|
||||||
import edu.lu.uni.serval.MultipleThreadsParser.MessageFile;
|
import edu.lu.uni.serval.MultipleThreadsParser.MessageFile;
|
||||||
import edu.lu.uni.serval.MultipleThreadsParser.WorkMessage;
|
import edu.lu.uni.serval.MultipleThreadsParser.WorkMessage;
|
||||||
|
import edu.lu.uni.serval.utils.FileHelper;
|
||||||
|
import javafx.util.Pair;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -40,7 +42,37 @@ public class MultiThreadTreeLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// String inputPath = "/Users/anilkoyuncu/bugStudy/dataset/GumTreeOutput2/";
|
|
||||||
|
calculatePairs(inputPath,outputPath);
|
||||||
|
processMessages(outputPath );
|
||||||
|
|
||||||
|
|
||||||
|
// List<Message> loaded = null;
|
||||||
|
// try {
|
||||||
|
// FileInputStream fi = new FileInputStream(new File(outputPath + "messageFile"));
|
||||||
|
// ObjectInputStream oi = new ObjectInputStream(fi);
|
||||||
|
// loaded = (List<Message>) oi.readObject();
|
||||||
|
// oi.close();
|
||||||
|
// fi.close();
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// } catch (FileNotFoundException e) {
|
||||||
|
// System.out.println("File not found");
|
||||||
|
// } catch (IOException e) {
|
||||||
|
// System.out.println("Error initializing stream");
|
||||||
|
// } catch (ClassNotFoundException e) {
|
||||||
|
// // TODO Auto-generated catch block
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// log.info(String.valueOf(msgFiles.size()));
|
||||||
|
// log.info(String.valueOf(loaded.size()));
|
||||||
|
// msgFiles.parallelStream()
|
||||||
|
// .forEach(m -> coreLoop(m,outputPath));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void calculatePairs(String inputPath,String outputPath){
|
||||||
File folder = new File(inputPath);
|
File folder = new File(inputPath);
|
||||||
File[] listOfFiles = folder.listFiles();
|
File[] listOfFiles = folder.listFiles();
|
||||||
Stream<File> stream = Arrays.stream(listOfFiles);
|
Stream<File> stream = Arrays.stream(listOfFiles);
|
||||||
@@ -60,28 +92,27 @@ public class MultiThreadTreeLoader {
|
|||||||
}
|
}
|
||||||
System.out.println("a");
|
System.out.println("a");
|
||||||
// compareAll(fileToCompare);
|
// compareAll(fileToCompare);
|
||||||
final List<Message> msgFiles = readMessageFiles(fileToCompare);
|
readMessageFiles(fileToCompare,outputPath);
|
||||||
|
}
|
||||||
|
|
||||||
FileOutputStream f = null;
|
public static void processMessages(String outputPath){
|
||||||
|
File folder = new File(outputPath+ "dumps/");
|
||||||
|
File[] listOfFiles = folder.listFiles();
|
||||||
|
Stream<File> stream = Arrays.stream(listOfFiles);
|
||||||
|
List<File> pjs = stream
|
||||||
|
.filter(x -> !x.getName().startsWith("."))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
FileHelper.createDirectory(outputPath + "comparison/");
|
||||||
|
pjs.parallelStream()
|
||||||
|
.forEach(m -> coreLoop(m,outputPath));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ITree getSimpliedTree(String fn) {
|
||||||
|
ITree tree = null;
|
||||||
try {
|
try {
|
||||||
|
FileInputStream fi = new FileInputStream(new File(fn));
|
||||||
|
|
||||||
f = new FileOutputStream(new File(outputPath + "messageFile"));
|
|
||||||
ObjectOutputStream o = new ObjectOutputStream(f);
|
|
||||||
o.writeObject(msgFiles);
|
|
||||||
|
|
||||||
o.close();
|
|
||||||
f.close();
|
|
||||||
} catch (FileNotFoundException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
List<Message> loaded = null;
|
|
||||||
try {
|
|
||||||
FileInputStream fi = new FileInputStream(new File(outputPath + "messageFile"));
|
|
||||||
ObjectInputStream oi = new ObjectInputStream(fi);
|
ObjectInputStream oi = new ObjectInputStream(fi);
|
||||||
loaded = (List<Message>) oi.readObject();
|
tree = (ITree) oi.readObject();
|
||||||
oi.close();
|
oi.close();
|
||||||
fi.close();
|
fi.close();
|
||||||
|
|
||||||
@@ -95,72 +126,110 @@ public class MultiThreadTreeLoader {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tree.setLabel("");
|
||||||
|
tree.setParent(null);
|
||||||
|
List<ITree> descendants = tree.getDescendants();
|
||||||
|
for (ITree descendant : descendants) {
|
||||||
|
descendant.setLabel("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return tree;
|
||||||
|
|
||||||
log.info(String.valueOf(msgFiles.size()));
|
|
||||||
log.info(String.valueOf(loaded.size()));
|
|
||||||
// msgFiles.parallelStream()
|
|
||||||
// .forEach(m -> m.dosomething()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private static coreLoop(){
|
private static void coreLoop(File mes,String outputPath){
|
||||||
// try {
|
try {
|
||||||
// BufferedWriter writer = new BufferedWriter(new FileWriter("output2.txt", true));
|
FileInputStream fi = new FileInputStream(mes);
|
||||||
// ITree oldTree = getSimpliedTree(treesFileNames.get(i));
|
ObjectInputStream oi = new ObjectInputStream(fi);
|
||||||
//
|
Message loaded = (Message) oi.readObject();
|
||||||
// ITree newTree = getSimpliedTree(treesFileNames.get(j));
|
oi.close();
|
||||||
//
|
fi.close();
|
||||||
// Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree);
|
Pair<Integer, String> first = loaded.first;
|
||||||
// m.match();
|
Pair<Integer, String> second = loaded.second;
|
||||||
//
|
int i = first.getKey();
|
||||||
// ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings());
|
int j = second.getKey();
|
||||||
// ag.generate();
|
String firstValue = first.getValue();
|
||||||
// List<Action> actions = ag.getActions();
|
String secondValue = second.getValue();
|
||||||
// writer.write(String.valueOf(i));
|
|
||||||
// writer.write("\t");
|
|
||||||
// writer.write(String.valueOf(j));
|
|
||||||
// writer.write("\t");
|
|
||||||
//
|
|
||||||
// writer.write(String.format("%1.2f", m.chawatheSimilarity(oldTree, newTree)));
|
|
||||||
// writer.write("\t");
|
|
||||||
// writer.write(String.format("%1.2f", m.diceSimilarity(oldTree, newTree)));
|
|
||||||
// writer.write("\t");
|
|
||||||
// writer.write(String.format("%1.2f", m.jaccardSimilarity(oldTree, newTree)));
|
|
||||||
// writer.write("\t");
|
|
||||||
// writer.write(String.valueOf(actions.size()));
|
|
||||||
// writer.write("\t");
|
|
||||||
// writer.write(treesFileNames.get(i));
|
|
||||||
// writer.write("\t");
|
|
||||||
// writer.write(treesFileNames.get(j));
|
|
||||||
// writer.write("\n");
|
|
||||||
//
|
|
||||||
// writer.close();
|
|
||||||
// } catch (FileNotFoundException e) {
|
|
||||||
// System.out.println("File not found");
|
|
||||||
// } catch (IOException e) {
|
|
||||||
// System.out.println("Error initializing stream");
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
private static List<Message> readMessageFiles(List<File> folders) {
|
BufferedWriter writer = new BufferedWriter(new FileWriter(outputPath +"comparison/" + "output_"+String.valueOf(i)+"_"+String.valueOf(j)+".txt", true));
|
||||||
|
ITree oldTree = getSimpliedTree(firstValue);
|
||||||
|
|
||||||
|
ITree newTree = getSimpliedTree(secondValue);
|
||||||
|
|
||||||
|
Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree);
|
||||||
|
m.match();
|
||||||
|
|
||||||
|
ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings());
|
||||||
|
ag.generate();
|
||||||
|
List<Action> actions = ag.getActions();
|
||||||
|
writer.write(String.valueOf(i));
|
||||||
|
writer.write("\t");
|
||||||
|
writer.write(String.valueOf(j));
|
||||||
|
writer.write("\t");
|
||||||
|
|
||||||
|
writer.write(String.format("%1.2f", m.chawatheSimilarity(oldTree, newTree)));
|
||||||
|
writer.write("\t");
|
||||||
|
writer.write(String.format("%1.2f", m.diceSimilarity(oldTree, newTree)));
|
||||||
|
writer.write("\t");
|
||||||
|
writer.write(String.format("%1.2f", m.jaccardSimilarity(oldTree, newTree)));
|
||||||
|
writer.write("\t");
|
||||||
|
writer.write(String.valueOf(actions.size()));
|
||||||
|
writer.write("\t");
|
||||||
|
writer.write(firstValue);
|
||||||
|
writer.write("\t");
|
||||||
|
writer.write(secondValue);
|
||||||
|
writer.write("\n");
|
||||||
|
|
||||||
|
writer.close();
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
System.out.println("File not found");
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Error initializing stream");
|
||||||
|
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void readMessageFiles(List<File> folders,String outputPath) {
|
||||||
|
|
||||||
List<String> treesFileNames = new ArrayList<>();
|
List<String> treesFileNames = new ArrayList<>();
|
||||||
|
|
||||||
List<Message> msgFiles = new ArrayList<>();
|
|
||||||
for (File target : folders) {
|
for (File target : folders) {
|
||||||
|
|
||||||
treesFileNames.add(target.toString());
|
treesFileNames.add(target.toString());
|
||||||
}
|
}
|
||||||
|
FileHelper.createDirectory(outputPath + "dumps/");
|
||||||
log.info("Calculating pairs");
|
log.info("Calculating pairs");
|
||||||
|
// treesFileNames = treesFileNames.subList(0,10);
|
||||||
|
|
||||||
for (int i = 0; i < treesFileNames.size(); i++) {
|
for (int i = 0; i < treesFileNames.size(); i++) {
|
||||||
for (int j = i + 1; j < treesFileNames.size(); j++) {
|
for (int j = i + 1; j < treesFileNames.size(); j++) {
|
||||||
Message msgFile = new Message(i, treesFileNames.get(i), j, treesFileNames.get(j));
|
Message msgFile = new Message(i, treesFileNames.get(i), j, treesFileNames.get(j));
|
||||||
msgFiles.add(msgFile);
|
// msgFiles.add(msgFile);
|
||||||
|
|
||||||
|
FileOutputStream f = null;
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
|
f = new FileOutputStream(new File(outputPath + "dumps/" + "messageFile_"+String.valueOf(i)+"_"+String.valueOf(j)));
|
||||||
|
ObjectOutputStream o = new ObjectOutputStream(f);
|
||||||
|
o.writeObject(msgFile);
|
||||||
|
|
||||||
|
o.close();
|
||||||
|
f.close();
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return msgFiles;
|
log.info("Done pairs");
|
||||||
|
// return msgFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user