private void quoteFullName(final StringBuilder buffer, final DatabaseObject parent, final String name) { requireNonNull(buffer, "No buffer provided"); quoteFullName(buffer, parent); if (!isBlank(name)) { if (buffer.length() > 0) { buffer.append('.'); } quoteName(buffer, name); } }
private String printNewNode(final Column column) { final String nodeId = "\"" + nodeId(column) + "\""; final String columnName; if (options.isShowUnqualifiedNames()) { columnName = identifiers.quoteShortName(column); } else { columnName = identifiers.quoteFullName(column); } final String columnNode = String .format(" %s [label=<%s>];%n", nodeId, columnName); formattingHelper.append(columnNode); return nodeId; }
private SchemaTraversalHandler getSchemaTraversalHandler(final OutputOptions outputOptions) throws SchemaCrawlerException { final SchemaTraversalHandler formatter; final SchemaTextDetailType schemaTextDetailType = getSchemaTextDetailType(); final String identifierQuoteString = identifiers.getIdentifierQuoteString(); formatter = new SchemaDotFormatter(schemaTextDetailType, graphOptions, outputOptions, identifierQuoteString); return formatter; }
/** * Checks if a given identifier name needs to be quoted. It uses * generalized rules which are common across the majority of * databases. * * @param name * Identifier name to check * @return Whether the given name needs to be quoted */ public boolean isToBeQuoted(final String name) { if (name == null || name.isEmpty() || isQuotedName(name)) { return false; } switch (identifierQuotingStrategy) { case quote_none: return false; case quote_all: return true; case quote_if_special_characters: return !isIdentifier(name); case quote_if_special_characters_and_reserved_words: default: return !isIdentifier(name) || isReservedWord(name); } }
private void buildFullName() { if (fullName != null) { return; } final Identifiers identifiers = Identifiers.identifiers() .withIdentifierQuoteString("\"").build(); fullName = identifiers.quoteFullName(this); }
if (pkColumn.getParent().equals(table)) pkColumnName = identifiers.quoteName(pkColumn); isIncoming = true; pkColumnName = identifiers.quoteShortName(pkColumn); pkColumnName = identifiers.quoteFullName(pkColumn); fkColumnName = identifiers.quoteName(fkColumn); fkColumnName = identifiers.quoteShortName(fkColumn); fkColumnName = identifiers.quoteFullName(fkColumn);
/** * Quotes an identifier name using the identifier quote string. Does * not quote the identifier name if quoting is not required, per * generalized database rules. * * @param name * Identifier name to quote * @return Identifier name after quoting it, or the original name if * quoting is not required */ public String quoteName(final String name) { final StringBuilder buffer = new StringBuilder(512); quoteName(buffer, name); return buffer.toString(); }
/** * {@inheritDoc} */ @Override public final String getFullName() { return Identifiers.STANDARD.quoteFullName(this); }
@Test public void empty() { final String[] words = new String[] { "", null, }; for (final String word: words) { assertThat(word, identifiers.isReservedWord(word), is(false)); assertThat(word, identifiers.isToBeQuoted(word), is(false)); } }
.getIdentifierQuoteString(); final Identifiers identifiers = Identifiers.identifiers() .withIdentifierQuoteString(identifierQuoteString).build();
public SchemaRetrievalOptionsBuilder fromConnnection(final Connection connection) { if (connection == null) { return this; } DatabaseMetaData metaData; try { metaData = connection.getMetaData(); } catch (final SQLException e) { // Ignore metaData = null; } identifierQuoteString = lookupIdentifierQuoteString(metaData); identifiers = Identifiers.identifiers().withConnectionIfPossible(connection) .withIdentifierQuoteString(identifierQuoteString).build(); supportsCatalogs = lookupSupportsCatalogs(metaData); supportsSchemas = lookupSupportsSchemas(metaData); if (!overridesTypeMap.isPresent()) { overridesTypeMap = Optional.of(new TypeMap(connection)); } return this; }
@Override public final String getShortName() { return Identifiers.STANDARD.quoteShortName(this); }
private void quoteName(final StringBuilder buffer, final String name) { requireNonNull(buffer, "No buffer provided"); if (isBlank(name)) { return; } if (isToBeQuoted(name)) { buffer.append(identifierQuoteString).append(name) .append(identifierQuoteString); } else { buffer.append(name); } }
public Identifiers build() { return new Identifiers(this); }
if (pkColumn.getParent().equals(table)) pkColumnName = identifiers.quoteName(pkColumn); isIncoming = true; pkColumnName = identifiers.quoteShortName(pkColumn); pkColumnName = identifiers.quoteFullName(pkColumn); fkColumnName = identifiers.quoteName(fkColumn); fkColumnName = identifiers.quoteShortName(fkColumn); fkColumnName = identifiers.quoteFullName(fkColumn);
/** * Quotes an identifier name using the identifier quote string. Does * not quote the identifier name if quoting is not required, per * generalized database rules. * * @param name * Identifier name to quote * @return Identifier name after quoting it, or the original name if * quoting is not required */ public String quoteName(final String name) { final StringBuilder buffer = new StringBuilder(512); quoteName(buffer, name); return buffer.toString(); }
private void buildFullName() { if (fullName != null) { return; } final Identifiers identifiers = Identifiers.identifiers() .withIdentifierQuoteString("\"").build(); fullName = identifiers.quoteFullName(this); }
/** * {@inheritDoc} */ @Override public String getFullName() { return Identifiers.STANDARD.quoteFullName(this); }
/** * Checks if a given identifier name needs to be quoted. It uses * generalized rules which are common across the majority of * databases. * * @param name * Identifier name to check * @return Whether the given name needs to be quoted */ public boolean isToBeQuoted(final String name) { if (name == null || name.isEmpty() || isQuotedName(name)) { return false; } switch (identifierQuotingStrategy) { case quote_none: return false; case quote_all: return true; case quote_if_special_characters: return !isIdentifier(name); case quote_if_special_characters_and_reserved_words: default: return !isIdentifier(name) || isReservedWord(name); } }
@Test public void sqlReservedWords() { final String[] words = new String[] { "update", "UPDATE", }; for (final String word: words) { assertThat(word, identifiers.isReservedWord(word), is(true)); assertThat(word, identifiers.isToBeQuoted(word), is(true)); } }