package caltool.schedule; import caltool.PrecondViolation; import java.util.*; /**** * * Class ScheduleEventPrecondViolation defines and * exception containing error conditions for the * Schedule.scheduleEvent method. It contains a list of * the specific error messages that may be output in * response to a precondition having been violated by a * call to scheduleEvent. * * @author Gene Fisher (gfisher@calpoly.edu) * @version 17feb12 */ public class ScheduleEventPrecondViolation extends Exception implements PrecondViolation { /** * Construct this by initializing the error message * list to an empty list, initializing the numErrors * count to 0, and initializing local copies of the * error message text for each of the possible errors * from Schedule.scheduleEvent. */ public ScheduleEventPrecondViolation() { errors = new ArrayList(); emptyTitleMessage = new String( "Event title cannot be empty."); alreadyScheduledMessage = new String( "An event of the given start date and title is already scheduled."); invalidStartDateMessage = new String( "Invalid start date."); invalidEndDateMessage = new String( "Invalid end date."); noActiveCalendarMessage = new String( "There is no active calendar in the Calendar Tool workspace."); numErrors = 0; } /*-* * Implemented interface methods. */ /** * Return the error list. */ public String[] getErrors() { return (String[]) errors.toArray(new String[1]); } /** * Clear all error messages. */ public void clear() { errors = new ArrayList(); numErrors = 0; } /** * Return true if any errors have been set. */ public boolean anyErrors() { return (numErrors > 0); } /** * Return the number of errors. */ public int numberOfErrors() { return numErrors; } /*-* * Error-setting methods */ /** * Set the empty title error message. */ public void setEmptyTitleError() { errors.add(emptyTitleMessage); numErrors++; } /** * Set the already scheduled error message. */ public void setAlreadyScheduledError() { errors.add(alreadyScheduledMessage); numErrors++; } /** * Set the invalid start date error message. */ public void setInvalidStartDateError() { errors.add(invalidStartDateMessage); numErrors++; } /** * Set the invalid end date error message. */ public void setInvalidEndDateError() { errors.add(invalidEndDateMessage); numErrors++; } /** * Set the no active calendar error message. */ public void setNoActiveCalendarError() { errors.add(noActiveCalendarMessage); numErrors++; } /*-* * Data fields */ /** List of current error messages */ protected ArrayList errors; /** Error message count */ protected int numErrors; /** Error message for empty title */ protected String emptyTitleMessage; /** Error message for event of same date,title already scheduled */ protected String alreadyScheduledMessage; /** Error message for invalid start date */ protected String invalidStartDateMessage; /** Error message for invalid end date */ protected String invalidEndDateMessage; /** Error message for no currently active calendar in the workspace */ protected String noActiveCalendarMessage; }