public static Identifier _(String name, boolean quoted) { return new Identifier(name, quoted); }
@Override public Identifier apply(@Nullable IdentifierProto identifierProto) { return Identifier.fromProto(identifierProto); } });
@Override public IdentifierProto apply(@Nullable Identifier identifier) { return identifier.getProto(); } }))
@Override public Identifier apply(@Nullable String input) { return Identifier._(input, IdentifierUtil.isShouldBeQuoted(input)); } });
@Override public String apply(@Nullable Identifier identifier) { return identifier.raw(policy); } });
/** * Interned string of an identifier * @param policy IdentifierPolicy * @return interned string */ public String interned(IdentifierPolicy policy) { StringBuilder sb = new StringBuilder(); if (quoted) { appendByCase(sb, policy.storesQuotedIdentifierAs()); } else { appendByCase(sb, policy.storesUnquotedIdentifierAs()); } return sb.toString(); }
@Override public String apply(@Nullable Identifier identifier) { return identifier.interned(policy); } });
public static Identifier internIdentifierPart(String rawPart, IdentifierPolicy policy) { IdentifierCase unquotedIdentifierCase = policy.storesUnquotedIdentifierAs(); final String interned; if (unquotedIdentifierCase == IdentifierCase.LowerCase) { interned = rawPart.toLowerCase(Locale.ENGLISH); } else if (unquotedIdentifierCase == IdentifierCase.UpperCase) { interned = rawPart.toUpperCase(Locale.ENGLISH); } else { interned = rawPart; } return _(interned, false); }
@Override public String toString() { return raw(DefaultPolicy()); }
/** * Raw string for an identifier, which is equivalent to an identifier directly used in SQL statements. * @param policy IdentifierPolicy * @return Raw string */ public String raw(IdentifierPolicy policy) { StringBuilder sb = new StringBuilder(); if (quoted) { appendByCase(sb, policy.storesQuotedIdentifierAs()); sb.insert(0, policy.getIdentifierQuoteString()); sb.append(policy.getIdentifierQuoteString()); } else { appendByCase(sb, policy.storesUnquotedIdentifierAs()); } return sb.toString(); }
public static QualifiedIdentifier makeIdentifier(String raw, IdentifierPolicy policy) { if (raw == null || raw.equals("")) { return $(raw); } final String [] splitted = raw.split(IDENTIFIER_DELIMITER_REGEXP); final ImmutableList.Builder<Identifier> builder = ImmutableList.builder(); for (String part : splitted) { boolean quoted = isDelimited(part, policy); if (quoted) { builder.add(_(stripQuote(part), true)); } else { builder.add(internIdentifierPart(part, policy)); } } return $(builder.build()); }
public static Identifier _(String name) { return new Identifier(name, false); }
/** * It takes interned strings. It assumes all parameters already stripped. It is used only for tests. * @param names interned strings * @return QualifiedIdentifier */ @VisibleForTesting public static QualifiedIdentifier $(String...names) { final ImmutableList.Builder<Identifier> builder = ImmutableList.builder(); for (String n : names) { for (String split : n.split(StringUtils.escapeRegexp(""+DefaultPolicy().getIdentifierSeperator()))) { builder.add(Identifier._(split, IdentifierUtil.isShouldBeQuoted(split))); } } return new QualifiedIdentifier(builder.build()); }
public static Identifier fromProto(IdentifierProto proto) { return new Identifier(proto.getName(), proto.getQuoted()); } }