// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.utilsplugin2.search; import org.openstreetmap.josm.actions.search.PushbackTokenizer; import org.openstreetmap.josm.actions.search.SearchCompiler; import org.openstreetmap.josm.data.osm.OsmPrimitive; /** * TODO: remove this copied class and make it public in JOSM core */ public abstract class RangeMatch extends SearchCompiler.Match { private final long min; private final long max; public RangeMatch(long min, long max) { this.min = Math.min(min, max); this.max = Math.max(min, max); } public RangeMatch(PushbackTokenizer.Range range) { this(range.getStart(), range.getEnd()); } protected abstract Long getNumber(OsmPrimitive osm); protected abstract String getString(); @Override public boolean match(OsmPrimitive osm) { Long num = getNumber(osm); if (num == null) return false; else return (num >= min) && (num <= max); } @Override public String toString() { return getString() + "=" + min + "-" + max; } }