diff --git a/src/main/java/org/leolo/nrdatad/model/Smart.java b/src/main/java/org/leolo/nrdatad/model/Smart.java index b49f3a1..f3f50a6 100644 --- a/src/main/java/org/leolo/nrdatad/model/Smart.java +++ b/src/main/java/org/leolo/nrdatad/model/Smart.java @@ -1,6 +1,7 @@ package org.leolo.nrdatad.model; import org.json.JSONObject; +import org.leolo.nrdatad.util.JSONUtil; public class Smart { @@ -142,7 +143,7 @@ public class Smart { smart.toBerth = obj.optString("TOBERTH"); smart.fromLine = obj.optString("FROMLINE"); smart.toLine = obj.optString("TOLINE"); - smart.berthOffset = obj.optInt("BERTHOFFSET"); + smart.berthOffset = JSONUtil.parseInt(obj.optString("BERTHOFFSET")); smart.platform = obj.optString("PLATFORM"); smart.event = SmartEvent.parseCode(obj.optString("EVENT")); smart.route = obj.optString("ROUTE"); @@ -152,4 +153,6 @@ public class Smart { smart.comment = obj.optString("COMMENT"); return smart; } + + } diff --git a/src/main/java/org/leolo/nrdatad/util/JSONUtil.java b/src/main/java/org/leolo/nrdatad/util/JSONUtil.java new file mode 100644 index 0000000..ec4bce4 --- /dev/null +++ b/src/main/java/org/leolo/nrdatad/util/JSONUtil.java @@ -0,0 +1,17 @@ +package org.leolo.nrdatad.util; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class JSONUtil { + + static Logger log = LogManager.getLogger(); + + public static int parseInt(String val){ + if (val.startsWith("+")) { + return Integer.parseInt(val.substring(1)); + } + return Integer.parseInt(val); + } + +} diff --git a/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java b/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java index 164f14a..63662ec 100644 --- a/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java +++ b/src/test/java/org/leolo/nrdatad/ReferenceDataParserTest.java @@ -49,7 +49,7 @@ public class ReferenceDataParserTest { assertEquals("", smart.getRoute()); assertEquals("", smart.getFromLine()); assertEquals("IH", smart.getTd()); - assertEquals("01/12/2018", smart.getComment()); + assertEquals("02/12/2018", smart.getComment()); assertEquals("NAIRN", smart.getStationName()); } } diff --git a/src/test/java/org/leolo/nrdatad/UtilTest.java b/src/test/java/org/leolo/nrdatad/UtilTest.java new file mode 100644 index 0000000..0d18b6a --- /dev/null +++ b/src/test/java/org/leolo/nrdatad/UtilTest.java @@ -0,0 +1,35 @@ +package org.leolo.nrdatad; + +import org.junit.Test; +import org.leolo.nrdatad.util.JSONUtil; + +import static org.junit.Assert.*; + +public class UtilTest { + + @Test public void testJSONUtilParseIntNormal(){ + assertEquals(10, JSONUtil.parseInt("10")); + assertEquals(10, JSONUtil.parseInt("+10")); + assertEquals(-10, JSONUtil.parseInt("-10")); + } + + @Test(expected = NumberFormatException.class) public void testJSONUtilParseIntError1(){ + JSONUtil.parseInt("abcd"); + } + @Test(expected = NumberFormatException.class) public void testJSONUtilParseIntError2(){ + JSONUtil.parseInt(""); + } + @Test(expected = NullPointerException.class) public void testJSONUtilParseIntError3(){ + JSONUtil.parseInt(null); + } + @Test(expected = NumberFormatException.class) public void testJSONUtilParseIntError4(){ + JSONUtil.parseInt("+"); + } + @Test(expected = NumberFormatException.class) public void testJSONUtilParseIntError5(){ + JSONUtil.parseInt("+abcd"); + } + @Test(expected = NumberFormatException.class) public void testJSONUtilParseIntError6(){ + JSONUtil.parseInt("+2200000000"); + } + +}