From 2b3171271eed14fc706c8a07787c7eee551d70e5 Mon Sep 17 00:00:00 2001 From: LO Kam Tao Leo Date: Sat, 29 Oct 2022 12:03:08 +0100 Subject: [PATCH] Parsing data --- src/main/java/org/leolo/nrdatad/model/Smart.java | 24 +++++++++++++++++ .../org/leolo/nrdatad/ReferenceDataParserTest.java | 31 +++++++++++++++++++--- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/leolo/nrdatad/model/Smart.java b/src/main/java/org/leolo/nrdatad/model/Smart.java index 82801bf..b49f3a1 100644 --- a/src/main/java/org/leolo/nrdatad/model/Smart.java +++ b/src/main/java/org/leolo/nrdatad/model/Smart.java @@ -1,5 +1,7 @@ package org.leolo.nrdatad.model; +import org.json.JSONObject; + public class Smart { private int smartId; @@ -128,4 +130,26 @@ public class Smart { public void setComment(String comment) { this.comment = comment; } + + public static Smart parseJSON(String json){ + return parseJSON(new JSONObject(json)); + } + + public static Smart parseJSON(JSONObject obj) { + Smart smart = new Smart(); + smart.td = obj.optString("TD"); + smart.fromBerth = obj.optString("FROMBERTH"); + smart.toBerth = obj.optString("TOBERTH"); + smart.fromLine = obj.optString("FROMLINE"); + smart.toLine = obj.optString("TOLINE"); + smart.berthOffset = obj.optInt("BERTHOFFSET"); + smart.platform = obj.optString("PLATFORM"); + smart.event = SmartEvent.parseCode(obj.optString("EVENT")); + smart.route = obj.optString("ROUTE"); + smart.stanox = obj.optString("STANOX"); + smart.stationName = obj.optString("STANME"); + smart.stepType = SmartStepType.parseCode(obj.optString("STEPTYPE")); + smart.comment = obj.optString("COMMENT"); + return smart; + } } diff --git a/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java b/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java index 5c80870..164f14a 100644 --- a/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java +++ b/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java @@ -2,12 +2,15 @@ package org.leolo.nrdatad; import org.json.JSONObject; import org.junit.Test; import org.leolo.nrdatad.model.Corpus; +import org.leolo.nrdatad.model.Smart; +import org.leolo.nrdatad.model.SmartEvent; +import org.leolo.nrdatad.model.SmartStepType; import static org.junit.Assert.*; public class ReferenceDataParserTest { @Test - public void testNormalCase1(){ + public void testCorpusNormalCase1(){ String json = "{\"NLC\":\"535500\",\"STANOX\":\"87701\",\"TIPLOC\":\"ECROYDN\",\"3ALPHA\":\"ECR\",\"UIC\":\"53550\",\"NLCDESC\":\"EAST CROYDON\",\"NLCDESC16\":\"\"}"; Corpus corpus = Corpus.parseJSON(json); assertEquals("535500", corpus.getNlcCode()); @@ -16,8 +19,10 @@ public class ReferenceDataParserTest { assertEquals("ECR", corpus.getCrsCode()); assertEquals("53550", corpus.getUicCode()); assertEquals("EAST CROYDON", corpus.getLongDescription()); - }@Test - public void testNormalCase2(){ + } + + @Test + public void testCorpusNormalCase2(){ String json = "{\"NLC\":\"535500\",\"STANOX\":\"87701\",\"TIPLOC\":\"ECROYDN\",\"3ALPHA\":\"ECR\",\"UIC\":\"53550\",\"NLCDESC\":\"EAST CROYDON\",\"NLCDESC16\":\"\"}"; Corpus corpus = Corpus.parseJSON(new JSONObject(json)); assertEquals("535500", corpus.getNlcCode()); @@ -27,5 +32,25 @@ public class ReferenceDataParserTest { assertEquals("53550", corpus.getUicCode()); assertEquals("EAST CROYDON", corpus.getLongDescription()); } + + @Test + public void testSmartNormalCase1(){ + String json = "{\"STEPTYPE\":\"B\",\"FROMBERTH\":\"7910\",\"TOBERTH\":\"7904\",\"STANOX\":\"01125\",\"EVENT\":\"A\",\"PLATFORM\":\"1\"," + + "\"TOLINE\":\"\",\"BERTHOFFSET\":\"+59\",\"ROUTE\":\"\",\"FROMLINE\":\"\",\"TD\":\"IH\",\"COMMENT\":\"02/12/2018\",\"STANME\":\"NAIRN\"}"; + Smart smart = Smart.parseJSON(json); + assertEquals(SmartStepType.BETWEEN, smart.getStepType()); + assertEquals("7910", smart.getFromBerth()); + assertEquals("7904", smart.getToBerth()); + assertEquals("01125", smart.getStanox()); + assertEquals(SmartEvent.ARRIVE_UP, smart.getEvent()); + assertEquals("1", smart.getPlatform()); + assertEquals("", smart.getToLine()); + assertEquals(59, smart.getBerthOffset()); + assertEquals("", smart.getRoute()); + assertEquals("", smart.getFromLine()); + assertEquals("IH", smart.getTd()); + assertEquals("01/12/2018", smart.getComment()); + assertEquals("NAIRN", smart.getStationName()); + } }