package hudson.plugins.PerfPublisher.matrixBuild; import hudson.plugins.PerfPublisher.Report.ReportContainer; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Map.Entry; public class PerfPublisherMatrixSubBuild implements Comparable<PerfPublisherMatrixSubBuild> { /** * List of axes value for this subBuild */ private Map<String, String> combinations; private ReportContainer report; public PerfPublisherMatrixSubBuild(Map<String, String> comb, ReportContainer report) { this.combinations = comb; this.report = report; } public boolean hasCombination(Map<String, String> combination) { Set<Entry<String, String>> entry = this.combinations.entrySet(); Iterator<Entry<String, String>> iterator = entry.iterator(); while (iterator.hasNext()) { Entry<String, String> axe = iterator.next(); if (combination.containsKey(axe.getKey()) && combination.get(axe.getKey()).equals(axe.getValue())) { return true; } } return false; } public Map<String, String> getCombinations() { return combinations; } public String getStringCombinations() { StringBuilder strb = new StringBuilder(); Set<Entry<String, String>> entry = this.combinations.entrySet(); Iterator<Entry<String, String>> iterator = entry.iterator(); while (iterator.hasNext()) { Entry<String, String> axe = iterator.next(); strb.append(axe.getKey()+"="+axe.getValue()+" ; "); } return strb.toString(); } public ReportContainer getReport() { return report; } public List<String> getAxis() { List<String> result = new ArrayList<String>(); Set<String> axis = this.combinations.keySet(); Object[] arr = (Object[]) axis.toArray(); for (int i=0; i<arr.length; i++) { result.add((String)arr[i]); } return result; } public List<String> getAxisValues(String axe) { List<String> result = new ArrayList<String>(); Set<Entry<String, String>> entry = this.combinations.entrySet(); Iterator<Entry<String, String>> iterator = entry.iterator(); while (iterator.hasNext()) { Entry<String, String> a = iterator.next(); if (a.getKey().equals(axe) && !result.contains(a.getValue())) { result.add(a.getValue()); } } return result; } /** * Comparable function which offers a sorting solution * */ public int compareTo(PerfPublisherMatrixSubBuild subBuild) { return this.getStringCombinations().compareTo(subBuild.getStringCombinations()); } }