package io.oasp.gastronomy.restaurant.general.common.api.builders;
import java.util.LinkedList;
import java.util.List;
import io.oasp.gastronomy.restaurant.general.common.api.datatype.Money;
import io.oasp.gastronomy.restaurant.salesmanagement.common.api.datatype.OrderPositionState;
import io.oasp.gastronomy.restaurant.salesmanagement.common.api.datatype.ProductOrderState;
import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.OrderPositionEto;
public class OrderPositionEtoBuilder {
private List<P<OrderPositionEto>> parameterToBeApplied;
public OrderPositionEtoBuilder() {
this.parameterToBeApplied = new LinkedList<>();
fillMandatoryFields();
fillMandatoryFields_custom();
}
/**
* 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() {
}
public OrderPositionEtoBuilder orderId(final Long orderId) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setOrderId(orderId);
}
});
return this;
}
public OrderPositionEtoBuilder cookId(final Long cookId) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setCookId(cookId);
}
});
return this;
}
public OrderPositionEtoBuilder offerId(final Long offerId) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setOfferId(offerId);
}
});
return this;
}
public OrderPositionEtoBuilder offerName(final String offerName) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setOfferName(offerName);
}
});
return this;
}
public OrderPositionEtoBuilder state(final OrderPositionState state) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setState(state);
}
});
return this;
}
public OrderPositionEtoBuilder price(final Money price) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setPrice(price);
}
});
return this;
}
public OrderPositionEtoBuilder comment(final String comment) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setComment(comment);
}
});
return this;
}
public OrderPositionEtoBuilder drinkState(final ProductOrderState drinkState) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setDrinkState(drinkState);
}
});
return this;
}
public OrderPositionEtoBuilder revision(final Number revision) {
this.parameterToBeApplied.add(new P<OrderPositionEto>() {
@Override
public void apply(OrderPositionEto target) {
target.setRevision(revision);
}
});
return this;
}
public OrderPositionEto createNew() {
OrderPositionEto orderpositioneto = new OrderPositionEto();
for (P<OrderPositionEto> parameter : this.parameterToBeApplied) {
parameter.apply(orderpositioneto);
}
return orderpositioneto;
}
}