package org.pitest.mutationtest.report.html;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PackageSummaryData implements Comparable<PackageSummaryData> {
private final String packageName;
private final Map<String, MutationTestSummaryData> fileNameToSummaryData = new HashMap<String, MutationTestSummaryData>();
public PackageSummaryData(final String packageName) {
this.packageName = packageName;
}
public void addSummaryData(final MutationTestSummaryData data) {
final MutationTestSummaryData existing = this.fileNameToSummaryData
.get(data.getFileName());
if (existing == null) {
this.fileNameToSummaryData.put(data.getFileName(), data);
} else {
existing.add(data);
}
}
public MutationTestSummaryData getForSourceFile(final String filename) {
return this.fileNameToSummaryData.get(filename);
}
public MutationTotals getTotals() {
final MutationTotals mt = new MutationTotals();
for (final MutationTestSummaryData each : this.fileNameToSummaryData
.values()) {
mt.add(each.getTotals());
}
return mt;
}
public String getPackageName() {
return this.packageName;
}
public String getPackageDirectory() {
return this.packageName;
}
public List<MutationTestSummaryData> getSummaryData() {
final ArrayList<MutationTestSummaryData> values = new ArrayList<MutationTestSummaryData>(
this.fileNameToSummaryData.values());
Collections.sort(values, new MutationTestSummaryDataFileNameComparator());
return values;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result)
+ ((this.packageName == null) ? 0 : this.packageName.hashCode());
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final PackageSummaryData other = (PackageSummaryData) obj;
if (this.packageName == null) {
if (other.packageName != null) {
return false;
}
} else if (!this.packageName.equals(other.packageName)) {
return false;
}
return true;
}
@Override
public int compareTo(final PackageSummaryData arg0) {
return this.packageName.compareTo(arg0.packageName);
}
}