blob: 20af48d1fb38162c545354cb337da138c56d0cc6 [file] [log] [blame]
package aQute.lib.osgi.resource;
import aQute.libg.filters.AndFilter;
import aQute.libg.filters.Filter;
import aQute.libg.filters.NotFilter;
import aQute.libg.filters.Operator;
import aQute.libg.filters.SimpleFilter;
import aQute.libg.version.VersionRange;
public class Filters {
public static Filter fromVersionRange(VersionRange range) {
return fromVersionRange(range, "version");
}
public static Filter fromVersionRange(VersionRange range, @SuppressWarnings("unused") String versionAttr) {
if (range == null)
return null;
Filter left;
if (range.includeLow())
left = new SimpleFilter("version", Operator.GreaterThanOrEqual, range.getLow().toString());
else
left = new NotFilter(new SimpleFilter("version", Operator.LessThanOrEqual, range.getLow().toString()));
Filter right;
if (!range.isRange())
right = null;
else if (range.includeHigh())
right = new SimpleFilter("version", Operator.LessThanOrEqual, range.getHigh().toString());
else
right = new NotFilter(new SimpleFilter("version", Operator.GreaterThanOrEqual, range.getHigh().toString()));
Filter result;
if (right != null)
result = new AndFilter().addChild(left).addChild(right);
else
result = left;
return result;
}
}