package husacct.validate.domain.configuration; import husacct.validate.domain.exception.ViolationHistoryNotFoundException; import husacct.validate.domain.validation.ViolationHistory; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Observable; class ViolationHistoryRepository extends Observable { private List<ViolationHistory> violationHistories; ViolationHistoryRepository() { this.violationHistories = new ArrayList<ViolationHistory>(); } List<ViolationHistory> getViolationHistory() { return violationHistories; } void setViolationHistories(List<ViolationHistory> violationhistories) { this.violationHistories = violationhistories; } void addViolationHistory(ViolationHistory violationHistory) { violationHistories.add(violationHistory); setChanged(); notifyObservers(); } void removeViolationHistory(Calendar date) { if (dateExistsInRepository(date)) { ViolationHistory recordToDelete = null; for (ViolationHistory violationHistory : violationHistories) { if (violationHistory.getDate().equals(date)) { recordToDelete = violationHistory; break; } } violationHistories.remove(recordToDelete); return; } throw new ViolationHistoryNotFoundException(date); } ViolationHistory getViolationHistoryByDate(Calendar date) { if (dateExistsInRepository(date)) { for (ViolationHistory violationHistory : violationHistories) { if (violationHistory.getDate().equals(date)) { return violationHistory; } } } throw new ViolationHistoryNotFoundException(date); } private boolean dateExistsInRepository(Calendar date) { for (ViolationHistory violationHistory : violationHistories) { if (violationHistory.getDate().equals(date)) { return true; } } return false; } }