public NumberPattern(String searchPattern) { List<NumberRange> l = new LinkedList<>(); for (String s : breakUpTokens(searchPattern)) { boolean isNot = (s.charAt(0) == '!'); String token = s.substring(1); Pattern p = Pattern.compile("(([<>]=?)?)(-?\\d+)(-?(-?\\d+)?)"); // Possible patterns: // 123, >123, <123, >=123, <=123, >-123, >=-123, 123-456, -123--456 // Regular expression used: (([<>]=?)?)(-?\d+)(-??(-?\d+)) Matcher m = p.matcher(token); // If a non-numeric value was passed in for a numeric value, just set the value to '0'. // (I think this might resolve a workaround in custom queries). if (! m.matches()) throw new FormattedRuntimeException("Numeric value didn't match pattern: ''{0}''", token); //m = numericPattern.matcher("0"); String arg1 = m.group(1); String start = m.group(3); String end = m.group(5); l.add(new NumberRange(arg1, start, end, isNot)); } numberRanges = l.toArray(new NumberRange[l.size()]); }
public NumberPattern(String searchPattern) { List<NumberRange> l = new LinkedList<>(); for (String s : breakUpTokens(searchPattern)) { boolean isNot = (s.charAt(0) == '!'); String token = s.substring(1); Pattern p = Pattern.compile("(([<>]=?)?)(-?\\d+)(-?(-?\\d+)?)"); // Possible patterns: // 123, >123, <123, >=123, <=123, >-123, >=-123, 123-456, -123--456 // Regular expression used: (([<>]=?)?)(-?\d+)(-??(-?\d+)) Matcher m = p.matcher(token); // If a non-numeric value was passed in for a numeric value, just set the value to '0'. // (I think this might resolve a workaround in custom queries). if (! m.matches()) throw new FormattedRuntimeException("Numeric value didn't match pattern: ''{0}''", token); //m = numericPattern.matcher("0"); String arg1 = m.group(1); String start = m.group(3); String end = m.group(5); l.add(new NumberRange(arg1, start, end, isNot)); } numberRanges = l.toArray(new NumberRange[l.size()]); }
public NumberPattern(String searchPattern) { List<NumberRange> l = new LinkedList<>(); for (String s : breakUpTokens(searchPattern)) { boolean isNot = (s.charAt(0) == '!'); String token = s.substring(1); Pattern p = Pattern.compile("(([<>]=?)?)(-?\\d+)(-?(-?\\d+)?)"); // Possible patterns: // 123, >123, <123, >=123, <=123, >-123, >=-123, 123-456, -123--456 // Regular expression used: (([<>]=?)?)(-?\d+)(-??(-?\d+)) Matcher m = p.matcher(token); // If a non-numeric value was passed in for a numeric value, just set the value to '0'. // (I think this might resolve a workaround in custom queries). if (! m.matches()) throw new FormattedRuntimeException("Numeric value didn't match pattern: ''{0}''", token); //m = numericPattern.matcher("0"); String arg1 = m.group(1); String start = m.group(3); String end = m.group(5); l.add(new NumberRange(arg1, start, end, isNot)); } numberRanges = l.toArray(new NumberRange[l.size()]); }
/** * Construct a number matcher for the given search pattern. * * @param searchPattern A date search paattern. See class usage for a description. */ public NumberMatcher(String searchPattern) { numberPatterns = new NumberPattern[1]; numberPatterns[0] = new NumberPattern(searchPattern); }
/** * Returns 'true' if this integer matches the pattern(s). */ @Override /* IMatcher */ public boolean matches(Number in) { for (int i = 0; i < numberPatterns.length; i++) { if (! numberPatterns[i].matches(in)) return false; } return true; }
/** * Returns 'true' if this integer matches the pattern(s). */ @Override /* IMatcher */ public boolean matches(Number in) { for (int i = 0; i < numberPatterns.length; i++) { if (! numberPatterns[i].matches(in)) return false; } return true; }
/** * Construct a number matcher for the given search pattern. * * @param searchPattern A date search paattern. See class usage for a description. */ public NumberMatcher(String searchPattern) { numberPatterns = new NumberPattern[1]; numberPatterns[0] = new NumberPattern(searchPattern); }
/** * Construct a number matcher for the given search pattern. * * @param searchPattern A date search paattern. See class usage for a description. */ public NumberMatcher(String searchPattern) { numberPatterns = new NumberPattern[1]; numberPatterns[0] = new NumberPattern(searchPattern); }
/** * Returns 'true' if this integer matches the pattern(s). */ @Override /* IMatcher */ public boolean matches(Number in) { for (int i = 0; i < numberPatterns.length; i++) { if (! numberPatterns[i].matches(in)) return false; } return true; }