package com.plugtree.solrmeter.model.extractor; import com.plugtree.solrmeter.model.FileUtils; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class LogExtractor { private String regularExpression; public static final String defaultRegularExpression = "path=/select params=\\{(.*)\\}.*"; private boolean removeDuplicates; public LogExtractor(String regularExpression) { this(regularExpression, false); } public LogExtractor(String regularExpression, boolean removeDuplicates) { this.regularExpression = regularExpression; this.removeDuplicates = removeDuplicates; } // Todo refactor and cleanup + error handling public String extract(String line) { String extractedQuery = ""; Pattern pattern = Pattern.compile(regularExpression); Matcher matcher = pattern.matcher(line); matcher.find(); try{ extractedQuery = matcher.group(1); }catch(IllegalStateException e){ // e.printStackTrace(); //todo mangage exception } return extractedQuery; } public Collection<String> extract(List<String> lines) { Collection<String> queries = aCollection(); for (String line : lines) { String query = extract(line); if (!query.isEmpty()) { queries.add(query); } } return queries; } private Collection<String> aCollection() { Collection<String> queries; if(removeDuplicates){ queries = new HashSet<String>(); }else{ queries = new ArrayList<String>(); } return queries; } public Collection<String> extractFromFile(String filepath) { List<String> lines = FileUtils.loadStringsFromFile(filepath); return extract(lines); } }