package org.openlmis.core.model.builder;
import org.openlmis.core.model.Period;
import org.openlmis.core.model.Program;
import org.openlmis.core.model.ProgramDataForm;
import org.openlmis.core.model.ProgramDataFormSignature;
import org.openlmis.core.model.Signature;
import java.util.Date;
public class ProgramDataFormBuilder {
private ProgramDataForm programDataForm;
public ProgramDataFormBuilder() {
programDataForm = new ProgramDataForm();
}
public ProgramDataFormBuilder setStatus(ProgramDataForm.STATUS status) {
programDataForm.setStatus(status);
return this;
}
public ProgramDataFormBuilder setProgram(Program program) {
programDataForm.setProgram(program);
return this;
}
public ProgramDataFormBuilder setSynced(boolean synced) {
programDataForm.setSynced(synced);
return this;
}
public ProgramDataFormBuilder setSubmittedTime(Date submittedTime) {
programDataForm.setSubmittedTime(submittedTime);
return this;
}
public ProgramDataFormBuilder setPeriod(Date periodBegin) {
programDataForm.setPeriodBegin(periodBegin);
programDataForm.setPeriodEnd(Period.of(periodBegin).getEnd().toDate());
return this;
}
public ProgramDataFormBuilder setSignatures(String signature, Signature.TYPE type) {
programDataForm.getSignaturesWrapper().add(new ProgramDataFormSignature(programDataForm, signature, type));
return this;
}
public ProgramDataForm build() {
return programDataForm;
}
}