![JAR search and dependency download from the Maven repository](/logo.png)
de.ec.sql.Select Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sqlbuilder Show documentation
Show all versions of sqlbuilder Show documentation
Java builder to create SQL statements
package de.ec.sql;
import java.util.ArrayList;
import java.util.List;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
@NoArgsConstructor
@Setter(AccessLevel.PROTECTED)
@Accessors(fluent = true)
public class Select implements QueryPart, BeforeFrom {
private final List columns = new ArrayList<>();
private boolean distinct = false;
private boolean all = false;
private BeforeSelect builder;
private String sql;
public Select(final String... columns) {
columns(columns);
}
protected Select(final BeforeSelect builder) {
this.builder = builder;
}
public Select distinct() {
distinct = true;
all = false;
return this;
}
public Select all() {
distinct = false;
all = true;
return this;
}
public Select column(final String column) {
columns.add(column);
return this;
}
public Select columns(final String... columns) {
if (columns != null)
for (final String column : columns)
this.columns.add(column);
return this;
}
@Override
public String string(final QueryOptions options) {
final StringJoiner strings = new StringJoiner();
if (builder != null) {
strings.add(builder.string(options));
strings.add(options.newLine());
}
if (sql != null) {
strings.add(sql);
} else {
strings.add(options.padCased("SELECT"));
if (distinct) {
strings.add(" ");
strings.add(options.cased("DISTINCT"));
} else if (all) {
strings.add(" ");
strings.add(options.cased("ALL"));
}
if (columns.isEmpty()) {
strings.add(" *");
} else {
final StringJoiner columnsStrings = new StringJoiner();
for (final String column : columns)
columnsStrings.add(QueryUtils.splitName(options, column)
.string(options));
strings.add(" ");
strings.add(columnsStrings.toString(", "));
}
}
return strings.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy