package org.getlantern.querybuilder.query;
import org.getlantern.querybuilder.Expression;
import org.getlantern.querybuilder.SQLQuery;
import org.getlantern.querybuilder.Table;
public class SQLDeleteQuery implements SQLQuery {
private Table table;
private Expression where;
@Override
public String getSQL() {
if (where == null) return String.format("DELETE FROM %s", table.getSQL());
return String.format("DELETE FROM %S WHERE %s", table.getSQL(), where.getSQL());
}
void setFrom(final Table table) {
this.table = table;
}
void setWhere(final Expression where) {
this.where = where;
}
public static final class Builder implements IBuilder<SQLDeleteQuery> {
private final SQLDeleteQuery query = new SQLDeleteQuery();
private boolean buildCalled;
@Override
public SQLDeleteQuery build() {
buildCalled = true;
return query;
}
@Override
public String buildSQL() {
return build().getSQL();
}
public Builder from(final Table table) {
checkNotBuilt();
query.setFrom(table);
return this;
}
public Builder where(final Expression where) {
checkNotBuilt();
query.setWhere(where);
return this;
}
private void checkNotBuilt() {
if (buildCalled) throw new IllegalStateException();
}
}
}