package io.oasp.gastronomy.restaurant.general.common.api.builders;
import java.util.LinkedList;
import java.util.List;
import io.oasp.gastronomy.restaurant.salesmanagement.common.api.datatype.OrderState;
import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.OrderEto;
public class OrderEtoBuilder {
private List<P<OrderEto>> parameterToBeApplied;
public OrderEtoBuilder() {
this.parameterToBeApplied = new LinkedList<>();
fillMandatoryFields();
fillMandatoryFields_custom();
}
public OrderEtoBuilder tableId(final long tableId) {
this.parameterToBeApplied.add(new P<OrderEto>() {
@Override
public void apply(OrderEto target) {
target.setTableId(tableId);
}
});
return this;
}
public OrderEtoBuilder state(final OrderState state) {
this.parameterToBeApplied.add(new P<OrderEto>() {
@Override
public void apply(OrderEto target) {
target.setState(state);
}
});
return this;
}
public OrderEtoBuilder revision(final Number revision) {
this.parameterToBeApplied.add(new P<OrderEto>() {
@Override
public void apply(OrderEto target) {
target.setRevision(revision);
}
});
return this;
}
public OrderEto createNew() {
OrderEto ordereto = new OrderEto();
for (P<OrderEto> parameter : this.parameterToBeApplied) {
parameter.apply(ordereto);
}
return ordereto;
}
/**
* Fills all mandatory fields by default. (will be overwritten on re-generation)
*/
private void fillMandatoryFields() {
}
/**
* Might be enrichted to users needs (will not be overwritten)
*/
private void fillMandatoryFields_custom() {
}
}