diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java b/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java index 0e25eea..0c54698 100644 --- a/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java +++ b/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java @@ -31,8 +31,8 @@ public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager{ logger.atDebug().log("URL={}",url); try { ds = new MariaDbPoolDataSource(url); - ds.setMinPoolSize(1); - ds.setMaxPoolSize(Integer.parseInt(conf.getOrDefault("db.poolsize", "20").toString())); +// ds.setMinPoolSize(1); +// ds.setMaxPoolSize(Integer.parseInt(conf.getOrDefault("db.poolsize", "20").toString())); ds.setUser(conf.getProperty("db.user").toString()); ds.setPassword(conf.getProperty("db.pwd").toString()); } catch (SQLException e) { diff --git a/src/test/java/org/leolo/nrdatad/model/ScheduleAssociationTest.java b/src/test/java/org/leolo/nrdatad/model/ScheduleAssociationTest.java index 633ebb4..770b47e 100644 --- a/src/test/java/org/leolo/nrdatad/model/ScheduleAssociationTest.java +++ b/src/test/java/org/leolo/nrdatad/model/ScheduleAssociationTest.java @@ -9,7 +9,7 @@ import static org.junit.Assert.*; public class ScheduleAssociationTest { - @Test public void basicCase() throws ParseException { + @Test public void basicCase1() throws ParseException { String json = "{\"diagram_type\":\"T\",\"assoc_end_date\":\"2022-12-05T00:00:00Z\",\"assoc_location_suffix\":null," + "\"assoc_days\":\"1000000\",\"assoc_train_uid\":\"L77547\",\"transaction_type\":\"Create\"," + "\"date_indicator\":\"S\",\"base_location_suffix\":null,\"main_train_uid\":\"L77935\"," + @@ -32,7 +32,7 @@ public class ScheduleAssociationTest { assertEquals(790828983, sa.hashCode()); } - @Test public void vstpAssoc() throws ParseException { + @Test public void vstpAssoc1() throws ParseException { String json = "{\"diagram_type\":\"T\",\"assoc_end_date\":\"2022-12-05T00:00:00Z\",\"assoc_location_suffix\":null," + "\"assoc_days\":\"1000000\",\"assoc_train_uid\":\" 77547\",\"transaction_type\":\"Create\"," + "\"date_indicator\":\"S\",\"base_location_suffix\":null,\"main_train_uid\":\" 77935\"," + @@ -55,4 +55,51 @@ public class ScheduleAssociationTest { assertEquals(-1968067017, sa.hashCode()); } + + @Test public void basicCase2() throws ParseException { + String json = "{\"diagram_type\":\"T\",\"assoc_end_date\":\"2022-12-05T00:00:00Z\"," + + "\"assoc_days\":\"1000000\",\"assoc_train_uid\":\"L77547\",\"transaction_type\":\"Create\"," + + "\"date_indicator\":\"S\",\"main_train_uid\":\"L77935\"," + + "\"CIF_stp_indicator\":\"P\",\"assoc_start_date\":\"2022-05-16T00:00:00Z\"," + + "\"location\":\"KNGX\",\"category\":\"NP\"}"; + ScheduleAssociation sa = ScheduleAssociation.parseJSON(json); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + assertEquals(sdf.parse("20221205"), sa.getEndDate()); + assertEquals("", sa.getAssocLocationSuffix()); + assertEquals("1000000", sa.getAssoDays()); + assertEquals("L77547", sa.getAssoUid()); + assertEquals(0, sa.getAssociationDate()); + assertEquals("", sa.getBaseLocationSuffix()); + assertEquals("L77935", sa.getMainUid()); + assertEquals(ShortTermPlanningIndicator.PERMANENT, sa.getStpIndicator()); + assertEquals(sdf.parse("20220516"), sa.getStartDate()); + assertEquals("KNGX", sa.getAssociationLocation()); + assertEquals(AssociationCategory.NEXT, sa.getAssociationCategory()); + assertEquals("L77935L77547KNGXPFE4P", sa.getAuid()); + assertEquals(790828983, sa.hashCode()); + } + + @Test public void vstpAssoc2() throws ParseException { + String json = "{\"diagram_type\":\"T\",\"assoc_end_date\":\"2022-12-05T00:00:00Z\"," + + "\"assoc_days\":\"1000000\",\"assoc_train_uid\":\" 77547\",\"transaction_type\":\"Create\"," + + "\"date_indicator\":\"S\",\"main_train_uid\":\" 77935\"," + + "\"CIF_stp_indicator\":\"P\",\"assoc_start_date\":\"2022-05-16T00:00:00Z\"," + + "\"location\":\"KNGX\",\"category\":\"NP\"}"; + ScheduleAssociation sa = ScheduleAssociation.parseJSON(json); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + assertEquals(sdf.parse("20221205"), sa.getEndDate()); + assertEquals("", sa.getAssocLocationSuffix()); + assertEquals("1000000", sa.getAssoDays()); + assertEquals("77547", sa.getAssoUid()); + assertEquals(0, sa.getAssociationDate()); + assertEquals("", sa.getBaseLocationSuffix()); + assertEquals("77935", sa.getMainUid()); + assertEquals(ShortTermPlanningIndicator.PERMANENT, sa.getStpIndicator()); + assertEquals(sdf.parse("20220516"), sa.getStartDate()); + assertEquals("KNGX", sa.getAssociationLocation()); + assertEquals(AssociationCategory.NEXT, sa.getAssociationCategory()); + assertEquals("7793577547KNGXPFE4P", sa.getAuid()); + assertEquals(-1968067017, sa.hashCode()); + } + } \ No newline at end of file diff --git a/src/test/java/org/leolo/nrdatad/model/TiplocTest.java b/src/test/java/org/leolo/nrdatad/model/TiplocTest.java index 76ae320..87950ba 100644 --- a/src/test/java/org/leolo/nrdatad/model/TiplocTest.java +++ b/src/test/java/org/leolo/nrdatad/model/TiplocTest.java @@ -16,4 +16,15 @@ public class TiplocTest { assertEquals("ABRDEEN", tiploc.getTiplocCode()); assertEquals("897600", tiploc.getNalco()); } + @Test public void basicTest2(){ + String json = "{\"tps_description\":\"ABERDEEN\",\"description\":\"ABERDEEN\"," + + "\"stanox\":\"02071\",\"tiploc_code\":\"ABRDEEN\",\"transaction_type\":\"Create\",\"nalco\":\"897600\"}"; + Tiploc tiploc = Tiploc.parseJSON(json); + assertEquals("ABERDEEN", tiploc.getTpsDescription()); + assertEquals("", tiploc.getCrsCode()); + assertEquals("ABERDEEN", tiploc.getDescription()); + assertEquals("02071", tiploc.getStanox()); + assertEquals("ABRDEEN", tiploc.getTiplocCode()); + assertEquals("897600", tiploc.getNalco()); + } } \ No newline at end of file diff --git a/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java b/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java index bc3a5e6..c9da65c 100644 --- a/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java +++ b/src/test/java/org/leolo/nrdatad/model/TrainScheduleTest.java @@ -109,4 +109,100 @@ public class TrainScheduleTest { assertEquals(0, tsl.getWttPass()); } + @Test public void testSchedule2() throws IOException, ParseException { + String json = TestUtil.openResourceFileAsString("org/leolo/nrdatad/test/V56332_N.json"); + TrainSchedule ts = TrainSchedule.parseJSON(json); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + //Schedule Info + assertEquals("V56332", ts.getTrainUid()); + assertEquals("V56332M3M4N", ts.getSUID()); + assertEquals("AW", ts.getAtocCode()); + assertEquals(ShortTermPlanningIndicator.NEW, ts.getShortTermPlanningIndicator()); + assertEquals(sdf.parse("20230104"), ts.getStartDate()); + assertEquals(sdf.parse("20230105"), ts.getEndDate()); + assertEquals("0011000", ts.getRunsOn()); + assertEquals("",ts.getRunsOnBankHoliday()); + //Sector Info + TrainScheduleSector tss = ts.getSector(); + assertEquals("", tss.getServiceBranding()); + assertEquals("OO", tss.getTrainCategory()); + assertEquals("??", tss.getBusinessSector()); + assertEquals(75, tss.getSpeed()); + assertEquals("", tss.getReservation()); + assertEquals("", tss.getCatering()); + assertEquals("DMU", tss.getPowerType()); + assertEquals("S", tss.getTimingLoad()); + assertEquals("2F60", tss.getSignalId()); + assertEquals("", tss.getHeadcode()); + assertEquals("", tss.getOperatingCharacteristic()); + assertEquals("", tss.getSleeper()); + assertEquals("25441000", tss.getTrainServiceCode()); + assertEquals("S", tss.getTrainClass()); + //Check each location + //1 - PTYPRID + TrainScheduleLocation tsl = tss.getScheduleLocations().get(0); + assertEquals(0, tsl.getPathingAllowance()); + assertEquals(TrainScheduleLocationRecordIdentity.ORIGINATE, tsl.getRecordIdentity()); + assertEquals(0, tsl.getEngineeringAllowance()); + assertEquals("U", tsl.getLine()); + assertEquals("", tsl.getPath()); + assertEquals(TrainScheduleLocation.UNKNOWN_RECORD_SEQUENCE, tsl.getTiplocInstance()); + assertEquals(tss, tsl.getRecordSector()); + assertEquals(1, tsl.getRecordSequence()); + assertEquals("1", tsl.getPlatform()); + assertEquals(TimeUtil.parseTime("1654"), tsl.getWttDeparture()); + assertEquals(TimeUtil.parseTime("1654"), tsl.getPublicDeparture()); + assertEquals(0, tsl.getWttArrival()); + assertEquals(0, tsl.getPublicArrival()); + assertEquals(0, tsl.getWttPass()); + //2 - TREFRST + tsl = tss.getScheduleLocations().get(1); + assertEquals(180_000, tsl.getPathingAllowance()); + assertEquals(TrainScheduleLocationRecordIdentity.INTERMEDIATE, tsl.getRecordIdentity()); + assertEquals(60_000, tsl.getEngineeringAllowance()); + assertEquals("UL", tsl.getLine()); + assertEquals("UP", tsl.getPath()); + assertEquals(TrainScheduleLocation.UNKNOWN_RECORD_SEQUENCE, tsl.getTiplocInstance()); + assertEquals(tss, tsl.getRecordSector()); + assertEquals(2, tsl.getRecordSequence()); + assertEquals("A", tsl.getPlatform()); + assertEquals(TimeUtil.parseTime("1657H"), tsl.getWttDeparture()); + assertEquals(TimeUtil.parseTime("1657"), tsl.getPublicDeparture()); + assertEquals(TimeUtil.parseTime("1656H"), tsl.getWttArrival()); + assertEquals(TimeUtil.parseTime("1656"), tsl.getPublicArrival()); + assertEquals(0, tsl.getWttPass()); + //8 - CVLESBY + tsl = tss.getScheduleLocations().get(7); + assertEquals(0, tsl.getPathingAllowance()); + assertEquals(TrainScheduleLocationRecordIdentity.INTERMEDIATE, tsl.getRecordIdentity()); + assertEquals(0, tsl.getEngineeringAllowance()); + assertEquals("", tsl.getLine()); + assertEquals("", tsl.getPath()); + assertEquals(TrainScheduleLocation.UNKNOWN_RECORD_SEQUENCE, tsl.getTiplocInstance()); + assertEquals(tss, tsl.getRecordSector()); + assertEquals(8, tsl.getRecordSequence()); + assertEquals("", tsl.getPlatform()); + assertEquals(0, tsl.getWttDeparture()); + assertEquals(0, tsl.getPublicDeparture()); + assertEquals(0, tsl.getWttArrival()); + assertEquals(0, tsl.getPublicArrival()); + assertEquals(TimeUtil.parseTime("1723"), tsl.getWttPass()); + //9 - CRDFCEN + tsl = tss.getScheduleLocations().get(8); + assertEquals(0, tsl.getPathingAllowance()); + assertEquals(TrainScheduleLocationRecordIdentity.TERMINATE, tsl.getRecordIdentity()); + assertEquals(0, tsl.getEngineeringAllowance()); + assertEquals("", tsl.getLine()); + assertEquals("", tsl.getPath()); + assertEquals(TrainScheduleLocation.UNKNOWN_RECORD_SEQUENCE, tsl.getTiplocInstance()); + assertEquals(tss, tsl.getRecordSector()); + assertEquals(9, tsl.getRecordSequence()); + assertEquals("7", tsl.getPlatform()); + assertEquals(0, tsl.getWttDeparture()); + assertEquals(0, tsl.getPublicDeparture()); + assertEquals(TimeUtil.parseTime("1724"), tsl.getWttArrival()); + assertEquals(TimeUtil.parseTime("1725"), tsl.getPublicArrival()); + assertEquals(0, tsl.getWttPass()); + } + } diff --git a/src/test/resources/org/leolo/nrdatad/test/V56332_N.json b/src/test/resources/org/leolo/nrdatad/test/V56332_N.json new file mode 100644 index 0000000..4712775 --- /dev/null +++ b/src/test/resources/org/leolo/nrdatad/test/V56332_N.json @@ -0,0 +1,113 @@ +{ + "train_status": "1", + "CIF_train_uid": "V56332", + "schedule_days_runs": "0011000", + "CIF_stp_indicator": "N", + "applicable_timetable": "Y", + "atoc_code": "AW", + "schedule_start_date": "2023-01-04", + "new_schedule_segment": { + }, + "transaction_type": "Create", + "schedule_end_date": "2023-01-05", + "schedule_segment": { + "CIF_train_category": "OO", + "CIF_business_sector": "??", + "CIF_speed": "075", + "CIF_power_type": "DMU", + "CIF_course_indicator": 1, + "CIF_timing_load": "S", + "signalling_id": "2F60", + "schedule_location": [ + { + "record_identity": "LO", + "line": "U", + "public_departure": "1654", + "tiploc_code": "PTYPRID", + "departure": "1654", + "location_type": "LO", + "platform": "1" + }, + { + "engineering_allowance": "1", + "arrival": "1656H", + "line": "UL", + "public_arrival": "1656", + "performance_allowance": "2", + "location_type": "LI", + "platform": "A", + "pathing_allowance": "3", + "record_identity": "LI", + "path": "UP", + "public_departure": "1657", + "tiploc_code": "TREFRST", + "departure": "1657H" + }, + { + "arrival": "1703", + "public_arrival": "1704", + "location_type": "LI", + "record_identity": "LI", + "public_departure": "1704", + "tiploc_code": "TAFFSWL", + "departure": "1704" + }, + { + "arrival": "1707", + "public_arrival": "1708", + "location_type": "LI", + "platform": "1", + "record_identity": "LI", + "public_departure": "1708", + "tiploc_code": "RADYR", + "departure": "1708" + }, + { + "arrival": "1710", + "public_arrival": "1710", + "location_type": "LI", + "record_identity": "LI", + "public_departure": "1711", + "tiploc_code": "LLANDAF", + "departure": "1711" + }, + { + "engineering_allowance": "1", + "arrival": "1714H", + "public_arrival": "1715", + "location_type": "LI", + "pathing_allowance": "H", + "record_identity": "LI", + "public_departure": "1715", + "tiploc_code": "CATHAYS", + "departure": "1715H" + }, + { + "arrival": "1719", + "public_arrival": "1720", + "location_type": "LI", + "platform": "3", + "record_identity": "LI", + "public_departure": "1721", + "tiploc_code": "CARDFQS", + "departure": "1721" + }, + { + "pass": "1723", + "location_type": "LI", + "record_identity": "LI", + "tiploc_code": "CVLESBY" + }, + { + "record_identity": "LT", + "arrival": "1724", + "public_arrival": "1725", + "tiploc_code": "CRDFCEN", + "location_type": "LT", + "platform": "7" + } + ], + "CIF_train_service_code": "25441000", + "CIF_train_class": "S" + } +}