package de.fub.agg2graph.gpseval.data.filter;
import de.fub.agg2graph.gpseval.data.file.TrackFile;
import java.util.HashMap;
import java.util.Map;
/**
* A TrackFilter used to limit the number of tracks per class.
*
* It has one parameter "limit" that specifies the number of tracks, that passes
* the filter for each class.
*/
public class LimitPerClassTrackFilter extends TrackFilter {
private Map<String, Integer> mCounts = new HashMap<>();
private int mLimit = 0;
@Override
public void init() {
mLimit = getIntParam("limit", 0);
}
@Override
public boolean filter(TrackFile trackFile, String className) {
Integer count = mCounts.get(className);
if (count == null) {
count = 0;
}
boolean res = count < mLimit;
if (res) {
count++;
mCounts.put(className, count);
}
return res;
}
}