package fr.inria.diversify.logger.transformationUsed; import fr.inria.diversify.logger.logger.KeyWord; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.*; /** * User: Simon * Date: 08/09/15 * Time: 10:51 */ public class TransformationUsedReader { protected Map<String, Set<String>> branchesUsedByTest; String directory; public TransformationUsedReader(String directory) { this.directory = directory; branchesUsedByTest = new HashMap<>(); } public Map<String, Set<String>> load() throws IOException { File dir = new File(directory); for(File file : dir.listFiles()) { if(file.isFile() && file.getName().startsWith("log")) { parseFile(file); } } return branchesUsedByTest; } protected void parseFile(File file) throws IOException { BufferedReader br = new BufferedReader(new FileReader(file)); String currentTest = null; String line = br.readLine(); String logEntry = ""; while (line != null) { line = br.readLine(); logEntry = logEntry + line; if (logEntry.endsWith("$$")) { logEntry = logEntry.substring(0, logEntry.length() - 2); String[] split = logEntry.split(";"); switch (split[0]) { case KeyWord.testStartObservation: currentTest = split[1]; break; case KeyWord.testEndObservation: currentTest = null; break; case KeyWord.logTransformation: addBranch(currentTest, logEntry); break; default: break; } logEntry = ""; } } } protected void addBranch(String currentTest, String logEntry) { if(!branchesUsedByTest.containsKey(currentTest)) { branchesUsedByTest.put(currentTest, new HashSet<>()); } String[] tmp = logEntry.split(";"); branchesUsedByTest.get(currentTest).add(tmp[2]); } }