enrolmentEvaluation.setEnrolmentEvaluationState(EnrolmentEvaluationState.RECTIFIED_OBJ);
enrolmentEvaluation.setEnrolmentEvaluationState(EnrolmentEvaluationState.TEMPORARY_OBJ);
    public MarkSheet rectifyEnrolmentEvaluation(MarkSheet markSheet, EnrolmentEvaluation enrolmentEvaluation, Date evaluationDate, String grade, String reason) {                if (markSheet == null || evaluationDate == null || grade == null || grade.length() == 0) {            throw new DomainException("error.markSheet.invalid.arguments");        }        if(!markSheet.hasEnrolmentEvaluations(enrolmentEvaluation)) {        	throw new DomainException("error.no.student.in.markSheet");        }            	if(enrolmentEvaluation.getEnrolmentEvaluationState().equals(EnrolmentEvaluationState.RECTIFIED_OBJ)) {    		throw new DomainException("error.markSheet.student.alreadyRectified");    	}        if (markSheet.isNotConfirmed()) {            throw new DomainException("error.markSheet.must.be.confirmed");        }        enrolmentEvaluation.setEnrolmentEvaluationState(EnrolmentEvaluationState.RECTIFIED_OBJ);        enrolmentEvaluation.setWhen(new Date());        enrolmentEvaluation.generateCheckSum();        markSheet.generateCheckSum();        MarkSheetEnrolmentEvaluationBean markSheetEnrolmentEvaluationBean = new MarkSheetEnrolmentEvaluationBean(enrolmentEvaluation.getEnrolment(), evaluationDate, grade);        MarkSheet rectificationMarkSheet = createRectificationMarkSheet(markSheet.getExecutionPeriod(), evaluationDate, markSheet.getResponsibleTeacher(), markSheet.getMarkSheetType(), Collections.singletonList(markSheetEnrolmentEvaluationBean));        rectificationMarkSheet.setReason(reason);                return rectificationMarkSheet;    }