in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/duplication/impl/Blocks.java [73:108]
private void createDuplicatedFilesMap() {
resetProgressValues(blocksDuplicatedAmongFiles.size());
reportProgress("Creating a map of duplicated files");
blocksDuplicatedAmongFiles.forEach(db -> {
reportProgressNextStep();
if (db.getFiles().size() == 2) {
duplicatedFilePairs.add(db);
SourceFile sourceFile1 = db.getFiles().get(0);
SourceFile sourceFile2 = db.getFiles().get(1);
String pairKey1 = sourceFile1.getFile().getPath() + "::" + sourceFile2.getFile().getPath();
String pairKey2 = sourceFile2.getFile().getPath() + "::" + sourceFile1.getFile().getPath();
if (!(filePairMap.containsKey(pairKey1) || filePairMap.containsKey(pairKey2))) {
filePairMap.put(pairKey1, new ImmutablePair<>(sourceFile1, sourceFile2));
}
} else if (db.getFiles().size() > 2) {
db.getFiles().forEach(f1 -> {
db.getFiles().stream().filter(f2 -> f1 != f2).forEach(f2 -> {
Block newBlock = new Block();
duplicatedFilePairs.add(newBlock);
newBlock.setLineIndexes(db.getLineIndexes());
newBlock.getFiles().add(f1);
newBlock.getFiles().add(f2);
String pairKey1 = f1.getFile().getPath() + "::" + f2.getFile().getPath();
String pairKey2 = f2.getFile().getPath() + "::" + f1.getFile().getPath();
if (!(filePairMap.containsKey(pairKey1) || filePairMap.containsKey(pairKey2))) {
filePairMap.put(pairKey1, new ImmutablePair(f1, f2));
}
});
});
}
});
resetProgressValues(0);
}