YOu can now add trips and you can also serialise them.
This commit is contained in:
@@ -63,17 +63,32 @@ public class AddTripController extends Controller{
|
|||||||
sat.isSelected(), sun.isSelected()};
|
sat.isSelected(), sun.isSelected()};
|
||||||
boolean boolReoccur = reoccur.getValue() == "Yes";
|
boolean boolReoccur = reoccur.getValue() == "Yes";
|
||||||
String failure = "";
|
String failure = "";
|
||||||
|
boolean fail = false;
|
||||||
if (stops.size() == 0){
|
if (stops.size() == 0){
|
||||||
failure += "You have not selected a route.\n";
|
failure += "You have not selected a route.\n";
|
||||||
|
fail = true;
|
||||||
}
|
}
|
||||||
if (ride.getValue() == null){
|
if (ride.getValue() == null){
|
||||||
failure += "You must select a ride (vehicle) for this trip.\n";
|
failure += "You must select a ride (vehicle) for this trip.\n";
|
||||||
|
fail = true;
|
||||||
|
}
|
||||||
|
for (TripStop stop: stops){
|
||||||
|
if (stop.getTime().equals("")){
|
||||||
|
failure += "You must have all times for stops filled out.\n";
|
||||||
|
fail = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!failure.equals("")) {
|
if (!fail) {
|
||||||
Trip trip = new Trip(stops, direction.getValue(), ride.getValue(), days, boolReoccur, endDate.getValue().toString());
|
String date = "";
|
||||||
|
if (endDate.getValue() != null && boolReoccur == true){
|
||||||
|
date = endDate.getValue().toString();
|
||||||
|
}
|
||||||
|
Trip trip = new Trip(stops, direction.getValue(), ride.getValue(), days, boolReoccur, date);
|
||||||
System.out.println(trip);
|
System.out.println(trip);
|
||||||
Optional<ButtonType> result = popUp(Alert.AlertType.WARNING, "Warning!", "Crucial Information missing", failure, ButtonSets.YesNo);
|
Optional<ButtonType> result = popUp(Alert.AlertType.WARNING, "Warning!", "Crucial Information missing", failure, ButtonSets.YesNo);
|
||||||
|
parent.getSession().getDataManager().addTrip(trip);
|
||||||
if (result.get() == ButtonTypes.No){
|
if (result.get() == ButtonTypes.No){
|
||||||
System.out.println("My Trips page to show up and impletmeneted");//TODO implement here.
|
System.out.println("My Trips page to show up and impletmeneted");//TODO implement here.
|
||||||
//changeScene(SceneCode.MY_TRIPS);
|
//changeScene(SceneCode.MY_TRIPS);
|
||||||
|
|||||||
@@ -15,19 +15,17 @@ public class DataManager {
|
|||||||
private ObservableList<Ride> rides;
|
private ObservableList<Ride> rides;
|
||||||
private ObservableList<Stop> stops;
|
private ObservableList<Stop> stops;
|
||||||
private ObservableList<Route> routes;
|
private ObservableList<Route> routes;
|
||||||
|
private ObservableList<Trip> trips;
|
||||||
|
|
||||||
|
public DataManager(List rides, List stops, List routes, List trips){
|
||||||
public DataManager(List rides, List stops, List routes){
|
|
||||||
this.rides = FXCollections.observableArrayList(rides);
|
this.rides = FXCollections.observableArrayList(rides);
|
||||||
this.stops = FXCollections.observableArrayList(stops);
|
this.stops = FXCollections.observableArrayList(stops);
|
||||||
this.routes = FXCollections.observableArrayList(routes);
|
this.routes = FXCollections.observableArrayList(routes);
|
||||||
|
this.trips = FXCollections.observableArrayList(trips);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataManager(){
|
public DataManager(){
|
||||||
this(FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList());
|
this(FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList());
|
||||||
/*rides = FXCollections.observableArrayList();
|
|
||||||
stops = FXCollections.observableArrayList();
|
|
||||||
routes = FXCollections.observableArrayList();*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObservableList<Ride> getRides() {
|
public ObservableList<Ride> getRides() {
|
||||||
@@ -74,4 +72,18 @@ public class DataManager {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ObservableList<Trip> getTrips() {
|
||||||
|
return trips;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean addTrip(Trip trip){
|
||||||
|
for (Trip t: trips){
|
||||||
|
if (trip.equals(t)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
trips.add(trip);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,16 @@ public class Route {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Route clone(){
|
||||||
|
ObservableList<Stop> stopObservableList = FXCollections.observableArrayList();
|
||||||
|
for (Stop stop: stops){
|
||||||
|
stopObservableList.add(stop.clone());
|
||||||
|
}
|
||||||
|
Route route = new Route(this.name, stopObservableList);
|
||||||
|
return route;
|
||||||
|
}
|
||||||
|
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,4 +30,9 @@ public class Stop {
|
|||||||
public String toString(){
|
public String toString(){
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stop clone(){
|
||||||
|
return new Stop(this.getAddress());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,23 @@
|
|||||||
package model;
|
package model;
|
||||||
|
|
||||||
|
import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Gondr on 5/04/2017.
|
* Created by Gondr on 5/04/2017.
|
||||||
*/
|
*/
|
||||||
public class Trip {
|
public class Trip {
|
||||||
|
|
||||||
ObservableList<TripStop> route;
|
protected transient ObservableList<TripStop> route;
|
||||||
String direction;
|
private ArrayList<TripStop> serialisedRoute;
|
||||||
Ride ride;
|
protected String direction;
|
||||||
boolean[] days;
|
protected Ride ride;
|
||||||
boolean reoccur;
|
protected boolean[] days;
|
||||||
String endDate;
|
protected boolean reoccur;
|
||||||
|
protected String endDate;
|
||||||
|
|
||||||
static int MONDAY = 0;
|
static int MONDAY = 0;
|
||||||
static int TUESDAY = 1;
|
static int TUESDAY = 1;
|
||||||
@@ -36,4 +41,31 @@ public class Trip {
|
|||||||
return tripString;
|
return tripString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean equals(Trip trip){
|
||||||
|
if (trip.direction.equals(direction) && ride.equals(trip.ride) && Arrays.equals(trip.days,days) && trip.reoccur == reoccur
|
||||||
|
&& trip.endDate.equals(endDate)){
|
||||||
|
for (int i = 0; i < trip.route.size(); i++){
|
||||||
|
if (!route.get(i).equals(trip.route.get(i))){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void serialise(){
|
||||||
|
serialisedRoute = new ArrayList<>(route);
|
||||||
|
for (TripStop trip: serialisedRoute){
|
||||||
|
trip.serialise();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deserialise(){
|
||||||
|
route = FXCollections.observableArrayList(serialisedRoute);
|
||||||
|
for (TripStop trip: serialisedRoute){
|
||||||
|
trip.deserialise();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,10 @@ import javafx.collections.ObservableList;
|
|||||||
*/
|
*/
|
||||||
public class TripStop{
|
public class TripStop{
|
||||||
|
|
||||||
private StringProperty time;
|
private transient StringProperty time;
|
||||||
private StringProperty name;
|
private transient StringProperty name;
|
||||||
|
private String serialiseTime;
|
||||||
|
private String serialiseName;
|
||||||
|
|
||||||
public TripStop(String name, String time){
|
public TripStop(String name, String time){
|
||||||
this.name = new SimpleStringProperty(name);
|
this.name = new SimpleStringProperty(name);
|
||||||
@@ -36,4 +38,20 @@ public class TripStop{
|
|||||||
public StringProperty nameProperty() {
|
public StringProperty nameProperty() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean equals(TripStop trip){
|
||||||
|
if (getTime().equals(trip.getTime()) && getName().equals(trip.getName())){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void serialise(){
|
||||||
|
serialiseTime = time.getValue();
|
||||||
|
serialiseName = name.getValue();
|
||||||
|
}
|
||||||
|
public void deserialise(){
|
||||||
|
time = new SimpleStringProperty(serialiseTime);
|
||||||
|
name = new SimpleStringProperty(serialiseName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
package utils;
|
package utils;
|
||||||
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
import model.DataManager;
|
import model.*;
|
||||||
import model.Ride;
|
|
||||||
import model.Route;
|
|
||||||
import model.Stop;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
@@ -23,17 +20,30 @@ public class DataManagerSerialiser extends Serialiser {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* serialise DataManger
|
||||||
|
* @param dataManager
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public boolean serialise(DataManager dataManager){
|
public boolean serialise(DataManager dataManager){
|
||||||
ArrayList<Ride> rides = new ArrayList<>(dataManager.getRides());
|
ArrayList<Ride> rides = new ArrayList<>(dataManager.getRides());
|
||||||
ArrayList<Stop> stops = new ArrayList<>(dataManager.getStops());
|
ArrayList<Stop> stops = new ArrayList<>(dataManager.getStops());
|
||||||
ArrayList<Route> routes = new ArrayList<>(dataManager.getRoutes());
|
ArrayList<Route> routes = new ArrayList<>(dataManager.getRoutes());
|
||||||
|
ArrayList<Trip> trips = new ArrayList<>(dataManager.getTrips());
|
||||||
boolean serialRidesSuccess = serialise(rides, "serialisation/rides.json");
|
boolean serialRidesSuccess = serialise(rides, "serialisation/rides.json");
|
||||||
boolean serialStopsSuccess = serialise(stops, "serialisation/stops.json");
|
boolean serialStopsSuccess = serialise(stops, "serialisation/stops.json");
|
||||||
boolean serialRoutesSuccess = serialise(routes, "serialisation/routes.json");
|
boolean serialRoutesSuccess = serialiseRoutes(routes, "serialisation/routes.json");
|
||||||
return (serialRidesSuccess && serialStopsSuccess && serialRoutesSuccess);
|
boolean serialTripsSuccess = serialiseTrips(trips, "serialisation/trips.json");
|
||||||
|
return (serialRidesSuccess && serialStopsSuccess && serialRoutesSuccess && serialTripsSuccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean serialise(ArrayList<Route> routes, String filepath){
|
/**
|
||||||
|
* Serialises routes
|
||||||
|
* @param routes Routes to be serialised
|
||||||
|
* @param filepath File path to serialise it to.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean serialiseRoutes(ArrayList<Route> routes, String filepath){
|
||||||
for (Route route: routes){
|
for (Route route: routes){
|
||||||
route.serialise();
|
route.serialise();
|
||||||
}
|
}
|
||||||
@@ -49,6 +59,37 @@ public class DataManagerSerialiser extends Serialiser {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serialises trips
|
||||||
|
* @param trips Trips to be serialised
|
||||||
|
* @param filepath File path to serialise it to.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean serialiseTrips(ArrayList<Trip> trips, String filepath){
|
||||||
|
for (Trip trip: trips){
|
||||||
|
trip.serialise();
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
String path = getClass().getClassLoader().getResource(filepath).getPath();
|
||||||
|
Writer writer = new OutputStreamWriter(new FileOutputStream(path), "UTF-8");
|
||||||
|
gson.toJson(trips, writer);
|
||||||
|
writer.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* loads the data manager from file
|
||||||
|
* @return whether the data was loaded properly or not
|
||||||
|
* @throws IOException No File
|
||||||
|
* @throws NoSuchMethodException No Method to Write
|
||||||
|
* @throws IllegalAccessException No access allowed to file
|
||||||
|
* @throws InvocationTargetException Thread error
|
||||||
|
* @throws InstantiationException Nothing set
|
||||||
|
*/
|
||||||
public DataManager load() throws IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
|
public DataManager load() throws IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
|
||||||
Reader reader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/rides.json"), "UTF-8");
|
Reader reader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/rides.json"), "UTF-8");
|
||||||
ArrayList<Ride> rides = gson.fromJson(reader, new TypeToken<ArrayList<Ride>>(){}.getType());
|
ArrayList<Ride> rides = gson.fromJson(reader, new TypeToken<ArrayList<Ride>>(){}.getType());
|
||||||
@@ -66,12 +107,15 @@ public class DataManagerSerialiser extends Serialiser {
|
|||||||
route.deserialise();
|
route.deserialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constructor c = DataManager.class.getDeclaredConstructor(List.class, List.class, List.class);
|
Reader reader4 = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/trips.json"), "UTF-8");
|
||||||
// DataManager dataManager = (DataManager) c.newInstance(rides, stops, routes);
|
ArrayList<Trip> trips = gson.fromJson(reader4, new TypeToken<ArrayList<Trip>>(){}.getType());
|
||||||
// return dataManager;
|
reader4.close();
|
||||||
|
|
||||||
return new DataManager(rides, stops, routes);
|
for (Trip trip: trips){
|
||||||
// return new DataManager();
|
trip.deserialise();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new DataManager(rides, stops, routes, trips);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
{"rides":[],"stops":[{"address":"a"}],"routes":[]}
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
|||||||
{"rides":[],"stops":[{"address":"a"}],"routes":[]}
|
|
||||||
@@ -1 +1 @@
|
|||||||
[]
|
[{"model":"Nissan March","colour":"Baby Blue","licensePlate":"H19405661","year":2004,"numSeats":4}]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[{"serialisedRoute":[{"serialiseTime":"3:00","serialiseName":"1 University Drive"},{"serialiseTime":"3:10","serialiseName":"1 Homestead Lane"}],"direction":"Home","ride":{"model":"Nissan March","colour":"Baby Blue","licensePlate":"H19405661","year":2004,"numSeats":4},"days":[true,false,false,false,false,false,false],"reoccur":false,"endDate":""}]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user