package de.fub.agg2graph.gpseval.data.filter; import de.fub.agg2graph.gpseval.data.file.TrackFile; import de.fub.agg2graph.gpseval.utils.Parameterizable; /** * A TrackFilter is used to limit the GPS-tracks. */ public abstract class TrackFilter extends Parameterizable { private String mIdentifier; /** * Initialize the filter. */ public abstract void init(); /** * Apply the filter for the given TrackFile and class name. * * @param trackFile * @param className * @return True, if the TrackFile passes the filter, false otherwise. */ public abstract boolean filter(TrackFile trackFile, String className); /** * Get the identifier of an TrackFilter-class based on its class-name. * * @param trackFilterClass * @return */ public static String getTrackFilterIdentifier(Class<? extends TrackFilter> trackFilterClass) { String className = trackFilterClass.getSimpleName(); int endIndex = className.lastIndexOf("TrackFilter"); return (endIndex < 1) ? className : className.substring(0, endIndex); } /** * Get the identifier of this TrackFilter based on its class name. * * @return */ public String getIdentifier() { if (mIdentifier == null) { mIdentifier = getTrackFilterIdentifier(this.getClass()); } return mIdentifier; } }