private static boolean toSqlPattern()

in spectator-api/src/main/java/com/netflix/spectator/impl/matcher/PatternUtils.java [536:574]


  private static boolean toSqlPattern(StringBuilder builder, Matcher matcher) {
    if (matcher instanceof TrueMatcher) {
      builder.append("%");
      return true;
    } else if (matcher instanceof AnyMatcher) {
      builder.append('_');
      return true;
    } else if (matcher instanceof StartMatcher || matcher instanceof EndMatcher) {
      return true;
    } else if (matcher instanceof ZeroOrMoreMatcher) {
      ZeroOrMoreMatcher m = matcher.as();
      if (m.repeated() == AnyMatcher.INSTANCE) {
        builder.append('%');
        return toSqlPattern(builder, m.next());
      }
    } else if (matcher instanceof SeqMatcher) {
      SeqMatcher sm = matcher.as();
      for (Matcher m : sm.matchers()) {
        if (!toSqlPattern(builder, m)) {
          return false;
        }
      }
      return true;
    } else if (matcher instanceof CharSeqMatcher) {
      CharSeqMatcher m = matcher.as();
      builder.append(sqlEscape(m.pattern()));
      return true;
    } else if (matcher instanceof IndexOfMatcher) {
      IndexOfMatcher m = matcher.as();
      builder.append('%').append(sqlEscape(m.pattern()));
      return toSqlPattern(builder, m.next());
    } else if (matcher instanceof StartsWithMatcher) {
      StartsWithMatcher m = matcher.as();
      builder.append(sqlEscape(m.pattern()));
      return true;
    }

    return false;
  }