/** * Parses the URL ApiJobStore filter query and generates the JobRowFilter object. * * @param filterQuery Expects a URL ApiJobStore filter query String in the format: * <p> * <code>(JobField name)-(operation)[?(value or comma separated values)]?</code> * * @throws BadFilterException when filter pattern is not matched or when any of its properties are not * valid. */ public JobRowFilter(@NotNull String filterQuery) throws BadFilterException { LOG.trace("filterQuery: {}", filterQuery); Matcher tokenizedQuery = QUERY_PATTERN.matcher(filterQuery); // if pattern match found, extract values else throw exception if (!tokenizedQuery.matches()) { LOG.debug(FILTER_INVALID.logFormat(filterQuery)); throw new BadFilterException(FILTER_INVALID.format(filterQuery)); } jobField = extractJobField(tokenizedQuery); operation = extractOperation(tokenizedQuery); values = extractValues(tokenizedQuery, filterQuery); }