package org.openlmis.core.model; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; import com.j256.ormlite.dao.ForeignCollection; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.field.ForeignCollectionField; import com.j256.ormlite.table.DatabaseTable; import org.openlmis.core.utils.ListUtil; import java.util.Date; import java.util.List; import lombok.Data; import lombok.Getter; @Data @DatabaseTable(tableName = "program_data_forms") public class ProgramDataForm extends BaseModel { public enum STATUS { DRAFT, SUBMITTED, AUTHORIZED } @Getter @DatabaseField(defaultValue = "DRAFT") private STATUS status; @Getter @DatabaseField(foreign = true, foreignAutoRefresh = true) private Program program; @Getter @DatabaseField private boolean synced = false; @Getter @Expose @DatabaseField private Date periodBegin; @Getter @Expose @DatabaseField private Date periodEnd; @Getter @Expose @DatabaseField private Date submittedTime; @ForeignCollectionField private ForeignCollection<ProgramDataFormItem> programDataFormItemList; @Expose @SerializedName("programDataFormItems") private List<ProgramDataFormItem> programDataFormItemListWrapper; @ForeignCollectionField() private ForeignCollection<ProgramDataFormSignature> signatures; @Expose @SerializedName("programDataFormSignatures") private List<ProgramDataFormSignature> signaturesWrapper; public List<ProgramDataFormSignature> getSignaturesWrapper() { signaturesWrapper = ListUtil.wrapOrEmpty(signatures, signaturesWrapper); return signaturesWrapper; } public List<ProgramDataFormItem> getProgramDataFormItemListWrapper() { programDataFormItemListWrapper = ListUtil.wrapOrEmpty(programDataFormItemList, programDataFormItemListWrapper); return programDataFormItemListWrapper; } }