From 6a4fb731d5690efa1a2a2eb539d50a4944794746 Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Fri, 19 May 2017 19:59:40 +1200 Subject: [PATCH] Fixed Serialization not working where there was an JSON read exception, and fixed the Serialisation not working for Routes --- src/main/java/controllers/Main.java | 3 +++ src/main/java/model/Route.java | 13 ++++++++- .../java/utils/DataManagerSerialiser.java | 25 +++++++++++++++--- src/main/resources/serialisation/stops.json | 1 - target/classes/controllers/Main.class | Bin 4473 -> 4581 bytes target/classes/model/Route.class | Bin 1363 -> 1706 bytes target/classes/serialisation/routes.json | 2 +- target/classes/serialisation/stops.json | 2 +- .../utils/DataManagerSerialiser$1.class | Bin 653 -> 653 bytes .../utils/DataManagerSerialiser$2.class | Bin 653 -> 653 bytes .../utils/DataManagerSerialiser$3.class | Bin 654 -> 654 bytes .../classes/utils/DataManagerSerialiser.class | Bin 2809 -> 4053 bytes 12 files changed, 38 insertions(+), 8 deletions(-) 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 09c1a98a84e0f767e55344f50de672512784a75f..7b1eda6afb0a631b2724b331c0319b0de1a64d54 100644 GIT binary patch delta 2028 zcmZvc2Y6IP5XXP-+B;qr5W@lz+{{P)~pu@h7sojURYzKN9 zro{jjHK9K#EiP)pVwPBRoXDI=xH1x(9v(VxT6A`DW;|x! z;W;Ts;&up70)`%oTMewnfW!*#jaHq><0enYnf5C0R(p!C&(XsvRh-N)#XyQp>J(2h zLs3rDUhB*5^_1dio-x^}*u}F38Hs7pSTqry8c9UESInDLX|h}K9M3C;^Mc|w zT1Zc}KhS*iSA4DbMvLKmtN4!Z6+dY4BR?6mo)(WKtKyZF(W*qaq)}J=tSkM(9L2AC z&foamYyI9}8&BFH z#bLv%n9l;+N-Hq@c5&K%U%;S~y(cZlE>-zO{pBTrACKl$G!H_Fy9yibD%iWLkT0u= zA@h`q9AVd}>=QG4=8cr3+-to+&K=yhPqc;ob%M$vrj6$xZi0cKVJ1KGd9VSzqCNFIaW2L{d zXd>1)!6ZgAPG`LMq~nHZw04FdWspmX338%`&dimp!P3Lo5}AWHby&{#nM^d9WHQ-g z3WiB!h{@D+rb&!X^0Vb%o=*cZj}UZ`*;Y$Hfap@z)xmTK%H*Quos!?pA-|5Mg+5Wb zRig_1S_%1gNJRHrC=w7oJIU!V(ql-|~%I>)OGhk|^E^g8+!`a}L_XcqEIhbM&m4t+Hh7f&ZaxwEW21m(Vh^FYCPf?!%MSk4v%=Q5FNn9R*gWwoHSMs{ih zr%hC_l^KnUwHMYZ1a-~Mwnlcg3Gy=p*N&c(C zT;@TBM}HF!o-Ij$RUHe3YxLa)f#aJyd_i!)w{SCoCk}m)N delta 1937 zcmZvc2Y6IP5XXP-+Pge95C{TCkpLoa2^^hpbdZFSfD(}+mXI6<3|!zsRXo9hD2jTD zU{{n_5D9@7Bs3cc_TIaw*c&R+oPEa^6us|zJ2Sg8v;XFF1J|3Vv8%d($7^ESF^;z$2EFcYI3a(xK10(Os?0)4HjuE zH@VRwJ(=_-lbbCXu|O{gy?u+xt^PPGEN)|^Z{U1EAwO-c@(o#ag{Qrtz%P;g6fFx9G-ly;NEO0lPt? zsnWPMT5Q5LsW#bM)!JBUBzC)ov=HkF;XvvX#0J*Tc}0=3@~P1oF_SHccJ38cjmcJ% zZIU{%+r8CgL=uZU*(EvTD$Zc2qA&eSY82ZkQe41=292f_&MBNSFEnM|^wLny`24)Q zXkl?=mdOsqPM$P*O7S$$7^KCDA~Pbf(B#5cq?7hGc~-HD-HIHZQ|w`HqLsIazdr*M z&x}6um(q?<+1Wvg=P7X@{(wAte%gz(|D(z$-8OH zR=mgiiVyfu@ev;@KH*c1^)n$#@j1PPnJ?I9(BL=^PL-hoU8~|tzEXUxmmKyhzTsQN zcY67r9};n2v!*|4W`AO);%8mQFZ^oqo8kbuiH*LIMtY*sm0oqkcgS%6&L4?G{^ss5 ze^xb3Y3{0XQ1KT>73IuM464(^AThVje#1xy>|ICVgiuQOBWL6n}%p_fcWw#>4OD+3)Q{pGT=WjIE2rd)h3DV)U^;XnW!N2j#{;lm(< zQt=%twX~Pp&Jk|hj1$iQu48hM$7H<81e1xTBr;4U#SPArbC1NHFQ2@8iPc4}!|xQi ztp?wOYEI7&+L$(esjHn$`%zgPZ942EHS7^3Sb++AwG!~|5Rc4N^a*anwVM{f8nPyc zUUvf>mu#TZl4?RiduH{jhx-GEoHb`N-MdQ?g^jcFxpAYagtN&d&sQ1*t$rOXlHk}po9X)6@B7uiK9 z&K8mf2(1%@&SD|4OtiU7WI2;qDMYOns@76SC6lS9h^<7Nb`6t9*Gj%ZiT219+iIJ% zO+1T)WWW4{C7aZk_!>zbkuG(S9wtN9QlBZ(EU(kK4)~7=rex`???PH%IkMY0J?vtZS z|0g&_h?;pkxSPo2)tl*g@~D*wJ2Q!&m^Cl6h(Vf5PyX=?lLf6?FgK~8k-Wmj`B}OO zn_f2A<2KX#MA8Nh*?olEzS7x#($fA8x{PFeZ4;WvjLnto{^Ue;axR$X&@!JRA}u*Q W#4!%b(A+7u{v)_clHAQb-1|3UWOL;J diff --git a/target/classes/model/Route.class b/target/classes/model/Route.class index db17f4a6b336391464c4daed638e0f36e1c065a3..0441ec84a84a718ff1997254c4ab37f95ab40a62 100644 GIT binary patch literal 1706 zcmbVN+fEZv6kVscp=FR#Xca+05orrjxu{67YDjphkXS>Mw`m#c;IvcQDUnzI!VmC` z2TcTwCVqe)Wn5=w>G%jJO#T~Y8*!Ky%@s#SD>Sbk62*D|J7EoTaL-Kdtc0>OrD)fxg*&X=#> zXG)f7>LuH-s*TK6v7y)ZwW6u#jfTzWaKR{7HM?0S+`{=8Yx#<`tDCH5)v`I}4-(JN zOrxRiN+0XST~bZkFf&i=cW1c-{zLshJchn(R_3wZn0% zOTnmL!PZJ|pJ_Eu);`;EM^YeCu$uLfzG28ah&Tez%fVHVz@&-+TvCu#v4%$~1`!n) zcE-AUQe<#W#V|%x+{BcMTbNccgU6K3ok<6n9NTYVtGLI(7nqc;9%(jSuD9O>OIod$ z(HdHTtasNAm3DmAy^bElQ*UeZU)j9sc;^(kJhQ1C+~8AJ`P<-!PwGPJgOmgUL$rN} z@k0q(=QtGF30$WC3L~oA{oG^e6NvQe5q#;nZ}1->@P%GKM&)-1a2?_rLzrko#Jft* zq??H`jPoSpBm?1Cl7kP|Xsa!c;h3*~VoC{mO_FbWjkHzu2%y;$>$XYdy+ IB_+D^2kOgeYXATM delta 569 zcmZutIZnes6n)-e;!IW&vt%PA;4FZFq@$srM9?8bXAlBKYz0E1;sP|t6$hX}DJW11 z3JyTa5h%F>;>{S5CK~C_)Bpc1GtbFSr~C2q_70$jo`X0R;+Vjq0}oA!S`JHFmX4e* z*;ux*^00XymbCBC)4v)S_yP_RHdY1Jur45w6qv!RKoKQ@3cBHrQ8$fdYcISsZnp}} z?S60*_-DbziNAZ;KR&wNXdR$NlQ@IuJk(Q&QqYi6I1P(9gDmH{aNn#4lkDeUvZh$m zWXow5d3NStsA&N%Z@DKmHHDy62)QB}UG F@e38XFWvwE 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 9d77122adad41e6e64f065228d0534065bb27689..85fee9a251db8cb435a0bb1dd6146cdc44508600 100644 GIT binary patch delta 13 UcmeBW?PcBI!o+Ac*_Fuy02+(~bN~PV delta 13 UcmeBW?PcBI!o;XK*_Fuy02)gJX8-^I diff --git a/target/classes/utils/DataManagerSerialiser$2.class b/target/classes/utils/DataManagerSerialiser$2.class index cfbcec886d82de1d052bf632bd99228d917b6b19..eca642d5bb7037b00a8313448790f4e4f37c01d5 100644 GIT binary patch delta 13 UcmeBW?PcBI!o+Ab*_Fuy02-hJcmMzZ delta 13 UcmeBW?PcBI!o;XM*_Fuy02*HdYXATM diff --git a/target/classes/utils/DataManagerSerialiser$3.class b/target/classes/utils/DataManagerSerialiser$3.class index 3b1ef6b2f150f975d00e6fd8d792f9c4b8d03761..b35dbb40f323fdb0b85094009dbeaaa2589a0bb6 100644 GIT binary patch delta 13 UcmeBU?PJ~G%EV|l*^S8q02IB5uXAI=*5cE+28xsl&34=OyG9biAnJ zs~XIqT+Vg}vsR&C7c@jpXL1?ujE35__DKz)L1)I+P?yZ)?2*NVY1^H!rn8jPC!Lg) zowVGHdtvhCNlZG=$yEj0D|~oVPAn30XBU;JVi3WTxP8p>V--@{*M6EPA3?@2@;2 zX5)*glwF`u<7&agxagNB_5|9>xGZhlnEB;=Df_#sMR7U^T$b!V!%sKW{#4LeG)D*r5g-ty+8 z)C%27D?<8|oAGQ{!!Ca|<0Kwc5~iq;A3;ed9vXdUDP`xqjFaPBbT*T<#jlR9k<}!_ zcqW~*yhWErr>aI>hA>F`_HcwRp{!%gaNV}{s#J-%wl%Xc-Z3R%Ou9dJqCD!+@pTPG zIqrgvZ|L}@j&JGsHYdiNMK@)iWhNT-S7mv(KxU!`C&}F^esn4#O-By4uv~Qx%&xgXjTHXAx9iGrnzC;n{#H$eAUpht}&F&+G#60pt@a! zO2@j2YtLrwl$RLFU1C=k?oC*3+V(26D;?$vo|W@5O0hyEN(Z!j}Xs_(c;?Q|Ek$5H`V(=RN9k|UtR;#q}c6-{uIp{Hkp@fwhJJ3LA4Mv3u8&TGL@^~o2k>o zBdWb`%r-a{q>)y^m1XG&Y`<$2hVO*||oTq{M%o(cp93VtKg z&|WQRe?93+>#c{OmyXy?6BW^wj#%Q*(zfNDNcb)lnc!`LU3LQ_N}E&WxNLORbryVZ zPOq23?+lei*kBg0p%O*8VcDfagNybA&NlC>|Nq@Si9@`m9_RHK2!SqmP1bM^zk2xA z_zuTcp}oRE4SM;MJ28084PhVd<;e7va34|=;N&Qq%iHMcNIKxJ|HOfVT9%aS~C|5)8rxnGe^2!#SRV2Xyjn0h8w8s3&lc3>{_|??|2cr zi>U7`Vowo!31-988XBj%R&huDzE#BfLf5drL$nXb=(*&OAGiL??BRQM(Hlh{+TZcpEViT+b1Q7y}-~BlL7kc^zZ^ zgV>32T7+m3;ol@>Osb6kMTM}?>mnXyb!rrvK9^)}h!F~MyAb*h!a5#%0|#6kQxQB) zX${xc@OIkzpsg~3ZIs_!L-SOCi?FFhfH;&C9M*7nibTGvh$BTDy@8rx0(^I+K1t{6 zk5IpB4XvWzRz$n6-xnfy8w|)z-=Hr{i&%IKaWSD^)tzw{CBUZ$R38)XheZM}k+fGx z)#nJ=HBxnzz+WeLCCXn5N+a9wW&nO8uZQoz69ljmF9hU2%YR|tNm(sD&#P?^qVG|z z@dQ0wp+DIWkuv3dOQF24e~$6`T0_*5!W|LHzZg({TJgQ|`55p9$(N$0$rYL~0~@nQ b)8iavHOSxu-}@O+oNxJQ^j2Yh# zSZH@4py=$ts&sU;8I& z4alLxrR+|AEw{ZVuqm)5uq}`i*ijKPuevpYQwDax8Oh> znLQZ;@pb3G=~&BkjBM}h=cn?!S!Zi9>nvw?1>UrAh_?jZws9MG1n$~+2L%Jx%yg!` zSM%Pp@h;v|XI3)NrO)r%_y8XYd}QNed?N6vjnCN0nU!YC}JQHlXu3QZD%Fx zwsvG7q5iNE>Q*3HS#iyqb@>626W@hSW+wm5%)4QcE6Jw25g=ofUuQQp9|sDQ^Os1TxFG4dAn7H^lN7Fl z?;lJfD9|U+FYuK2GYk$Ptw(W<>OMUhW0Gq6Jzt$7Jlk4?UBm+sQAAnf!4o_*_AScW zP7#^q;3|qJR2C8a3BK{RBC7ri2%Q6N5YT>#mSj}MGafj>rEmCt_o<*Sl07%0iXNqS>SWAtvh$pw!_y(>_&KNcC3;;y zhP^kI{HVe)29V|)QaC92k-;2iohJW0hFoV%vb5qE-dW^|Xpfd@2yJj(@SxfS575Ke odu6?>dX`l-frBK=;5iJlZiII}egK!b*HEa2yIwJGqlCNu1qrgd=>Px#