@NonNull
static Query createPackageUsagesQuery (
@NonNull final String packageName,
@NonNull final Set<? extends UsageType> mask,
@NonNull Occur operator) {
Parameters.notNull("packageName", packageName);
Parameters.notNull("mask", mask);
final String pattern = Pattern.quote(packageName) + "\\.[^\\.]+";
if (operator == Occur.SHOULD) {
final BooleanQuery query = new BooleanQuery ();
for (ClassIndexImpl.UsageType ut : mask) {
final Term t = DocumentUtil.referencesTerm (
pattern,
EnumSet.of(ut),
true);
query.add(Queries.createQuery(t.field(), t.field(), t.text(), Queries.QueryKind.REGEXP), operator);
}
return query;
} else if (operator == Occur.MUST) {
final Term t = DocumentUtil.referencesTerm (
pattern,
mask,
true);
return Queries.createQuery(t.field(), t.field(), t.text(), Queries.QueryKind.REGEXP);
} else {
throw new IllegalArgumentException();
}
}