package model.persistance; import java.io.*; import java.nio.file.*; import java.util.*; import model.*; public class IliasTreeStorage { private static final String ILIAS_STORE_FOLDER = System.getProperty("user.home") + "/" + ".ilias"; private static final String TIME_STORE_PATH = ILIAS_STORE_FOLDER + "/" + "time.ser"; private static final String COURSES_STORE_PATH = ILIAS_STORE_FOLDER + "/" + "dirs.ser"; private static List<IliasFolder> allFiles; public static void storeAllFiles(List<IliasFolder> allFiles) { serialize(allFiles, COURSES_STORE_PATH); } @SuppressWarnings("unchecked") public static List<IliasFolder> getTree() { if (allFiles == null && new File(COURSES_STORE_PATH).exists()) { allFiles = (List<IliasFolder>) deserialize(COURSES_STORE_PATH); } return allFiles; } public static String getActualisationDate() { if (!new File(TIME_STORE_PATH).exists()) { return "Letzte Aktualisierung: -"; } final ActualisationDate actualisationDate = (ActualisationDate) deserialize(TIME_STORE_PATH); return actualisationDate.toString(); } public static void setActualisationDate() { serialize(new ActualisationDate(), TIME_STORE_PATH); } private static Object deserialize(String path) { Object object = null; try { final FileInputStream fileInputStream = new FileInputStream(new File(path)); ObjectInputStream o = new ObjectInputStream(fileInputStream); object = o.readObject(); o.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return object; } private static void serialize(Object object, String path) { createStorageFolder(); ObjectOutputStream out = null; try { FileOutputStream output = new FileOutputStream(path); out = new ObjectOutputStream(output); out.writeObject(object); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void createStorageFolder() { File file = new File(ILIAS_STORE_FOLDER); if (!file.exists()) { file.mkdir(); } if (System.getProperty("os.name").toLowerCase().contains("windows")) { try { Files.setAttribute(file.toPath(), "dos:hidden", true); } catch (IOException e) { e.printStackTrace(); } } } }