QualifiedIdentifier.java

package org.itsallcode.jdbc.identifier;

import static java.util.Arrays.asList;
import static java.util.stream.Collectors.joining;

import java.util.List;

/**
 * A qualified identifier, e.g. table name and schema name.
 * 
 * @param id list of identifiers
 */
public record QualifiedIdentifier(List<Identifier> id) implements Identifier {

    /**
     * Create a new qualified identifier.
     * 
     * @param ids the IDs
     * @return a new instance
     */
    @SuppressWarnings("java:S923") // Varargs required
    public static Identifier of(final Identifier... ids) {
        return new QualifiedIdentifier(asList(ids));
    }

    /**
     * Create a new qualified identifier.
     * 
     * @param ids the simple IDs
     * @return a new instance
     */
    @SuppressWarnings("java:S923") // Varargs required
    public static Identifier of(final String... ids) {
        return of(asList(ids).stream().map(Identifier::simple).toArray(Identifier[]::new));
    }

    @Override
    public String toString() {
        return quote();
    }

    @Override
    public String quote() {
        return id.stream().map(Identifier::quote).collect(joining("."));
    }
}