/** save To save members' information into a binary file */ public void save() { ObjectOutputStream oout = null; Member tm; ArrayList<String> booksBorrowed = new ArrayList<String>(); try { oout = new ObjectOutputStream(new FileOutputStream("members1.dat")); // Loop through memberMap and process each entry // Structure for writing // __________________________________________________________ // |String|String|String|Boolean or Double|ArrayList<String>| // ---------------------------------------------------------- for (Map.Entry<String, Member> entry : memberMap.entrySet()) { tm = entry.getValue(); oout.writeUTF(tm.getMemberID()); oout.writeUTF(tm.getName()); oout.writeUTF(tm.getPhoneNumber()); if (tm instanceof Staff) { oout.writeBoolean(((Staff) tm).isBookOverdue()); } else { oout.writeDouble(((Student) tm).getFinesOwing()); } for (LibraryBook b : tm.getBooklist()) { booksBorrowed.add(b.getBookNumber()); } oout.writeObject(booksBorrowed); } } catch (Exception e) { Log.e(e.getMessage()); } finally { try { oout.close(); } catch (IOException e) { Log.e(e.getMessage()); } } }