import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) {
String query1 = Query.builder()
.from("Users")
.where(Query.Condition.of("role > 'admin'").and("active = true"))
.build();
String query2 = Query.builder()
.from("Products")
.where(Query.Condition.of("price < 100")
.and(Query.Condition.of("stock > 10").and("available = true"))
)
.build();
System.out.println(query1);
System.out.println(query2);
}
}
class Query {
private String select;
private String from;
private String where;
private Query() {
}
public static Query builder() {
return new Query();
}
public Query select(String... columns) {
if (columns == null) return this;
this.select = String.join(",", columns);
return this;
}
public Query from(String from) {
this.from = from;
return this;
}
public Query where(Condition condition) {
this.where = condition.toString();
return this;
}
public String build() {
if (select == null || select.isEmpty()) this.select = "*";
if (from == null || from.isEmpty()) throw new IllegalStateException("From clause is required");
StringBuilder query = new StringBuilder()
.append("SELECT ").append(select)
.append(" FROM ").append(from);
if (where != null) {
query.append(" WHERE ").append(where);
}
return query.toString();
}
public static class Condition {
private final StringBuilder conditionBuilder = new StringBuilder();
private Condition(String condition) {
this.conditionBuilder.append(condition);
}
public static Condition of(String condition) {
return new Condition(condition);
}
public Condition and(String condition) {
this.conditionBuilder.append(" AND ").append(condition);
return this;
}
public Condition or(String condition) {
this.conditionBuilder.append(" OR ").append(condition);
return this;
}
public Condition and(Condition condition) {
this.conditionBuilder.append(" AND (").append(condition.toString()).append(")");
return this;
}
public Condition or(Condition condition) {
this.conditionBuilder.append(" OR (").append(condition.toString()).append(")");
return this;
}
@Override
public String toString() {
return conditionBuilder.toString();
}
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: