Serialises Routes, stops and rides.

main
Fan-Wu Yang 9 years ago
parent 1f28bf2471
commit 63ac196488

@ -13,6 +13,11 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>controllers.Main</mainClass>
</manifest>
</archive>
<source>1.8</source>
<target>1.8</target>
</configuration>
@ -48,6 +53,12 @@
<version>1.2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>

@ -61,7 +61,7 @@ public class AddTripController extends Controller{
private void addTrip() throws Exception {
boolean[] days = {mon.isSelected(), tues.isSelected(), wed.isSelected(), thur.isSelected(), fri.isSelected(),
sat.isSelected(), sun.isSelected()};
boolean boolReoccur = reoccur.getValue() == "Yes"? true: false;
boolean boolReoccur = reoccur.getValue() == "Yes";
String failure = "";
if (stops.size() == 0){
failure += "You have not selected a route.\n";
@ -70,7 +70,7 @@ public class AddTripController extends Controller{
failure += "You must select a ride (vehicle) for this trip.\n";
}
if (failure != "") {
if (!failure.equals("")) {
Trip trip = new Trip(stops, direction.getValue(), ride.getValue(), days, boolReoccur, endDate.getValue().toString());
System.out.println(trip);
Optional<ButtonType> result = popUp(Alert.AlertType.WARNING, "Warning!", "Crucial Information missing", failure, ButtonSets.YesNo);

@ -1,15 +1,21 @@
package controllers;
import controllers.BaseController;
import controllers.Controller;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import model.DataManager;
import model.SceneCode;
import model.Session;
import utils.DataManagerSerialiser;
import java.io.IOException;
import java.io.InputStream;
@ -34,8 +40,14 @@ public class Main extends Application {
base = root;
baseController = (BaseController) loader.getController();
baseController.setParent(this);
this.session = new Session();
try{
DataManagerSerialiser dataManagerSerialiser = new DataManagerSerialiser();
DataManager dataManager = dataManagerSerialiser.load();
this.session.setDataManager(dataManager);
} catch (IOException e){
}
//set up stage
stage.setTitle("UC RSS");
@ -43,6 +55,12 @@ public class Main extends Application {
stage.setMinWidth(600);
stage.show();
stage.setOnCloseRequest(e -> {
DataManagerSerialiser dataManagerSerialiser = new DataManagerSerialiser();
dataManagerSerialiser.serialise(session.getDataManager());
Platform.exit();
});
}
/**
@ -89,4 +107,8 @@ public class Main extends Application {
public Stage getPrimaryStage() {
return primaryStage;
}
public static void main(String[] args) {
launch(args);
}
}

@ -6,6 +6,7 @@ import javafx.collections.ObservableList;
import javafx.collections.ObservableSet;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Gondr on 4/04/2017.
@ -15,10 +16,18 @@ public class DataManager {
private ObservableList<Stop> stops;
private ObservableList<Route> routes;
public DataManager(List rides, List stops, List routes){
this.rides = FXCollections.observableArrayList(rides);
this.stops = FXCollections.observableArrayList(stops);
this.routes = FXCollections.observableArrayList(routes);
}
public DataManager(){
rides = FXCollections.observableArrayList();
this(FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList());
/*rides = FXCollections.observableArrayList();
stops = FXCollections.observableArrayList();
routes = FXCollections.observableArrayList();
routes = FXCollections.observableArrayList();*/
}
public ObservableList<Ride> getRides() {

@ -0,0 +1,60 @@
package utils;
import com.google.gson.reflect.TypeToken;
import model.DataManager;
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.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by Gondr on 19/05/2017.
*/
public class DataManagerSerialiser extends Serialiser {
public DataManagerSerialiser(){
}
public boolean serialise(DataManager dataManager){
ArrayList<Ride> rides = new ArrayList<>(dataManager.getRides());
ArrayList<Stop> stops = new ArrayList<>(dataManager.getStops());
ArrayList<Route> routes = new ArrayList<>(dataManager.getRoutes());
boolean serialRidesSuccess = serialise(rides, "serialisation/rides.json");
boolean serialStopsSuccess = serialise(stops, "serialisation/stops.json");
boolean serialRoutesSuccess = serialise(routes, "serialisation/routes.json");
return (serialRidesSuccess && serialStopsSuccess && serialRoutesSuccess);
}
public DataManager load() throws IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Reader reader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/rides.json"), "UTF-8");
ArrayList<Ride> rides = gson.fromJson(reader, new TypeToken<ArrayList<Ride>>(){}.getType());
reader.close();
Reader reader2 = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/stops.json"), "UTF-8");
ArrayList<Stop> stops = gson.fromJson(reader2, new TypeToken<ArrayList<Stop>>(){}.getType());
reader2.close();
Reader reader3 = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/routes.json"), "UTF-8");
ArrayList<Route> routes = gson.fromJson(reader3, new TypeToken<ArrayList<Route>>(){}.getType());
reader3.close();
// Constructor c = DataManager.class.getDeclaredConstructor(List.class, List.class, List.class);
// DataManager dataManager = (DataManager) c.newInstance(rides, stops, routes);
// return dataManager;
return new DataManager(rides, stops, routes);
// return new DataManager();
}
}

@ -0,0 +1,31 @@
package utils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.io.*;
import java.lang.reflect.Type;
import java.util.List;
/**
* Created by Gondr on 19/05/2017.
*/
public abstract class Serialiser {
protected static Gson gson = new GsonBuilder().create();
protected boolean serialise(List list, String filepath){
try{
String path = getClass().getClassLoader().getResource(filepath).getPath();
Writer writer = new OutputStreamWriter(new FileOutputStream(path), "UTF-8");
gson.toJson(list, writer);
writer.close();
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
}

@ -0,0 +1 @@
{"rides":[],"stops":[{"address":"a"}],"routes":[]}

Binary file not shown.

@ -0,0 +1 @@
{"rides":[],"stops":[{"address":"a"}],"routes":[]}

@ -0,0 +1 @@
[{"address":"a"},{"address":"b"}]

@ -0,0 +1,5 @@
#Generated by Maven
#Fri May 19 15:51:59 NZST 2017
version=1.0-SNAPSHOT
groupId=ride-sharing-system
artifactId=ride-sharing-system

@ -0,0 +1,25 @@
controllers\HomeController.class
controllers\Main.class
controllers\MyStopsController.class
controllers\AddTripController$2.class
model\Session.class
model\Ride.class
model\Route.class
model\TripStop.class
controllers\MyRidesController.class
controllers\AddRouteController.class
controllers\AddRideController.class
model\ButtonSets.class
model\Trip.class
controllers\BaseController.class
model\SceneCode.class
controllers\AddTripController.class
model\DataManager.class
controllers\MyRoutesController.class
controllers\AddStopsController.class
controllers\MyRoutesController$1.class
controllers\MainController.class
model\Stop.class
controllers\AddTripController$1.class
controllers\Controller.class
model\ButtonTypes.class

@ -0,0 +1,22 @@
D:\Programming\Workspace\SENG301\src\main\java\controllers\AddTripController.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\HomeController.java
D:\Programming\Workspace\SENG301\src\main\java\model\Ride.java
D:\Programming\Workspace\SENG301\src\main\java\model\Stop.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\MyRoutesController.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\AddStopsController.java
D:\Programming\Workspace\SENG301\src\main\java\model\Session.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\AddRideController.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\MyRidesController.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\BaseController.java
D:\Programming\Workspace\SENG301\src\main\java\model\Trip.java
D:\Programming\Workspace\SENG301\src\main\java\model\DataManager.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\Main.java
D:\Programming\Workspace\SENG301\src\main\java\model\TripStop.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\Controller.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\MainController.java
D:\Programming\Workspace\SENG301\src\main\java\model\ButtonTypes.java
D:\Programming\Workspace\SENG301\src\main\java\model\Route.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\AddRouteController.java
D:\Programming\Workspace\SENG301\src\main\java\model\ButtonSets.java
D:\Programming\Workspace\SENG301\src\main\java\controllers\MyStopsController.java
D:\Programming\Workspace\SENG301\src\main\java\model\SceneCode.java

@ -0,0 +1,4 @@
RunCucumberTests.class
steps\PlaceholderSteps.class
model\DataManagerTest.class
controllers\MainControllerTest.class

@ -0,0 +1,4 @@
D:\Programming\Workspace\SENG301\src\test\java\steps\PlaceholderSteps.java
D:\Programming\Workspace\SENG301\src\test\java\RunCucumberTests.java
D:\Programming\Workspace\SENG301\src\test\java\model\DataManagerTest.java
D:\Programming\Workspace\SENG301\src\test\java\controllers\MainControllerTest.java

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" ?>
<testsuite tests="1" failures="0" name="controllers.MainControllerTest" time="0.008" errors="0" skipped="0">
<properties>
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
<property name="sun.boot.library.path" value="H:\Programs\Java\jdk1.8.0_102\jre\bin"/>
<property name="java.vm.version" value="25.102-b14"/>
<property name="java.vm.vendor" value="Oracle Corporation"/>
<property name="maven.multiModuleProjectDirectory" value="D:\Programming\Workspace\SENG301"/>
<property name="java.vendor.url" value="http://java.oracle.com/"/>
<property name="path.separator" value=";"/>
<property name="guice.disable.misplaced.annotation.check" value="true"/>
<property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
<property name="file.encoding.pkg" value="sun.io"/>
<property name="user.script" value=""/>
<property name="user.country" value="NZ"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="sun.os.patch.level" value=""/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="user.dir" value="D:\Programming\Workspace\SENG301"/>
<property name="java.runtime.version" value="1.8.0_102-b14"/>
<property name="java.awt.graphicsenv" value="sun.awt.Win32GraphicsEnvironment"/>
<property name="java.endorsed.dirs" value="H:\Programs\Java\jdk1.8.0_102\jre\lib\endorsed"/>
<property name="os.arch" value="amd64"/>
<property name="java.io.tmpdir" value="C:\Users\Gondr\AppData\Local\Temp\"/>
<property name="line.separator" value="
"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="user.variant" value=""/>
<property name="os.name" value="Windows 10"/>
<property name="classworlds.conf" value="H:\Programs\apache-maven-3.3.9\bin\m2.conf"/>
<property name="sun.jnu.encoding" value="Cp1252"/>
<property name="java.library.path" value="H:\Programs\Java\jdk1.8.0_102\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Razer Chroma SDK\bin;H:\Programs\Razer Chroma SDK\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;H:\Programs\Git\cmd;H:\Programs\Python;C:\TDM-GCC-64\bin;H:\Programs\apache-maven-3.3.9\bin;C:\Program Files (x86)\Skype\Phone\;."/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="java.class.version" value="52.0"/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="os.version" value="10.0"/>
<property name="user.home" value="C:\Users\Gondr"/>
<property name="user.timezone" value="Pacific/Auckland"/>
<property name="java.awt.printerjob" value="sun.awt.windows.WPrinterJob"/>
<property name="java.specification.version" value="1.8"/>
<property name="file.encoding" value="Cp1252"/>
<property name="user.name" value="Gondr"/>
<property name="java.class.path" value="H:\Programs\apache-maven-3.3.9\boot\plexus-classworlds-2.5.2.jar"/>
<property name="java.vm.specification.version" value="1.8"/>
<property name="sun.arch.data.model" value="64"/>
<property name="java.home" value="H:\Programs\Java\jdk1.8.0_102\jre"/>
<property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher clean package"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="user.language" value="en"/>
<property name="awt.toolkit" value="sun.awt.windows.WToolkit"/>
<property name="java.vm.info" value="mixed mode"/>
<property name="java.version" value="1.8.0_102"/>
<property name="java.ext.dirs" value="H:\Programs\Java\jdk1.8.0_102\jre\lib\ext;C:\Windows\Sun\Java\lib\ext"/>
<property name="sun.boot.class.path" value="H:\Programs\Java\jdk1.8.0_102\jre\lib\resources.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\rt.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\sunrsasign.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\jsse.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\jce.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\charsets.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\jfr.jar;H:\Programs\Java\jdk1.8.0_102\jre\classes"/>
<property name="sun.stderr.encoding" value="cp850"/>
<property name="java.vendor" value="Oracle Corporation"/>
<property name="maven.home" value="H:\Programs\apache-maven-3.3.9"/>
<property name="file.separator" value="\"/>
<property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
<property name="sun.cpu.endian" value="little"/>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
<property name="sun.stdout.encoding" value="cp850"/>
<property name="sun.desktop" value="windows"/>
<property name="sun.cpu.isalist" value="amd64"/>
</properties>
<testcase classname="controllers.MainControllerTest" name="testLogin" time="0.008"/>
</testsuite>

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" ?>
<testsuite tests="3" failures="0" name="model.DataManagerTest" time="0.049" errors="0" skipped="0">
<properties>
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
<property name="sun.boot.library.path" value="H:\Programs\Java\jdk1.8.0_102\jre\bin"/>
<property name="java.vm.version" value="25.102-b14"/>
<property name="java.vm.vendor" value="Oracle Corporation"/>
<property name="maven.multiModuleProjectDirectory" value="D:\Programming\Workspace\SENG301"/>
<property name="java.vendor.url" value="http://java.oracle.com/"/>
<property name="path.separator" value=";"/>
<property name="guice.disable.misplaced.annotation.check" value="true"/>
<property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
<property name="file.encoding.pkg" value="sun.io"/>
<property name="user.script" value=""/>
<property name="user.country" value="NZ"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="sun.os.patch.level" value=""/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="user.dir" value="D:\Programming\Workspace\SENG301"/>
<property name="java.runtime.version" value="1.8.0_102-b14"/>
<property name="java.awt.graphicsenv" value="sun.awt.Win32GraphicsEnvironment"/>
<property name="java.endorsed.dirs" value="H:\Programs\Java\jdk1.8.0_102\jre\lib\endorsed"/>
<property name="os.arch" value="amd64"/>
<property name="java.io.tmpdir" value="C:\Users\Gondr\AppData\Local\Temp\"/>
<property name="line.separator" value="
"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="user.variant" value=""/>
<property name="os.name" value="Windows 10"/>
<property name="classworlds.conf" value="H:\Programs\apache-maven-3.3.9\bin\m2.conf"/>
<property name="sun.jnu.encoding" value="Cp1252"/>
<property name="java.library.path" value="H:\Programs\Java\jdk1.8.0_102\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Razer Chroma SDK\bin;H:\Programs\Razer Chroma SDK\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;H:\Programs\Git\cmd;H:\Programs\Python;C:\TDM-GCC-64\bin;H:\Programs\apache-maven-3.3.9\bin;C:\Program Files (x86)\Skype\Phone\;."/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="java.class.version" value="52.0"/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="os.version" value="10.0"/>
<property name="user.home" value="C:\Users\Gondr"/>
<property name="user.timezone" value="Pacific/Auckland"/>
<property name="java.awt.printerjob" value="sun.awt.windows.WPrinterJob"/>
<property name="java.specification.version" value="1.8"/>
<property name="file.encoding" value="Cp1252"/>
<property name="user.name" value="Gondr"/>
<property name="java.class.path" value="H:\Programs\apache-maven-3.3.9\boot\plexus-classworlds-2.5.2.jar"/>
<property name="java.vm.specification.version" value="1.8"/>
<property name="sun.arch.data.model" value="64"/>
<property name="java.home" value="H:\Programs\Java\jdk1.8.0_102\jre"/>
<property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher clean package"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="user.language" value="en"/>
<property name="awt.toolkit" value="sun.awt.windows.WToolkit"/>
<property name="java.vm.info" value="mixed mode"/>
<property name="java.version" value="1.8.0_102"/>
<property name="java.ext.dirs" value="H:\Programs\Java\jdk1.8.0_102\jre\lib\ext;C:\Windows\Sun\Java\lib\ext"/>
<property name="sun.boot.class.path" value="H:\Programs\Java\jdk1.8.0_102\jre\lib\resources.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\rt.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\sunrsasign.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\jsse.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\jce.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\charsets.jar;H:\Programs\Java\jdk1.8.0_102\jre\lib\jfr.jar;H:\Programs\Java\jdk1.8.0_102\jre\classes"/>
<property name="sun.stderr.encoding" value="cp850"/>
<property name="java.vendor" value="Oracle Corporation"/>
<property name="maven.home" value="H:\Programs\apache-maven-3.3.9"/>
<property name="file.separator" value="\"/>
<property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
<property name="sun.cpu.endian" value="little"/>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
<property name="sun.stdout.encoding" value="cp850"/>
<property name="sun.desktop" value="windows"/>
<property name="sun.cpu.isalist" value="amd64"/>
</properties>
<testcase classname="model.DataManagerTest" name="addRoute" time="0.049"/>
<testcase classname="model.DataManagerTest" name="addRide" time="0"/>
<testcase classname="model.DataManagerTest" name="addStop" time="0"/>
</testsuite>

@ -0,0 +1,4 @@
-------------------------------------------------------------------------------
Test set: controllers.MainControllerTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.061 sec

@ -0,0 +1,4 @@
-------------------------------------------------------------------------------
Test set: model.DataManagerTest
-------------------------------------------------------------------------------
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.05 sec
Loading…
Cancel
Save