diff --git a/src/main/java/controllers/Main.java b/src/main/java/controllers/Main.java index b04d3b8..de278a9 100644 --- a/src/main/java/controllers/Main.java +++ b/src/main/java/controllers/Main.java @@ -47,6 +47,9 @@ public class Main extends Application { this.session.setDataManager(dataManager); } catch (IOException e){ + } catch (Exception e){ + //this exception is for when the files is formatted wrong. + this.session.setDataManager(new DataManager()); } //set up stage diff --git a/src/main/java/model/Route.java b/src/main/java/model/Route.java index 4aa4d09..a5c4b60 100644 --- a/src/main/java/model/Route.java +++ b/src/main/java/model/Route.java @@ -3,19 +3,30 @@ package model; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import java.util.ArrayList; + /** * Created by Gondr on 5/04/2017. */ public class Route { private String name; - private ObservableList stops; + private transient ObservableList stops; + private ArrayList serialisedStops; public Route(String name, ObservableList stops){ this.name = name; this.stops = FXCollections.observableArrayList(stops); } + public void serialise(){ + serialisedStops = new ArrayList<>(stops); + } + + public void deserialise(){ + stops = FXCollections.observableArrayList(serialisedStops); + } + public String getName() { return name; } diff --git a/src/main/java/utils/DataManagerSerialiser.java b/src/main/java/utils/DataManagerSerialiser.java index b47adc0..62d9404 100644 --- a/src/main/java/utils/DataManagerSerialiser.java +++ b/src/main/java/utils/DataManagerSerialiser.java @@ -6,10 +6,7 @@ import model.Ride; import model.Route; import model.Stop; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Type; @@ -36,6 +33,22 @@ public class DataManagerSerialiser extends Serialiser { return (serialRidesSuccess && serialStopsSuccess && serialRoutesSuccess); } + public boolean serialise(ArrayList routes, String filepath){ + for (Route route: routes){ + route.serialise(); + } + try{ + String path = getClass().getClassLoader().getResource(filepath).getPath(); + Writer writer = new OutputStreamWriter(new FileOutputStream(path), "UTF-8"); + gson.toJson(routes, writer); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + public DataManager load() throws IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { Reader reader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/rides.json"), "UTF-8"); ArrayList rides = gson.fromJson(reader, new TypeToken>(){}.getType()); @@ -49,6 +62,10 @@ public class DataManagerSerialiser extends Serialiser { ArrayList routes = gson.fromJson(reader3, new TypeToken>(){}.getType()); reader3.close(); + for (Route route: routes){ + route.deserialise(); + } + // Constructor c = DataManager.class.getDeclaredConstructor(List.class, List.class, List.class); // DataManager dataManager = (DataManager) c.newInstance(rides, stops, routes); // return dataManager; diff --git a/src/main/resources/serialisation/stops.json b/src/main/resources/serialisation/stops.json index 0637a08..e69de29 100644 --- a/src/main/resources/serialisation/stops.json +++ b/src/main/resources/serialisation/stops.json @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/target/classes/controllers/Main.class b/target/classes/controllers/Main.class index 09c1a98..7b1eda6 100644 Binary files a/target/classes/controllers/Main.class and b/target/classes/controllers/Main.class differ diff --git a/target/classes/model/Route.class b/target/classes/model/Route.class index db17f4a..0441ec8 100644 Binary files a/target/classes/model/Route.class and b/target/classes/model/Route.class differ diff --git a/target/classes/serialisation/routes.json b/target/classes/serialisation/routes.json index 0637a08..640688c 100644 --- a/target/classes/serialisation/routes.json +++ b/target/classes/serialisation/routes.json @@ -1 +1 @@ -[] \ No newline at end of file +[{"name":"University to Dorms","serialisedStops":[{"address":"1 University Drive"},{"address":"1 Homestead Lane"}]}] \ No newline at end of file diff --git a/target/classes/serialisation/stops.json b/target/classes/serialisation/stops.json index d67cb44..2684e1c 100644 --- a/target/classes/serialisation/stops.json +++ b/target/classes/serialisation/stops.json @@ -1 +1 @@ -[{"address":"a"},{"address":"b"}] \ No newline at end of file +[{"address":"1 University Drive"},{"address":"1 Homestead Lane"}] \ No newline at end of file diff --git a/target/classes/utils/DataManagerSerialiser$1.class b/target/classes/utils/DataManagerSerialiser$1.class index 9d77122..85fee9a 100644 Binary files a/target/classes/utils/DataManagerSerialiser$1.class and b/target/classes/utils/DataManagerSerialiser$1.class differ diff --git a/target/classes/utils/DataManagerSerialiser$2.class b/target/classes/utils/DataManagerSerialiser$2.class index cfbcec8..eca642d 100644 Binary files a/target/classes/utils/DataManagerSerialiser$2.class and b/target/classes/utils/DataManagerSerialiser$2.class differ diff --git a/target/classes/utils/DataManagerSerialiser$3.class b/target/classes/utils/DataManagerSerialiser$3.class index 3b1ef6b..b35dbb4 100644 Binary files a/target/classes/utils/DataManagerSerialiser$3.class and b/target/classes/utils/DataManagerSerialiser$3.class differ diff --git a/target/classes/utils/DataManagerSerialiser.class b/target/classes/utils/DataManagerSerialiser.class index a34c6af..ec04265 100644 Binary files a/target/classes/utils/DataManagerSerialiser.class and b/target/classes/utils/DataManagerSerialiser.class differ