package lt.emasina.resthub.util;
import java.util.concurrent.atomic.AtomicLong;
import lt.emasina.resthub.model.MdColumn;
import lt.emasina.resthub.model.MdParameter;
import lt.emasina.resthub.model.MdTable;
import lt.emasina.resthub.model.MdType;
/**
* TableMdBuilder
* @author valdo
*/
public class MdTableBuilder {
private static final AtomicLong ID = new AtomicLong();
private final MdTable t;
public MdTableBuilder(String namespace, String name, String connectionName, String sql) {
t = new MdTable();
t.setId(ID.incrementAndGet());
t.setNamespace(namespace);
t.setName(name);
t.setConnectionName(connectionName);
t.setSql(sql);
}
public MdTableBuilder column(String name, MdType type) {
MdColumn c = new MdColumn();
c.setId(ID.incrementAndGet());
c.setName(name);
c.setType(type);
c.setTable(t);
t.getColumns().add(c);
return this;
}
public MdTableBuilder parameter(String name, MdType type, Boolean array) {
MdParameter p = new MdParameter();
p.setId(ID.incrementAndGet());
p.setArray(array);
p.setName(name);
p.setType(type);
p.setTable(t);
t.getParameters().add(p);
return this;
}
public MdTableBuilder cacheTime(int ct) {
t.setCacheTime(ct);
return this;
}
public MdTableBuilder rowsLimit(int rl) {
t.setRowsLimit(rl);
return this;
}
public MdTable build() {
return t;
}
}