```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;
}
}
```