Bug 773

Summary: ArrayIndexOutOfBoundsException
Product: Gear and Member Management System for library Reporter: keithlam5
Component: JavaAssignee: keithlam5
Status: RESOLVED FIXED    
Severity: enhancement CC: keithlam5
Priority: ---    
Version: unspecified   
Hardware: PC   
OS: Windows   
Attachments: Bug_1

Description keithlam5 2023-11-09 23:51:14 HKT
Created attachment 147 [details]
Bug_1

Steps To Reproduce:

1. startNewDay without any date


Actual Results: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
	at code.CmdStartNewDay.execute(CmdStartNewDay.java:13)
	at Main.main(Main.java:45)

Expected Results: A warning of no date or wrong syntax
Comment 1 keithlam5 2023-11-27 14:55:51 HKT
Created an extra ExInvalidDate.java to handle the exception of invalid date input.

package code;

public class ExInvalidDate extends Exception {

    private String day;

    public String getDay() { return day; }

    public ExInvalidDate() { super("Invalid date."); }

    public ExInvalidDate(String message) { super(message); }
    
}


--------------
In the CmdStartNewDay.java. Changed the public void execute(String[] cmdParts) as follow:

    public void execute(String[] cmdParts) {
        try {

            SystemDate sd = SystemDate.getInstance();
            sOld = sd.toString();
            sNew = cmdParts[1];

            if (!sd.valid(sNew)) throw new ExInvalidDate();

            sd.set(sNew);

            addUndoCommand(this);
            clearRedoList();
            System.out.println("Done.");

        } catch (ExInvalidNewDate e) {
            System.out.println(e.getMessage());

        } catch (ExInvalidDate | ArrayIndexOutOfBoundsException | NumberFormatException e) {
			System.out.println(new ExInvalidDate().getMessage());
		}
    }