```java package mockskeleton; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Scanner; /** * * @author aballantyne */ public class DBase { private static ArrayList<Customer> customers = new ArrayList(); public static void readCustomersFromFile(String filename) { try { Scanner scan = new Scanner(new File(filename)).useDelimiter(","); while (scan.hasNext()) { Customer customer = new Customer(); customer.setForename(scan.next()); customer.setSurname(scan.next()); customer.setBalance(scan.nextInt()); customer.setDue(scan.next()); scan.nextLine(); customers.add(customer); } } catch (FileNotFoundException ex) { System.err.println(ex); } catch (IOException ex) { System.err.println(ex); } catch (CustomerException ex) { System.err.println(ex); } } public static ArrayList<Customer> getCustomers() { return customers; } public static void addCustomer(Customer customer) { customers.add(customer); } public static ArrayList<Customer> getBalanceOver50() { ArrayList<Customer> over50 = new ArrayList(); for (Customer customer : customers) { if (customer.getBalance() > 5000) { over50.add(customer); } } return over50; } public static ArrayList<Customer> getDueNextWeek() { ArrayList<Customer> dueNextWeek = new ArrayList(); LocalDate today = LocalDate.now(); for (Customer customer : customers) { long timeGapInDays = ChronoUnit.DAYS.between(today, customer.getDue()); if (timeGapInDays < 8) { dueNextWeek.add(customer); } } return dueNextWeek; } } ```