/** * Collects files with a certain extension in a * specified directory and loads the contents into * memory. * * @author Zach Hudson * @date October 18, 2013 */ package io; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import objects.MyCourse; import io.parseXML; public class Preloader { private static String directory = "gradebooks"; private static File directoryFolder = new File(directory); private static File[] files; private static ArrayList<MyCourse> courses = new ArrayList<MyCourse>(); /** * Constructs a new Preloader object with a default String directory. * Default directory: gradebooks * * @param extension string designating what type of file to look for. */ public Preloader(String extension) { if (loadFiles(extension)) loadFileContents(); } /** * Constructs a new Preloader object. * * @param extension string designating what type of file to look for. * @param dir string designating what directory to look into. */ public Preloader(String extension, String dir) { directory = dir; if (loadFiles(extension)) loadFileContents(); } /** * Set the directory to be looked into. * * @param dir string designating what directory to look into. */ public boolean setDirectory(String dir) { File folder = new File(dir); if (folder.isDirectory()) { directoryFolder = folder; return true; } return false; } /** * Loads all files with specified extension into a File[] object * from the directory. * * @param extension string designating what type of files to load. */ public boolean loadFiles(final String extension) { try { files = directoryFolder.listFiles(new FilenameFilter() { public boolean accept(File dir, String filename) {return filename.endsWith(extension);} }); return true; } catch (Exception e) { System.out.println(e); } return false; } /** * @return File array * */ public File[] geFilesArray() { return files; } /** * @return MyCourse array * */ public ArrayList<MyCourse> getCourseArray() { return courses; } /** * @param index int * @return a single MyCourse object. */ public MyCourse getCourse(int index) { if (courses != null && index >= 0 && index < courses.size()) return courses.get(index); return null; } /** * @return File which was most recently modified * */ public File getLastUpdated() { File current = files[0]; for (int i = 1; i < files.length; i++) { if (current.lastModified() < files[i].lastModified()) current = files[i]; } return current; } /** * Populates MyCourse[] courses * */ private void loadFileContents() { for (int i = 0; i < files.length; i++) { try { courses.add(parseXML.loadXML(files[i])); } catch (Exception e) { System.out.println(e); } } } /** * @return a string of canonical paths from File[] files. * Note: New line for each file. * */ private String listPathsToString() { String out =""; for (int i = 0; i < files.length; i++) { try { out = out + "\n" + files[i].getCanonicalPath(); } catch (Exception e) { System.out.println(e); } } return out; } }