diff --git a/ApprovalContext.java b/ApprovalContext.java new file mode 100644 index 0000000..c4b2c55 --- /dev/null +++ b/ApprovalContext.java @@ -0,0 +1,72 @@ +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class ApprovalContext { + private List approvalHistory = new ArrayList<>(); + private ApprovalStatus currentStatus = ApprovalStatus.PENDING; + private String rejectionReason; + private ApprovalLevel currentRequiredLevel; + + public void addApprovalRecord(Approver approver, boolean approved, String comment) { + ApprovalRecord record = new ApprovalRecord( + approver.getApproverName(), + new Date(), + approved, + comment + ); + approvalHistory.add(record); + } + + public List getApprovalHistory() { + return new ArrayList<>(approvalHistory); + } + + public ApprovalStatus getCurrentStatus() { + return currentStatus; + } + + public void setCurrentStatus(ApprovalStatus currentStatus) { + this.currentStatus = currentStatus; + } + + public String getRejectionReason() { + return rejectionReason; + } + + public void setRejectionReason(String rejectionReason) { + this.rejectionReason = rejectionReason; + } + + public ApprovalLevel getCurrentRequiredLevel() { + return currentRequiredLevel; + } + + public void setCurrentRequiredLevel(ApprovalLevel currentRequiredLevel) { + this.currentRequiredLevel = currentRequiredLevel; + } + + public static class ApprovalRecord { + private String approverName; + private Date approvalTime; + private boolean approved; + private String comment; + + public ApprovalRecord(String approverName, Date approvalTime, boolean approved, String comment) { + this.approverName = approverName; + this.approvalTime = approvalTime; + this.approved = approved; + this.comment = comment; + } + + @Override + public String toString() { + return "ApprovalRecord{" + + "approverName='" + approverName + '\'' + + ", time=" + approvalTime + + ", approved=" + approved + + ", comment='" + comment + '\'' + + '}'; + } + } +} \ No newline at end of file