From c47c78f2efe7684deae7ca5b4c8c7049cfcc6b55 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 08:25:27 -0800 Subject: [PATCH 01/38] Added new MessageUtils class to parse string messages --- .../iamp/bcparis/message/MessageUtils.java | 9 ++++ .../message/MessageUtilsGetValueTest.java | 51 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java create mode 100644 src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java new file mode 100644 index 0000000..fdd4aaf --- /dev/null +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -0,0 +1,9 @@ +package ca.bc.gov.iamp.bcparis.message; + +public class MessageUtils { + + public static String GetValue(String message, String key) { + return "value"; + } + +} diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java new file mode 100644 index 0000000..03cda9c --- /dev/null +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -0,0 +1,51 @@ +package ca.bc.gov.iamp.bcparis.message; + + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; +import java.util.Collection; + +@RunWith(Parameterized.class) +public class MessageUtilsGetValueTest { + + @Parameterized.Parameters + public static Collection data() { + return Arrays.asList(new Object[][]{ + { + "HC BC41027]\\\"BC41127]\\\"RE SNME:SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\"BCDL: 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\", + new String[][]{ + {"SNME", "SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\""}, + {"BCDL", " 7088384 "}} + } + }); + } + + public String input; + public String[][] expected; + + public MessageUtilsGetValueTest(String input, String[][] expected) { + this.input = input; + this.expected = expected; + } + + @Test + public void execute() { + + for(int i = 0; i < expected.length; i++) { + + String result = MessageUtils.GetValue(this.input, expected[i][0]); + + Assert.assertEquals( + "Attribute Value different from input", + expected[i][1], + result); + } + + } + + +} From c5c91cc90dc764542e01c0454f925cfc5f900cc3 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 08:46:17 -0800 Subject: [PATCH 02/38] Added keys class for static configuration --- src/main/java/ca/bc/gov/iamp/bcparis/Keys.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/ca/bc/gov/iamp/bcparis/Keys.java diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java new file mode 100644 index 0000000..9d12b4a --- /dev/null +++ b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java @@ -0,0 +1,7 @@ +package ca.bc.gov.iamp.bcparis; + +public class Keys { + + public static final String RESPONSE_SCHEMA_FROM_KEY = "FROM"; + +} From 8ac1eb9e2262c189221d1981bb865610141a759d Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 09:21:58 -0800 Subject: [PATCH 03/38] Updated for error response --- src/main/java/ca/bc/gov/iamp/bcparis/Keys.java | 3 +++ .../processor/datagram/DriverProcessor.java | 2 +- .../processor/datagram/VehicleProcessor.java | 2 +- .../gov/iamp/bcparis/service/MessageService.java | 14 +++++++++++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java index 9d12b4a..2ed2c92 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java @@ -3,5 +3,8 @@ public class Keys { public static final String RESPONSE_SCHEMA_FROM_KEY = "FROM"; + public static final String RESPONSE_SCHEMA_TO_KEY = "TO"; + public static final String RESPONSE_SCHEMA_TEXT_KEY = "TEXT"; + public static final String RESPONSE_SCHEMA_RE_KEY = "RE"; } diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/DriverProcessor.java b/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/DriverProcessor.java index bc1b2a9..d6e9bcc 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/DriverProcessor.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/DriverProcessor.java @@ -35,7 +35,7 @@ public Layer7Message process(Layer7Message message) { List requests = createIMSContent(message); if (requests.isEmpty()) { - message.getEnvelope().getBody().setMsgFFmt(messageService.buildResponse(message.getEnvelope().getBody(), "Unable to parse/formatting error")); + message.getEnvelope().getBody().setMsgFFmt(messageService.buildErrorResponse(message.getEnvelope().getBody(), "Unable to parse/formatting error")); log.warn("Processing Driver: Unable to parse/formatting error"); return message; } diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/VehicleProcessor.java b/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/VehicleProcessor.java index 5d3f03d..c20a746 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/VehicleProcessor.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/processor/datagram/VehicleProcessor.java @@ -37,7 +37,7 @@ public Layer7Message process(Layer7Message message) { List requests = createIMSContent(message); if (requests.isEmpty()) { - message.getEnvelope().getBody().setMsgFFmt(messageService.buildResponse(message.getEnvelope().getBody(), "Unable to parse/formatting error")); + message.getEnvelope().getBody().setMsgFFmt(messageService.buildErrorResponse(message.getEnvelope().getBody(), "Unable to parse/formatting error")); log.warn("Processing Vehicle: Unable to parse/formatting error"); return message; } diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index ca01665..2a0c359 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -5,11 +5,14 @@ import java.util.List; import java.util.stream.Collectors; +import ca.bc.gov.iamp.bcparis.Keys; +import ca.bc.gov.iamp.bcparis.message.MessageUtils; import org.springframework.stereotype.Service; import ca.bc.gov.iamp.bcparis.exception.message.InvalidMessage; import ca.bc.gov.iamp.bcparis.model.message.body.Body; + @Service public class MessageService { @@ -44,7 +47,16 @@ public String buildResponse(final Body body, final String message) { .replace("${re}", body.containAttribute("RE") ? "RE:" + re : "") .replace("${icbc_response}", message); } - + + public String buildErrorResponse(final Body body, final String errorMessage) { + return schema + .replace("${from}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_TO_KEY)) //Swap from and to for response + .replace("${to}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_FROM_KEY)) //Swap from and to for response + .replace("${text}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_TEXT_KEY)) + .replace("${re}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_RE_KEY)) + .replace("${icbc_response}", errorMessage); + } + public String escape(String message) { return message .replaceAll("&", "&") From 98915f2668ca9f3fdf6714ae0d68d88254159a5c Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 09:34:22 -0800 Subject: [PATCH 04/38] Added first iteration on getValue --- .../iamp/bcparis/message/MessageUtils.java | 58 ++++++++++++++++++- .../iamp/bcparis/service/MessageService.java | 2 + .../MessageUtilsEdgeCaseGetValueTest.java | 27 +++++++++ .../message/MessageUtilsGetValueTest.java | 14 ++++- 4 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index fdd4aaf..84f02f1 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -1,9 +1,65 @@ package ca.bc.gov.iamp.bcparis.message; +import ca.bc.gov.iamp.bcparis.Keys; +import org.springframework.util.StringUtils; + +import java.util.HashSet; +import java.util.Set; + public class MessageUtils { + public static final String SEMICOLLON = ":"; + public static String GetValue(String message, String key) { - return "value"; + + HashSet knownTokens = new HashSet() {{ + add("SN"); + add("MT"); + add("MSID"); + add(Keys.RESPONSE_SCHEMA_FROM_KEY); + add("TO"); + add("SUBJ"); + add("TEXT"); + add("RE"); + add("SNME"); + add("DL"); + add("LIC"); + add("ODN"); + add("FLC"); + add("VIN"); + add("REG"); + add("RNS"); + add("RVL"); + // TODO: REMOVE TOKEN AFTER SATELLITE SERVICE IS DEPRECATED + add("TestRNS"); + }}; + + if(knownTokens.contains(key)) { + knownTokens.remove(key); + } else { + throw new IllegalArgumentException("Key is not a known token."); + } + + if(StringUtils.isEmpty(message)) return ""; + + int startIndex = message.indexOf(key + SEMICOLLON) + key.length() + 1; + int currentEndIndex = message.length(); + + if(startIndex == -1) return ""; + + for(String token: knownTokens) { + + int tokenIndex = message.indexOf(token + SEMICOLLON); + + if(tokenIndex < currentEndIndex && tokenIndex >= startIndex) { + currentEndIndex = tokenIndex; + } + } + + return message.substring(startIndex, currentEndIndex); + } } + + diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index ca01665..f8e7c8a 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.stream.Collectors; +import ca.bc.gov.iamp.bcparis.Keys; +import ca.bc.gov.iamp.bcparis.message.MessageUtils; import org.springframework.stereotype.Service; import ca.bc.gov.iamp.bcparis.exception.message.InvalidMessage; diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java new file mode 100644 index 0000000..275199f --- /dev/null +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java @@ -0,0 +1,27 @@ +package ca.bc.gov.iamp.bcparis.message; + +import ca.bc.gov.iamp.bcparis.Keys; +import org.junit.Assert; +import org.junit.Test; + +import java.security.Key; + +public class MessageUtilsEdgeCaseGetValueTest { + + @Test(expected = IllegalArgumentException.class) + public void WithTokenNotKnownTokenShouldThrowException() { + MessageUtils.GetValue("A message", "token"); + } + + + @Test + public void WithEmptyStringShouldReturnEmptyString() { + MessageUtils.GetValue("", Keys.RESPONSE_SCHEMA_FROM_KEY); + } + + @Test + public void WithNullStringShouldReturnNullString() { + MessageUtils.GetValue(null, Keys.RESPONSE_SCHEMA_FROM_KEY); + } + +} diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 03cda9c..22c6c0a 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -15,11 +15,20 @@ public class MessageUtilsGetValueTest { @Parameterized.Parameters public static Collection data() { return Arrays.asList(new Object[][]{ + { + "DL: TEST DL SNME: test smne TEXT: test text FLC: test flc", + new String [][] { + {"DL", " TEST DL "}, + {"SNME", " test smne "}, + {"TEXT", " test text "}, + {"FLC", " test flc"} + } + }, { "HC BC41027]\\\"BC41127]\\\"RE SNME:SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\"BCDL: 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\", new String[][]{ - {"SNME", "SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\""}, - {"BCDL", " 7088384 "}} + {"SNME", "SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\"BC"}, + {"DL", " 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\"}} } }); } @@ -47,5 +56,4 @@ public void execute() { } - } From 9cd94bc9e1633a6fe8b7b800024d1e98e1e05a1e Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 09:36:16 -0800 Subject: [PATCH 05/38] Added ref to keys --- .../java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 84f02f1..4d8a0b0 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -17,10 +17,10 @@ public static String GetValue(String message, String key) { add("MT"); add("MSID"); add(Keys.RESPONSE_SCHEMA_FROM_KEY); - add("TO"); + add(Keys.RESPONSE_SCHEMA_TO_KEY); add("SUBJ"); - add("TEXT"); - add("RE"); + add(Keys.RESPONSE_SCHEMA_TEXT_KEY); + add(Keys.RESPONSE_SCHEMA_RE_KEY); add("SNME"); add("DL"); add("LIC"); From a9e35c500e403858052b8184ac7adc3975df57a8 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 09:52:19 -0800 Subject: [PATCH 06/38] added known keys to constants --- .../java/ca/bc/gov/iamp/bcparis/Keys.java | 15 +++++++ .../iamp/bcparis/message/MessageUtils.java | 42 +++++++++---------- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java index 2ed2c92..40178d0 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java @@ -6,5 +6,20 @@ public class Keys { public static final String RESPONSE_SCHEMA_TO_KEY = "TO"; public static final String RESPONSE_SCHEMA_TEXT_KEY = "TEXT"; public static final String RESPONSE_SCHEMA_RE_KEY = "RE"; + public static final String RESPONSE_SCHEMA_SN_KEY = "SN"; + public static final String RESPONSE_SCHEMA_MT_KEY = "MT"; + public static final String RESPONSE_SCHEMA_MSID_KEY = "MSID"; + public static final String RESPONSE_SCHEMA_SUBJ_KEY = "SUBJ"; + public static final String RESPONSE_SCHEMA_SNME_KEY = "SNME"; + public static final String RESPONSE_SCHEMA_DL_KEY = "DL"; + public static final String RESPONSE_SCHEMA_LIC_KEY = "LIC"; + public static final String RESPONSE_SCHEMA_ODN_KEY = "ODN"; + public static final String RESPONSE_SCHEMA_FLC_KEY = "FLC"; + public static final String RESPONSE_SCHEMA_VIN_KEY = "VIN"; + public static final String RESPONSE_SCHEMA_REG_KEY = "REG"; + public static final String RESPONSE_SCHEMA_RNS_KEY = "RNS"; + public static final String RESPONSE_SCHEMA_RVL_KEY = "RVL"; + // TODO: REMOVE TOKEN AFTER SATELLITE SERVICE IS DEPRECATED + public static final String RESPONSE_SCHEMA_TEST_RNS_KEY = "TestRNS"; } diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 4d8a0b0..a93ccf0 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -10,48 +10,48 @@ public class MessageUtils { public static final String SEMICOLLON = ":"; + public static String GetValue(String message, String key) { HashSet knownTokens = new HashSet() {{ - add("SN"); - add("MT"); - add("MSID"); + add(Keys.RESPONSE_SCHEMA_SN_KEY); + add(Keys.RESPONSE_SCHEMA_MT_KEY); + add(Keys.RESPONSE_SCHEMA_MSID_KEY); add(Keys.RESPONSE_SCHEMA_FROM_KEY); add(Keys.RESPONSE_SCHEMA_TO_KEY); - add("SUBJ"); + add(Keys.RESPONSE_SCHEMA_SUBJ_KEY); add(Keys.RESPONSE_SCHEMA_TEXT_KEY); add(Keys.RESPONSE_SCHEMA_RE_KEY); - add("SNME"); - add("DL"); - add("LIC"); - add("ODN"); - add("FLC"); - add("VIN"); - add("REG"); - add("RNS"); - add("RVL"); - // TODO: REMOVE TOKEN AFTER SATELLITE SERVICE IS DEPRECATED - add("TestRNS"); + add(Keys.RESPONSE_SCHEMA_SNME_KEY); + add(Keys.RESPONSE_SCHEMA_DL_KEY); + add(Keys.RESPONSE_SCHEMA_LIC_KEY); + add(Keys.RESPONSE_SCHEMA_ODN_KEY); + add(Keys.RESPONSE_SCHEMA_FLC_KEY); + add(Keys.RESPONSE_SCHEMA_VIN_KEY); + add(Keys.RESPONSE_SCHEMA_REG_KEY); + add(Keys.RESPONSE_SCHEMA_RNS_KEY); + add(Keys.RESPONSE_SCHEMA_RVL_KEY); + add(Keys.RESPONSE_SCHEMA_TEST_RNS_KEY); }}; - if(knownTokens.contains(key)) { + if (knownTokens.contains(key)) { knownTokens.remove(key); } else { - throw new IllegalArgumentException("Key is not a known token."); + throw new IllegalArgumentException("Key is not a known token."); } - if(StringUtils.isEmpty(message)) return ""; + if (StringUtils.isEmpty(message)) return ""; int startIndex = message.indexOf(key + SEMICOLLON) + key.length() + 1; int currentEndIndex = message.length(); - if(startIndex == -1) return ""; + if (startIndex == -1) return ""; - for(String token: knownTokens) { + for (String token : knownTokens) { int tokenIndex = message.indexOf(token + SEMICOLLON); - if(tokenIndex < currentEndIndex && tokenIndex >= startIndex) { + if (tokenIndex < currentEndIndex && tokenIndex >= startIndex) { currentEndIndex = tokenIndex; } } From 9b5b8268e483f7446c217f1ccb045f336c2bdad9 Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 10:45:25 -0800 Subject: [PATCH 07/38] Add test --- .../gov/iamp/bcparis/message/MessageUtilsGetValueTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 22c6c0a..493d363 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -29,6 +29,13 @@ public static Collection data() { new String[][]{ {"SNME", "SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\"BC"}, {"DL", " 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\"}} + }, + { + "\rSN:M00001-0001 MT:MUF MSID:BRKR-191220-18:10:04\nFROM:BC41127\nTO:BC41027\nTEXT:BCPARIS Diagnostic Test SOAPUI 443 qwe20190703102453\nHC BC41127 BC41028 G1:JEREMY/ 2019120410145020191204101450\n \r", + new String[][]{ + {"RE", ""} + } + } }); } From e3d149aeef0583dcaa9f33699bdbd2e72b1b571c Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 10:53:50 -0800 Subject: [PATCH 08/38] Fixed new unit test --- .../ca/bc/gov/iamp/bcparis/message/MessageUtils.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index a93ccf0..efde9b5 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -10,7 +10,6 @@ public class MessageUtils { public static final String SEMICOLLON = ":"; - public static String GetValue(String message, String key) { HashSet knownTokens = new HashSet() {{ @@ -42,10 +41,14 @@ public static String GetValue(String message, String key) { if (StringUtils.isEmpty(message)) return ""; - int startIndex = message.indexOf(key + SEMICOLLON) + key.length() + 1; + int startIndex = message.indexOf(key + SEMICOLLON); + if (startIndex == -1) return ""; + + startIndex += key.length() + 1; + int currentEndIndex = message.length(); - if (startIndex == -1) return ""; + for (String token : knownTokens) { From bb735b31ab413ebc457215115b3bd76c2332303c Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 11:11:18 -0800 Subject: [PATCH 09/38] changed RESPONSE to REQUEST --- .../java/ca/bc/gov/iamp/bcparis/Keys.java | 36 ++++++++--------- .../iamp/bcparis/message/MessageUtils.java | 40 +++++++++---------- .../iamp/bcparis/service/MessageService.java | 8 ++-- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java index 40178d0..564e079 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/Keys.java @@ -2,24 +2,24 @@ public class Keys { - public static final String RESPONSE_SCHEMA_FROM_KEY = "FROM"; - public static final String RESPONSE_SCHEMA_TO_KEY = "TO"; - public static final String RESPONSE_SCHEMA_TEXT_KEY = "TEXT"; - public static final String RESPONSE_SCHEMA_RE_KEY = "RE"; - public static final String RESPONSE_SCHEMA_SN_KEY = "SN"; - public static final String RESPONSE_SCHEMA_MT_KEY = "MT"; - public static final String RESPONSE_SCHEMA_MSID_KEY = "MSID"; - public static final String RESPONSE_SCHEMA_SUBJ_KEY = "SUBJ"; - public static final String RESPONSE_SCHEMA_SNME_KEY = "SNME"; - public static final String RESPONSE_SCHEMA_DL_KEY = "DL"; - public static final String RESPONSE_SCHEMA_LIC_KEY = "LIC"; - public static final String RESPONSE_SCHEMA_ODN_KEY = "ODN"; - public static final String RESPONSE_SCHEMA_FLC_KEY = "FLC"; - public static final String RESPONSE_SCHEMA_VIN_KEY = "VIN"; - public static final String RESPONSE_SCHEMA_REG_KEY = "REG"; - public static final String RESPONSE_SCHEMA_RNS_KEY = "RNS"; - public static final String RESPONSE_SCHEMA_RVL_KEY = "RVL"; + public static final String REQUEST_SCHEMA_FROM_KEY = "FROM"; + public static final String REQUEST_SCHEMA_TO_KEY = "TO"; + public static final String REQUEST_SCHEMA_TEXT_KEY = "TEXT"; + public static final String REQUEST_SCHEMA_RE_KEY = "RE"; + public static final String REQUEST_SCHEMA_SN_KEY = "SN"; + public static final String REQUEST_SCHEMA_MT_KEY = "MT"; + public static final String REQUEST_SCHEMA_MSID_KEY = "MSID"; + public static final String REQUEST_SCHEMA_SUBJ_KEY = "SUBJ"; + public static final String REQUEST_SCHEMA_SNME_KEY = "SNME"; + public static final String REQUEST_SCHEMA_DL_KEY = "DL"; + public static final String REQUEST_SCHEMA_LIC_KEY = "LIC"; + public static final String REQUEST_SCHEMA_ODN_KEY = "ODN"; + public static final String REQUEST_SCHEMA_FLC_KEY = "FLC"; + public static final String REQUEST_SCHEMA_VIN_KEY = "VIN"; + public static final String REQUEST_SCHEMA_REG_KEY = "REG"; + public static final String REQUEST_SCHEMA_RNS_KEY = "RNS"; + public static final String REQUEST_SCHEMA_RVL_KEY = "RVL"; // TODO: REMOVE TOKEN AFTER SATELLITE SERVICE IS DEPRECATED - public static final String RESPONSE_SCHEMA_TEST_RNS_KEY = "TestRNS"; + public static final String REQUEST_SCHEMA_TEST_RNS_KEY = "TestRNS"; } diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index efde9b5..abaa0ef 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -13,24 +13,24 @@ public class MessageUtils { public static String GetValue(String message, String key) { HashSet knownTokens = new HashSet() {{ - add(Keys.RESPONSE_SCHEMA_SN_KEY); - add(Keys.RESPONSE_SCHEMA_MT_KEY); - add(Keys.RESPONSE_SCHEMA_MSID_KEY); - add(Keys.RESPONSE_SCHEMA_FROM_KEY); - add(Keys.RESPONSE_SCHEMA_TO_KEY); - add(Keys.RESPONSE_SCHEMA_SUBJ_KEY); - add(Keys.RESPONSE_SCHEMA_TEXT_KEY); - add(Keys.RESPONSE_SCHEMA_RE_KEY); - add(Keys.RESPONSE_SCHEMA_SNME_KEY); - add(Keys.RESPONSE_SCHEMA_DL_KEY); - add(Keys.RESPONSE_SCHEMA_LIC_KEY); - add(Keys.RESPONSE_SCHEMA_ODN_KEY); - add(Keys.RESPONSE_SCHEMA_FLC_KEY); - add(Keys.RESPONSE_SCHEMA_VIN_KEY); - add(Keys.RESPONSE_SCHEMA_REG_KEY); - add(Keys.RESPONSE_SCHEMA_RNS_KEY); - add(Keys.RESPONSE_SCHEMA_RVL_KEY); - add(Keys.RESPONSE_SCHEMA_TEST_RNS_KEY); + add(Keys.REQUEST_SCHEMA_SN_KEY); + add(Keys.REQUEST_SCHEMA_MT_KEY); + add(Keys.REQUEST_SCHEMA_MSID_KEY); + add(Keys.REQUEST_SCHEMA_FROM_KEY); + add(Keys.REQUEST_SCHEMA_TO_KEY); + add(Keys.REQUEST_SCHEMA_SUBJ_KEY); + add(Keys.REQUEST_SCHEMA_TEXT_KEY); + add(Keys.REQUEST_SCHEMA_RE_KEY); + add(Keys.REQUEST_SCHEMA_SNME_KEY); + add(Keys.REQUEST_SCHEMA_DL_KEY); + add(Keys.REQUEST_SCHEMA_LIC_KEY); + add(Keys.REQUEST_SCHEMA_ODN_KEY); + add(Keys.REQUEST_SCHEMA_FLC_KEY); + add(Keys.REQUEST_SCHEMA_VIN_KEY); + add(Keys.REQUEST_SCHEMA_REG_KEY); + add(Keys.REQUEST_SCHEMA_RNS_KEY); + add(Keys.REQUEST_SCHEMA_RVL_KEY); + add(Keys.REQUEST_SCHEMA_TEST_RNS_KEY); }}; if (knownTokens.contains(key)) { @@ -48,12 +48,12 @@ public static String GetValue(String message, String key) { int currentEndIndex = message.length(); - - for (String token : knownTokens) { int tokenIndex = message.indexOf(token + SEMICOLLON); + if(tokenIndex == -1) continue; + if (tokenIndex < currentEndIndex && tokenIndex >= startIndex) { currentEndIndex = tokenIndex; } diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index 2a0c359..6ff19ec 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -50,10 +50,10 @@ public String buildResponse(final Body body, final String message) { public String buildErrorResponse(final Body body, final String errorMessage) { return schema - .replace("${from}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_TO_KEY)) //Swap from and to for response - .replace("${to}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_FROM_KEY)) //Swap from and to for response - .replace("${text}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_TEXT_KEY)) - .replace("${re}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.RESPONSE_SCHEMA_RE_KEY)) + .replace("${from}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TO_KEY)) //Swap from and to for response + .replace("${to}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_FROM_KEY)) //Swap from and to for response + .replace("${text}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TEXT_KEY)) + .replace("${re}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_RE_KEY)) .replace("${icbc_response}", errorMessage); } From 6562ee5709d3bb51cf75b6e937f5e99c65a0789c Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 11:17:40 -0800 Subject: [PATCH 10/38] Updated buildError and fixed tests --- .../bc/gov/iamp/bcparis/service/MessageService.java | 13 ++++++++----- .../message/MessageUtilsEdgeCaseGetValueTest.java | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index 6ff19ec..f26a6f6 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -9,7 +9,6 @@ import ca.bc.gov.iamp.bcparis.message.MessageUtils; import org.springframework.stereotype.Service; -import ca.bc.gov.iamp.bcparis.exception.message.InvalidMessage; import ca.bc.gov.iamp.bcparis.model.message.body.Body; @@ -49,11 +48,15 @@ public String buildResponse(final Body body, final String message) { } public String buildErrorResponse(final Body body, final String errorMessage) { + final String receiver = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_FROM_KEY); //This becomes the receiver of the message + final String sender = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TO_KEY); //This will become the sender + final String text = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TEXT_KEY); + final String re = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_RE_KEY); return schema - .replace("${from}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TO_KEY)) //Swap from and to for response - .replace("${to}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_FROM_KEY)) //Swap from and to for response - .replace("${text}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TEXT_KEY)) - .replace("${re}", MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_RE_KEY)) + .replace("${from}", sender.isEmpty() ? "" : sender) + .replace("${to}", receiver.isEmpty() ? "" : receiver) + .replace("${text}", text.isEmpty() ? "" : text) + .replace("${re}", re.isEmpty() ? "": re) .replace("${icbc_response}", errorMessage); } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java index 275199f..9b73e22 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java @@ -16,12 +16,12 @@ public void WithTokenNotKnownTokenShouldThrowException() { @Test public void WithEmptyStringShouldReturnEmptyString() { - MessageUtils.GetValue("", Keys.RESPONSE_SCHEMA_FROM_KEY); + MessageUtils.GetValue("", Keys.REQUEST_SCHEMA_FROM_KEY); } @Test public void WithNullStringShouldReturnNullString() { - MessageUtils.GetValue(null, Keys.RESPONSE_SCHEMA_FROM_KEY); + MessageUtils.GetValue(null, Keys.REQUEST_SCHEMA_FROM_KEY); } } From 0603fe365a6bcf0545cfeca8d2a62ce46a002aba Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 11:19:18 -0800 Subject: [PATCH 11/38] Adding fakeCdata --- .../iamp/bcparis/message/MessageUtils.java | 44 ++++++++++--------- .../ca/bc/gov/iamp/bcparis/FakeCData.java | 8 ++++ 2 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index abaa0ef..e775394 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -8,30 +8,32 @@ public class MessageUtils { - public static final String SEMICOLLON = ":"; + private static final String SEMICOLLON = ":"; + + private static HashSet KNOWN_TOKENS = new HashSet() {{ + add(Keys.REQUEST_SCHEMA_SN_KEY); + add(Keys.REQUEST_SCHEMA_MT_KEY); + add(Keys.REQUEST_SCHEMA_MSID_KEY); + add(Keys.REQUEST_SCHEMA_FROM_KEY); + add(Keys.REQUEST_SCHEMA_TO_KEY); + add(Keys.REQUEST_SCHEMA_SUBJ_KEY); + add(Keys.REQUEST_SCHEMA_TEXT_KEY); + add(Keys.REQUEST_SCHEMA_RE_KEY); + add(Keys.REQUEST_SCHEMA_SNME_KEY); + add(Keys.REQUEST_SCHEMA_DL_KEY); + add(Keys.REQUEST_SCHEMA_LIC_KEY); + add(Keys.REQUEST_SCHEMA_ODN_KEY); + add(Keys.REQUEST_SCHEMA_FLC_KEY); + add(Keys.REQUEST_SCHEMA_VIN_KEY); + add(Keys.REQUEST_SCHEMA_REG_KEY); + add(Keys.REQUEST_SCHEMA_RNS_KEY); + add(Keys.REQUEST_SCHEMA_RVL_KEY); + add(Keys.REQUEST_SCHEMA_TEST_RNS_KEY); + }}; public static String GetValue(String message, String key) { - HashSet knownTokens = new HashSet() {{ - add(Keys.REQUEST_SCHEMA_SN_KEY); - add(Keys.REQUEST_SCHEMA_MT_KEY); - add(Keys.REQUEST_SCHEMA_MSID_KEY); - add(Keys.REQUEST_SCHEMA_FROM_KEY); - add(Keys.REQUEST_SCHEMA_TO_KEY); - add(Keys.REQUEST_SCHEMA_SUBJ_KEY); - add(Keys.REQUEST_SCHEMA_TEXT_KEY); - add(Keys.REQUEST_SCHEMA_RE_KEY); - add(Keys.REQUEST_SCHEMA_SNME_KEY); - add(Keys.REQUEST_SCHEMA_DL_KEY); - add(Keys.REQUEST_SCHEMA_LIC_KEY); - add(Keys.REQUEST_SCHEMA_ODN_KEY); - add(Keys.REQUEST_SCHEMA_FLC_KEY); - add(Keys.REQUEST_SCHEMA_VIN_KEY); - add(Keys.REQUEST_SCHEMA_REG_KEY); - add(Keys.REQUEST_SCHEMA_RNS_KEY); - add(Keys.REQUEST_SCHEMA_RVL_KEY); - add(Keys.REQUEST_SCHEMA_TEST_RNS_KEY); - }}; + HashSet knownTokens = new HashSet<>(KNOWN_TOKENS); if (knownTokens.contains(key)) { knownTokens.remove(key); diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java new file mode 100644 index 0000000..9a4364a --- /dev/null +++ b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java @@ -0,0 +1,8 @@ +package ca.bc.gov.iamp.bcparis; + +public class FakeCData { + + public static String SAMPLE_DRIVER_DL = ""; + + +} From 03c66ca75a29d6f57206d0f5d0963c8c7f3a76e3 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 11:22:24 -0800 Subject: [PATCH 12/38] Changed response to null when Token not found --- .../java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java | 4 ++-- .../bcparis/message/MessageUtilsEdgeCaseGetValueTest.java | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index e775394..16710fe 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -41,10 +41,10 @@ public static String GetValue(String message, String key) { throw new IllegalArgumentException("Key is not a known token."); } - if (StringUtils.isEmpty(message)) return ""; + if (StringUtils.isEmpty(message)) return null; int startIndex = message.indexOf(key + SEMICOLLON); - if (startIndex == -1) return ""; + if (startIndex == -1) return null; startIndex += key.length() + 1; diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java index 9b73e22..21e0be2 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java @@ -16,12 +16,14 @@ public void WithTokenNotKnownTokenShouldThrowException() { @Test public void WithEmptyStringShouldReturnEmptyString() { - MessageUtils.GetValue("", Keys.REQUEST_SCHEMA_FROM_KEY); + String result = MessageUtils.GetValue("", Keys.REQUEST_SCHEMA_FROM_KEY); + Assert.assertNull(result); } @Test public void WithNullStringShouldReturnNullString() { - MessageUtils.GetValue(null, Keys.REQUEST_SCHEMA_FROM_KEY); + String result = MessageUtils.GetValue(null, Keys.REQUEST_SCHEMA_FROM_KEY); + Assert.assertNull(result); } } From 73a4c15030e9f1e88e4720add511ab2903079949 Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 11:30:35 -0800 Subject: [PATCH 13/38] Updated to handle nulls --- .../ca/bc/gov/iamp/bcparis/service/MessageService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index f26a6f6..f912474 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -53,10 +53,10 @@ public String buildErrorResponse(final Body body, final String errorMessage) { final String text = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TEXT_KEY); final String re = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_RE_KEY); return schema - .replace("${from}", sender.isEmpty() ? "" : sender) - .replace("${to}", receiver.isEmpty() ? "" : receiver) - .replace("${text}", text.isEmpty() ? "" : text) - .replace("${re}", re.isEmpty() ? "": re) + .replace("${from}", sender != null ? sender : "") + .replace("${to}", receiver != null ? receiver : "") + .replace("${text}", text != null ? text : "") + .replace("${re}", re != null ? re : "") .replace("${icbc_response}", errorMessage); } From 64ab631c3bf89122a6e46ccfca89fbc46b22cd74 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 11:37:36 -0800 Subject: [PATCH 14/38] Added test --- .../ca/bc/gov/iamp/bcparis/FakeCData.java | 56 ++++++++++++++++++- .../message/MessageUtilsGetValueTest.java | 14 +++-- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java index 9a4364a..5edd807 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java @@ -3,6 +3,60 @@ public class FakeCData { public static String SAMPLE_DRIVER_DL = ""; - + public static String SAMPLE_DRIVER_MULTIPLE_PARAMS = ""; + public static String SAMPLE_DRIVER_SNME = ""; + public static String SAMPLE_INVALID_DRIVER = ""; + public static String SAMPLE_INVALID_VEHICLE = ""; + public static String SAMPLE_POR = ""; + public static String SAMPLE_SATELITTE = ""; + public static String SAMPLE_SATELITTE_ROUND_TRIP = ""; + public static String SAMPLE_VEHICLE_LIC = ""; + public static String SAMPLE_VEHICLE_MULTIPLE_PARAMS = ""; + public static String SAMPLE_VEHICLE_RNS = ""; + public static String SAMPLE_VEHICLE_RVL = ""; + public static String SAMPLE_VEHICLE_VIN = ""; } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 493d363..01685ec 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -6,6 +6,7 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import java.text.MessageFormat; import java.util.Arrays; import java.util.Collection; @@ -16,12 +17,14 @@ public class MessageUtilsGetValueTest { public static Collection data() { return Arrays.asList(new Object[][]{ { - "DL: TEST DL SNME: test smne TEXT: test text FLC: test flc", + "DL: TEST DL SNME: test smne TEXT: test text FLC: test flcVIN:REG:", new String [][] { {"DL", " TEST DL "}, {"SNME", " test smne "}, {"TEXT", " test text "}, - {"FLC", " test flc"} + {"FLC", " test flc"}, + {"VIN", ""}, + {"REG", ""} } }, { @@ -31,11 +34,10 @@ public static Collection data() { {"DL", " 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\"}} }, { - "\rSN:M00001-0001 MT:MUF MSID:BRKR-191220-18:10:04\nFROM:BC41127\nTO:BC41027\nTEXT:BCPARIS Diagnostic Test SOAPUI 443 qwe20190703102453\nHC BC41127 BC41028 G1:JEREMY/ 2019120410145020191204101450\n \r", + "\\u000?345 ?>[[CDATA: \rSN:M00001-0001 MT:MUF MSID:BRKR-191220-18:10:04\nFROM:BC41127\nTO:BC41027\nTEXT:BCPARIS Diagnostic Test SOAPUI 443 qwe20190703102453\nHC BC41127 BC41028 G1:JEREMY/ 2019120410145020191204101450\n \r", new String[][]{ - {"RE", ""} + {"RE", null} } - } }); } @@ -56,7 +58,7 @@ public void execute() { String result = MessageUtils.GetValue(this.input, expected[i][0]); Assert.assertEquals( - "Attribute Value different from input", + MessageFormat.format("Attribute [{0}] Value different from input", expected[i][0]), expected[i][1], result); } From 108f43a997d4459be1962dc487e71f65d33a1186 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 11:49:04 -0800 Subject: [PATCH 15/38] Adding tests --- .../message/MessageUtilsGetValueTest.java | 45 ++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 01685ec..fe19059 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -1,6 +1,8 @@ package ca.bc.gov.iamp.bcparis.message; +import ca.bc.gov.iamp.bcparis.FakeCData; +import ca.bc.gov.iamp.bcparis.Keys; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -17,15 +19,15 @@ public class MessageUtilsGetValueTest { public static Collection data() { return Arrays.asList(new Object[][]{ { - "DL: TEST DL SNME: test smne TEXT: test text FLC: test flcVIN:REG:", - new String [][] { - {"DL", " TEST DL "}, - {"SNME", " test smne "}, - {"TEXT", " test text "}, - {"FLC", " test flc"}, - {"VIN", ""}, - {"REG", ""} - } + "DL: TEST DL SNME: test smne TEXT: test text FLC: test flcVIN:REG:", + new String[][]{ + {"DL", " TEST DL "}, + {"SNME", " test smne "}, + {"TEXT", " test text "}, + {"FLC", " test flc"}, + {"VIN", ""}, + {"REG", ""} + } }, { "HC BC41027]\\\"BC41127]\\\"RE SNME:SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\"BCDL: 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\", @@ -38,6 +40,29 @@ public static Collection data() { new String[][]{ {"RE", null} } + }, + { + FakeCData.SAMPLE_DRIVER_DL, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127 "}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027 "}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, + {Keys.REQUEST_SCHEMA_RE_KEY, null}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001 "}, + {Keys.REQUEST_SCHEMA_MT_KEY, "DUF "}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:07 "}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, null}, + {Keys.REQUEST_SCHEMA_DL_KEY, "3559874\\n]]>"}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, null}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } @@ -53,7 +78,7 @@ public MessageUtilsGetValueTest(String input, String[][] expected) { @Test public void execute() { - for(int i = 0; i < expected.length; i++) { + for (int i = 0; i < expected.length; i++) { String result = MessageUtils.GetValue(this.input, expected[i][0]); From d9817fa350bc6e787a784f150e586eb98721afa0 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:10:59 -0800 Subject: [PATCH 16/38] Added better format for data --- .../gov/iamp/bcparis/message/MessageUtils.java | 7 ++++++- .../java/ca/bc/gov/iamp/bcparis/FakeCData.java | 10 +++++----- .../message/MessageUtilsGetValueTest.java | 18 +++++++++--------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 16710fe..2d92f39 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -9,6 +9,8 @@ public class MessageUtils { private static final String SEMICOLLON = ":"; + private static final String STRING_END_ONE = "]]>$"; + private static final String STRING_END_TWO = "\n$"; private static HashSet KNOWN_TOKENS = new HashSet() {{ add(Keys.REQUEST_SCHEMA_SN_KEY); @@ -33,6 +35,9 @@ public class MessageUtils { public static String GetValue(String message, String key) { + message = message.replaceAll(STRING_END_ONE, ""); + message = message.replaceAll(STRING_END_TWO, ""); + HashSet knownTokens = new HashSet<>(KNOWN_TOKENS); if (knownTokens.contains(key)) { @@ -61,7 +66,7 @@ public static String GetValue(String message, String key) { } } - return message.substring(startIndex, currentEndIndex); + return message.substring(startIndex, currentEndIndex).replaceAll("\\s+$", ""); } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java index 5edd807..641fe9f 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java @@ -2,15 +2,15 @@ public class FakeCData { - public static String SAMPLE_DRIVER_DL = ""; - public static String SAMPLE_DRIVER_MULTIPLE_PARAMS = ""; - public static String SAMPLE_DRIVER_SNME = ""; - public static String SAMPLE_INVALID_DRIVER = ""; + public static String SAMPLE_DRIVER_DL = ""; + public static String SAMPLE_DRIVER_MULTIPLE_PARAMS = ""; + public static String SAMPLE_DRIVER_SNME = ""; + public static String SAMPLE_INVALID_DRIVER = ""; public static String SAMPLE_INVALID_VEHICLE = ""; - public static String SAMPLE_POR = ""; + public static String SAMPLE_POR = ""; public static String SAMPLE_SATELITTE = " data() { { "DL: TEST DL SNME: test smne TEXT: test text FLC: test flcVIN:REG:", new String[][]{ - {"DL", " TEST DL "}, - {"SNME", " test smne "}, - {"TEXT", " test text "}, + {"DL", " TEST DL"}, + {"SNME", " test smne"}, + {"TEXT", " test text"}, {"FLC", " test flc"}, {"VIN", ""}, {"REG", ""} @@ -44,16 +44,16 @@ public static Collection data() { { FakeCData.SAMPLE_DRIVER_DL, new String[][]{ - {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127 "}, - {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027 "}, + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027"}, {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, {Keys.REQUEST_SCHEMA_RE_KEY, null}, - {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001 "}, - {Keys.REQUEST_SCHEMA_MT_KEY, "DUF "}, - {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:07 "}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "DUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:07"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, {Keys.REQUEST_SCHEMA_SNME_KEY, null}, - {Keys.REQUEST_SCHEMA_DL_KEY, "3559874\\n]]>"}, + {Keys.REQUEST_SCHEMA_DL_KEY, "3559874"}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, {Keys.REQUEST_SCHEMA_FLC_KEY, null}, From 7ebcf434e1e3167c7efb720afad87f62ce2b9866 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:17:21 -0800 Subject: [PATCH 17/38] Refactored MessageUtils --- .../iamp/bcparis/message/MessageUtils.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 2d92f39..2ca518b 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -35,16 +35,9 @@ public class MessageUtils { public static String GetValue(String message, String key) { - message = message.replaceAll(STRING_END_ONE, ""); - message = message.replaceAll(STRING_END_TWO, ""); - - HashSet knownTokens = new HashSet<>(KNOWN_TOKENS); + message = removeKnownEnd(message); - if (knownTokens.contains(key)) { - knownTokens.remove(key); - } else { - throw new IllegalArgumentException("Key is not a known token."); - } + HashSet knownTokens = buildKnownTokens(key); if (StringUtils.isEmpty(message)) return null; @@ -70,6 +63,19 @@ public static String GetValue(String message, String key) { } + private static String removeKnownEnd(String message) { + message = message.replaceAll(STRING_END_ONE, ""); + return message.replaceAll(STRING_END_TWO, ""); + } + + private static HashSet buildKnownTokens(String token) { + if (!KNOWN_TOKENS.contains(token)) throw new IllegalArgumentException("Key is not a known token."); + + HashSet result = new HashSet<>(KNOWN_TOKENS); + result.remove(token); + return result; + } + } From 2d491483aa0e81828dcf6f520162d1a424036567 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:22:30 -0800 Subject: [PATCH 18/38] Adding test for multiparam --- .../ca/bc/gov/iamp/bcparis/FakeCData.java | 2 +- .../message/MessageUtilsGetValueTest.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java index 641fe9f..4ae58f8 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/FakeCData.java @@ -3,7 +3,7 @@ public class FakeCData { public static String SAMPLE_DRIVER_DL = ""; - public static String SAMPLE_DRIVER_MULTIPLE_PARAMS = ""; + public static String SAMPLE_DRIVER_MULTIPLE_PARAMS = ""; public static String SAMPLE_DRIVER_SNME = ""; public static String SAMPLE_INVALID_DRIVER = ""; public static String SAMPLE_INVALID_VEHICLE = " data() { {Keys.REQUEST_SCHEMA_RVL_KEY, null}, {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} } + }, + { + FakeCData.SAMPLE_DRIVER_MULTIPLE_PARAMS, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, "BCPARIS Diagnostic Test qwe20190827173834"}, + {Keys.REQUEST_SCHEMA_RE_KEY, null}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "DUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:07"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214"}, + {Keys.REQUEST_SCHEMA_DL_KEY, "3559874"}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, null}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } From ed4cdfe5862e5da6e9a13fd4555577ce63eae88f Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:25:55 -0800 Subject: [PATCH 19/38] Adding test for smne --- .../message/MessageUtilsGetValueTest.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index c04b6ac..2417d2e 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -65,7 +65,7 @@ public static Collection data() { } }, { - FakeCData.SAMPLE_DRIVER_MULTIPLE_PARAMS, + FakeCData.SAMPLE_DRIVER_MULTIPLE_PARAMS, new String[][]{ {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027"}, @@ -86,6 +86,29 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_RVL_KEY, null}, {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} } + }, + { + FakeCData.SAMPLE_DRIVER_SNME, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 0509\nHC BC40940\nBC41027"}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214\n\n2019051520054820190515200548"}, + {Keys.REQUEST_SCHEMA_DL_KEY, null}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, null}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } From 550e7f24c6d9c22584c04890584855aa1e19e07d Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:30:30 -0800 Subject: [PATCH 20/38] Added test for SAMPLE_INVALID_DRIVER --- .../message/MessageUtilsGetValueTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 2417d2e..b0c2239 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -109,6 +109,29 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_RVL_KEY, null}, {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} } + }, + { + FakeCData.SAMPLE_INVALID_DRIVER, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, + {Keys.REQUEST_SCHEMA_RE_KEY, null}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214\n\n2019051520054820190515200548"}, + {Keys.REQUEST_SCHEMA_DL_KEY, null}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, null}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } From 7a68c0a0adfc5f570256351a0a49b13afc558ed9 Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 12:37:37 -0800 Subject: [PATCH 21/38] Use message format add tests --- .../iamp/bcparis/service/MessageService.java | 15 ++++---- .../bcparis/service/MessageServiceTest.java | 35 ++++++++++++++++++- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index f912474..7bafe8d 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -1,5 +1,6 @@ package ca.bc.gov.iamp.bcparis.service; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -23,6 +24,13 @@ public class MessageService { "TEXT:${text}${re}" + NEW_LINE + NEW_LINE + "${icbc_response}"; + private final String messageFormat = "SEND MT:M" + NEW_LINE + + "FMT:Y" + NEW_LINE + + "FROM:{0}" + NEW_LINE + + "TO:{1}" + NEW_LINE + + "TEXT:{2}{3}" + NEW_LINE + + NEW_LINE + + "{4}"; public List getQueryAttributesList(Body body, List validAttributes) { final List result = new ArrayList<>(); @@ -52,12 +60,7 @@ public String buildErrorResponse(final Body body, final String errorMessage) { final String sender = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TO_KEY); //This will become the sender final String text = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TEXT_KEY); final String re = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_RE_KEY); - return schema - .replace("${from}", sender != null ? sender : "") - .replace("${to}", receiver != null ? receiver : "") - .replace("${text}", text != null ? text : "") - .replace("${re}", re != null ? re : "") - .replace("${icbc_response}", errorMessage); + return MessageFormat.format(messageFormat, (sender != null ? sender : ""),(receiver != null ? receiver : ""), (text != null ? text : ""),(re != null ? String.format("RE:%s", re) : ""), errorMessage); } public String escape(String message) { diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java index 0b7e8a9..ca5c954 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java @@ -1,7 +1,10 @@ package ca.bc.gov.iamp.bcparis.service; +import ca.bc.gov.iamp.bcparis.model.message.Layer7Message; import org.junit.Assert; import org.junit.Test; +import org.springframework.util.StringUtils; +import test.util.BCPARISTestUtil; public class MessageServiceTest { @@ -12,5 +15,35 @@ public void valid_escape() { final String notEscaped = "&\"<>"; Assert.assertEquals("&"<>", service.escape(notEscaped) ); } - + + @Test + public void test_build_vehicle_error_response() { + final Layer7Message message = BCPARISTestUtil.getInvalidVehicleQuery(); + MessageService service = new MessageService(); + String result = service.buildErrorResponse(message.getEnvelope().getBody(),"Error"); + + + Assert.assertEquals(1, StringUtils.countOccurrencesOf(result, "SEND MT:M\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FROM:BC41028\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TO:BC41127\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TEXT:RE: 8261\r\nHC BC11422\r\nBC41028\n\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result,"Error")); + } + @Test + public void test_build_error_driver_response_with() { + final Layer7Message message = BCPARISTestUtil.getInvalidVehicleQuery(); + MessageService service = new MessageService(); + String result = service.buildErrorResponse(message.getEnvelope().getBody(),"Error"); + + + Assert.assertEquals(1, StringUtils.countOccurrencesOf(result, "SEND MT:M\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FROM:BC41028\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TO:BC41127\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TEXT: 8261\r\nHC BC11422\r\nBC41028\n\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result,"Error")); + } } From 5469143492b2021b1118dc5e535e684fbb075d8a Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:37:49 -0800 Subject: [PATCH 22/38] Added test for SAMPLE_INVALID_VEHICLE --- .../message/MessageUtilsGetValueTest.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index b0c2239..48b1647 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -118,10 +118,33 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, {Keys.REQUEST_SCHEMA_RE_KEY, null}, {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "DUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:07"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, null}, + {Keys.REQUEST_SCHEMA_DL_KEY, null}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, null}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } + }, + { + FakeCData.SAMPLE_INVALID_VEHICLE, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41028"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 8261\nHC BC11422\nBC41028"}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, - {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:04"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214\n\n2019051520054820190515200548"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, null}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, From dde8081e8110a9f832f799ac065768ad883e0381 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:40:45 -0800 Subject: [PATCH 23/38] Added test for SAMPLE_POR --- .../message/MessageUtilsGetValueTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 48b1647..27c90e2 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -155,6 +155,29 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_RVL_KEY, null}, {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} } + }, + { + FakeCData.SAMPLE_POR, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41029"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 0509\nHC BC40940\nBC41027"}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "WISKIN/G1:TOMAS/G2:GEORGE/G3:ALPHONSE/DOB:20050505\n\n2019051520054820190515200548"}, + {Keys.REQUEST_SCHEMA_DL_KEY, null}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, null}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } From 1f1c896df2f2309ecb2d346025dafe1f962f022a Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:45:00 -0800 Subject: [PATCH 24/38] Added tests for SAMPLE_SATELITTE --- .../message/MessageUtilsGetValueTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 27c90e2..0852f8d 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -178,6 +178,29 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_RVL_KEY, null}, {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} } + }, + { + FakeCData.SAMPLE_SATELITTE, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, "BCPARIS Diagnostic Test qwe20190820202619"}, + {Keys.REQUEST_SCHEMA_RE_KEY, null}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190820-16:26:19"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/\n \n2019082020261920190820202619"}, + {Keys.REQUEST_SCHEMA_DL_KEY, null}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, "2156746"}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } From 56ada384ec9eaf806e5aa2a301c3ebff81a49974 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:46:24 -0800 Subject: [PATCH 25/38] Added test for SAMPLE_SATELITTE_ROUND_TRIP --- .../message/MessageUtilsGetValueTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 0852f8d..ab250e6 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -201,6 +201,29 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_RVL_KEY, null}, {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} } + }, + { + FakeCData.SAMPLE_SATELITTE_ROUND_TRIP, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, "BCPARIS Diagnostic Test qwe20190820202619"}, + {Keys.REQUEST_SCHEMA_RE_KEY, null}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190820-16:26:19"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/\n \n2019082020261920190820202619"}, + {Keys.REQUEST_SCHEMA_DL_KEY, null}, + {Keys.REQUEST_SCHEMA_LIC_KEY, null}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, "2156746"}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } From ca477d7881490be5791a42ee2e9006f6998cbfd4 Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 12:46:44 -0800 Subject: [PATCH 26/38] Adding test for driver and vehicle --- .../bc/gov/iamp/bcparis/service/MessageServiceTest.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java index ca5c954..6b9a969 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java @@ -28,22 +28,20 @@ public void test_build_vehicle_error_response() { Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FROM:BC41028\n")); Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TO:BC41127\n")); Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TEXT:RE: 8261\r\nHC BC11422\r\nBC41028\n\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); Assert.assertEquals(1,StringUtils.countOccurrencesOf(result,"Error")); } @Test public void test_build_error_driver_response_with() { - final Layer7Message message = BCPARISTestUtil.getInvalidVehicleQuery(); + final Layer7Message message = BCPARISTestUtil.getInvalidDriverQuery(); MessageService service = new MessageService(); String result = service.buildErrorResponse(message.getEnvelope().getBody(),"Error"); Assert.assertEquals(1, StringUtils.countOccurrencesOf(result, "SEND MT:M\n")); Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FROM:BC41028\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FROM:BC41027\n")); Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TO:BC41127\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TEXT: 8261\r\nHC BC11422\r\nBC41028\n\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); + Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TEXT:\\n\n\n")); Assert.assertEquals(1,StringUtils.countOccurrencesOf(result,"Error")); } } From 700cb697b10116717087c0671e85dbe1b370c2c6 Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 12:51:41 -0800 Subject: [PATCH 27/38] Updated null check --- .../java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 2ca518b..5b0e196 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -34,13 +34,11 @@ public class MessageUtils { }}; public static String GetValue(String message, String key) { - + if (StringUtils.isEmpty(message)) return null; message = removeKnownEnd(message); HashSet knownTokens = buildKnownTokens(key); - if (StringUtils.isEmpty(message)) return null; - int startIndex = message.indexOf(key + SEMICOLLON); if (startIndex == -1) return null; From dbcc86c61049943bae162396e1fc216952501e28 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:52:49 -0800 Subject: [PATCH 28/38] Added test for SAMPLE_VEHICLE_LIC --- .../message/MessageUtilsGetValueTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index ab250e6..dfea2c2 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -224,6 +224,29 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_RVL_KEY, null}, {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} } + }, + { + FakeCData.SAMPLE_VEHICLE_LIC, + new String[][]{ + {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, + {Keys.REQUEST_SCHEMA_TO_KEY, "BC41028"}, + {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 8261\nHC BC11422 \nBC41028"}, + {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, + {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, + {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:04"}, + {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, + {Keys.REQUEST_SCHEMA_SNME_KEY, null}, + {Keys.REQUEST_SCHEMA_DL_KEY, null}, + {Keys.REQUEST_SCHEMA_LIC_KEY, "PN890H\n\n2019051520020420190515200204"}, + {Keys.REQUEST_SCHEMA_ODN_KEY, null}, + {Keys.REQUEST_SCHEMA_FLC_KEY, null}, + {Keys.REQUEST_SCHEMA_VIN_KEY, null}, + {Keys.REQUEST_SCHEMA_REG_KEY, null}, + {Keys.REQUEST_SCHEMA_RNS_KEY, null}, + {Keys.REQUEST_SCHEMA_RVL_KEY, null}, + {Keys.REQUEST_SCHEMA_TEST_RNS_KEY, null} + } } }); } From 90569751e82341f0f82b40ffd0e56e893cee8414 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 24 Dec 2019 12:56:28 -0800 Subject: [PATCH 29/38] reformatting message --- .../ca/bc/gov/iamp/bcparis/service/MessageService.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index 7bafe8d..a878023 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -24,13 +24,7 @@ public class MessageService { "TEXT:${text}${re}" + NEW_LINE + NEW_LINE + "${icbc_response}"; - private final String messageFormat = "SEND MT:M" + NEW_LINE + - "FMT:Y" + NEW_LINE + - "FROM:{0}" + NEW_LINE + - "TO:{1}" + NEW_LINE + - "TEXT:{2}{3}" + NEW_LINE + - NEW_LINE + - "{4}"; + private final String messageFormat = "SEND MT:M\nFMT:Y\nFROM:{0}\nTO:{1}\nTEXT:{2}{3}\n\n{4}"; public List getQueryAttributesList(Body body, List validAttributes) { final List result = new ArrayList<>(); From e5c661a31e86cd47b4edf7202a0e0fe361ba2a38 Mon Sep 17 00:00:00 2001 From: TayGov Date: Tue, 24 Dec 2019 13:04:04 -0800 Subject: [PATCH 30/38] Removed redundant null checks --- .../java/ca/bc/gov/iamp/bcparis/service/MessageService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java index 7bafe8d..91cdf8f 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/service/MessageService.java @@ -60,7 +60,7 @@ public String buildErrorResponse(final Body body, final String errorMessage) { final String sender = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TO_KEY); //This will become the sender final String text = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_TEXT_KEY); final String re = MessageUtils.GetValue(body.getMsgFFmt(),Keys.REQUEST_SCHEMA_RE_KEY); - return MessageFormat.format(messageFormat, (sender != null ? sender : ""),(receiver != null ? receiver : ""), (text != null ? text : ""),(re != null ? String.format("RE:%s", re) : ""), errorMessage); + return MessageFormat.format(messageFormat, sender, receiver, text,(re != null ? String.format("RE:%s", re):""), errorMessage); } public String escape(String message) { From 6adbce0a1282b536d276ca1cf9ccfd8080659b5f Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 26 Dec 2019 07:38:37 -0800 Subject: [PATCH 31/38] wip --- .../iamp/bcparis/message/MessageUtils.java | 21 +++++---------- .../MessageUtilsEdgeCaseGetValueTest.java | 26 +++++++++++++++++-- .../message/MessageUtilsGetValueTest.java | 2 +- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 5b0e196..3e85846 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -11,6 +11,7 @@ public class MessageUtils { private static final String SEMICOLLON = ":"; private static final String STRING_END_ONE = "]]>$"; private static final String STRING_END_TWO = "\n$"; + private static final String TOKEN_REGEX = "\\s+\\w+:.*"; private static HashSet KNOWN_TOKENS = new HashSet() {{ add(Keys.REQUEST_SCHEMA_SN_KEY); @@ -34,23 +35,23 @@ public class MessageUtils { }}; public static String GetValue(String message, String key) { + if (StringUtils.isEmpty(message)) return null; - message = removeKnownEnd(message); - HashSet knownTokens = buildKnownTokens(key); + message = removeKnownEnd(message); int startIndex = message.indexOf(key + SEMICOLLON); if (startIndex == -1) return null; startIndex += key.length() + 1; - int currentEndIndex = message.length(); + message = message.substring(startIndex); - for (String token : knownTokens) { + int currentEndIndex = message.length(); - int tokenIndex = message.indexOf(token + SEMICOLLON); + for (String token : KNOWN_TOKENS) { - if(tokenIndex == -1) continue; + int tokenIndex = message.indexOf(token + SEMICOLLON, startIndex); if (tokenIndex < currentEndIndex && tokenIndex >= startIndex) { currentEndIndex = tokenIndex; @@ -66,14 +67,6 @@ private static String removeKnownEnd(String message) { return message.replaceAll(STRING_END_TWO, ""); } - private static HashSet buildKnownTokens(String token) { - if (!KNOWN_TOKENS.contains(token)) throw new IllegalArgumentException("Key is not a known token."); - - HashSet result = new HashSet<>(KNOWN_TOKENS); - result.remove(token); - return result; - } - } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java index 21e0be2..dae0a44 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java @@ -1,10 +1,12 @@ package ca.bc.gov.iamp.bcparis.message; import ca.bc.gov.iamp.bcparis.Keys; +import ca.bc.gov.iamp.bcparis.model.message.body.Body; +import ca.bc.gov.iamp.bcparis.util.RegexTokenizer; import org.junit.Assert; import org.junit.Test; - -import java.security.Key; +import java.util.Arrays; +import java.util.List; public class MessageUtilsEdgeCaseGetValueTest { @@ -26,4 +28,24 @@ public void WithNullStringShouldReturnNullString() { Assert.assertNull(result); } + @Test + public void Test() { + List delimiters = Arrays.asList("SN:", "MT:", "MSID:", "FROM:", "TO:", "SUBJ:", "TEXT:", "RE:", + "TestRNS:", // Satellite test + "SNME:", //POR and Driver + "DL:", //Driver + "LIC:", "ODN:", "TAG:", "FLC:", "VIN:", "REG:", "RNS:", "RVL:", // Vehicle + "\\n","\\\\n", "\n\n", "\\\\n\\\\n"); // New line and New line escaped (backslash) + + List result = new RegexTokenizer("\"HC BC41027]\\\\\\\"BC41127]\\\\\\\"RE SNME:SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\\\\\"BCDL: 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\\\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\\\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\\\\\"DUNCAN BC]\\\\\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\\\\\"V9L 3X3]\\\\\\\" OTHER JUR DL:]\\\\\",\n", delimiters).getTokens(); + + Body body = new Body(); + + body.setCdataAttributes(result); + + String result3 = body.getCDATAAttribute("SNME"); + + Assert.assertNull(result); + } + } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index dfea2c2..9c650d2 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -19,7 +19,7 @@ public class MessageUtilsGetValueTest { public static Collection data() { return Arrays.asList(new Object[][]{ { - "DL: TEST DL SNME: test smne TEXT: test text FLC: test flcVIN:REG:", + "DL: TEST DL SNME: test smne TEXT: test text FLC: test flc VIN:REG:", new String[][]{ {"DL", " TEST DL"}, {"SNME", " test smne"}, From aa918e25a2f4cb087a820f50a6d797bcb3e02708 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 26 Dec 2019 08:49:50 -0800 Subject: [PATCH 32/38] Added test to check if new algo produce same as old --- .../iamp/bcparis/message/MessageUtils.java | 14 ++-- .../MessageUtilsEdgeCaseGetValueTest.java | 19 ----- .../message/MessageUtilsGetValueTest.java | 69 +++++++++++++------ 3 files changed, 58 insertions(+), 44 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 3e85846..7916a16 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -11,7 +11,6 @@ public class MessageUtils { private static final String SEMICOLLON = ":"; private static final String STRING_END_ONE = "]]>$"; private static final String STRING_END_TWO = "\n$"; - private static final String TOKEN_REGEX = "\\s+\\w+:.*"; private static HashSet KNOWN_TOKENS = new HashSet() {{ add(Keys.REQUEST_SCHEMA_SN_KEY); @@ -51,14 +50,21 @@ public static String GetValue(String message, String key) { for (String token : KNOWN_TOKENS) { - int tokenIndex = message.indexOf(token + SEMICOLLON, startIndex); + int tokenIndex = message.indexOf(token + SEMICOLLON); - if (tokenIndex < currentEndIndex && tokenIndex >= startIndex) { + if (tokenIndex < currentEndIndex && tokenIndex >= 0) { currentEndIndex = tokenIndex; } } - return message.substring(startIndex, currentEndIndex).replaceAll("\\s+$", ""); + message = message.substring(0, currentEndIndex); + + String[] results = message.split("\n"); + + if(results.length == 0) return ""; + + return results[0].replaceAll("\\s+$", ""); + } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java index dae0a44..f210bb7 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsEdgeCaseGetValueTest.java @@ -28,24 +28,5 @@ public void WithNullStringShouldReturnNullString() { Assert.assertNull(result); } - @Test - public void Test() { - List delimiters = Arrays.asList("SN:", "MT:", "MSID:", "FROM:", "TO:", "SUBJ:", "TEXT:", "RE:", - "TestRNS:", // Satellite test - "SNME:", //POR and Driver - "DL:", //Driver - "LIC:", "ODN:", "TAG:", "FLC:", "VIN:", "REG:", "RNS:", "RVL:", // Vehicle - "\\n","\\\\n", "\n\n", "\\\\n\\\\n"); // New line and New line escaped (backslash) - - List result = new RegexTokenizer("\"HC BC41027]\\\\\\\"BC41127]\\\\\\\"RE SNME:SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\\\\\"BCDL: 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\\\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\\\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\\\\\"DUNCAN BC]\\\\\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\\\\\"V9L 3X3]\\\\\\\" OTHER JUR DL:]\\\\\",\n", delimiters).getTokens(); - - Body body = new Body(); - - body.setCdataAttributes(result); - - String result3 = body.getCDATAAttribute("SNME"); - - Assert.assertNull(result); - } } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 9c650d2..8ec5fe2 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -3,18 +3,26 @@ import ca.bc.gov.iamp.bcparis.FakeCData; import ca.bc.gov.iamp.bcparis.Keys; +import ca.bc.gov.iamp.bcparis.model.message.body.Body; +import ca.bc.gov.iamp.bcparis.util.RegexTokenizer; import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ErrorCollector; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.text.MessageFormat; import java.util.Arrays; import java.util.Collection; +import java.util.List; @RunWith(Parameterized.class) public class MessageUtilsGetValueTest { + @Rule + public ErrorCollector collector = new ErrorCollector(); + @Parameterized.Parameters public static Collection data() { return Arrays.asList(new Object[][]{ @@ -29,18 +37,6 @@ public static Collection data() { {"REG", ""} } }, - { - "HC BC41027]\\\"BC41127]\\\"RE SNME:SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\"BCDL: 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\", - new String[][]{ - {"SNME", "SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F]\\\"BC"}, - {"DL", " 7088384 STATUS: NORMAL PRIMARY DL STATUS: NONE]\\\"SMITH, JUDY MADELINE LEARNER DL STATUS: NONE]\\\"M/A BOX 195 TEMPORARY DL STATUS: NONE]\\\"DUNCAN BC]\\\"5175 TZOUHALEM RD LICENCE TYPE:CLIENT STUB]\\\"V9L 3X3]\\\" OTHER JUR DL:]\\"}} - }, - { - "\\u000?345 ?>[[CDATA: \rSN:M00001-0001 MT:MUF MSID:BRKR-191220-18:10:04\nFROM:BC41127\nTO:BC41027\nTEXT:BCPARIS Diagnostic Test SOAPUI 443 qwe20190703102453\nHC BC41127 BC41028 G1:JEREMY/ 2019120410145020191204101450\n \r", - new String[][]{ - {"RE", null} - } - }, { FakeCData.SAMPLE_DRIVER_DL, new String[][]{ @@ -93,12 +89,12 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, {Keys.REQUEST_SCHEMA_TO_KEY, "BC41027"}, {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, - {Keys.REQUEST_SCHEMA_RE_KEY, " 0509\nHC BC40940\nBC41027"}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 0509"}, {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214\n\n2019051520054820190515200548"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -139,7 +135,7 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, {Keys.REQUEST_SCHEMA_TO_KEY, "BC41028"}, {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, - {Keys.REQUEST_SCHEMA_RE_KEY, " 8261\nHC BC11422\nBC41028"}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 8261"}, {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:04"}, @@ -162,12 +158,12 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, {Keys.REQUEST_SCHEMA_TO_KEY, "BC41029"}, {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, - {Keys.REQUEST_SCHEMA_RE_KEY, " 0509\nHC BC40940\nBC41027"}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 0509"}, {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "WISKIN/G1:TOMAS/G2:GEORGE/G3:ALPHONSE/DOB:20050505\n\n2019051520054820190515200548"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "WISKIN/G1:TOMAS/G2:GEORGE/G3:ALPHONSE/DOB:20050505"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -190,7 +186,7 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190820-16:26:19"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/\n \n2019082020261920190820202619"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -213,7 +209,7 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190820-16:26:19"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/\n \n2019082020261920190820202619"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -231,14 +227,14 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, {Keys.REQUEST_SCHEMA_TO_KEY, "BC41028"}, {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, - {Keys.REQUEST_SCHEMA_RE_KEY, " 8261\nHC BC11422 \nBC41028"}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 8261"}, {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:04"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, {Keys.REQUEST_SCHEMA_SNME_KEY, null}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, - {Keys.REQUEST_SCHEMA_LIC_KEY, "PN890H\n\n2019051520020420190515200204"}, + {Keys.REQUEST_SCHEMA_LIC_KEY, "PN890H"}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, {Keys.REQUEST_SCHEMA_FLC_KEY, null}, {Keys.REQUEST_SCHEMA_VIN_KEY, null}, @@ -266,6 +262,19 @@ public void execute() { String result = MessageUtils.GetValue(this.input, expected[i][0]); + String oldResult = executeOldAlgo(this.input, this.expected[i][0]); + + + if(result == null && oldResult.equals("")) { + } else { + try { + Assert.assertEquals(MessageFormat.format("Attribute [{0}] new result did not produced same:", expected[i][0]), oldResult, result); + } catch (Throwable t) { + collector.addError(t); + } + } + + Assert.assertEquals( MessageFormat.format("Attribute [{0}] Value different from input", expected[i][0]), expected[i][1], @@ -274,4 +283,22 @@ public void execute() { } + public String executeOldAlgo(String text, String key) { + List delimiters = Arrays.asList("SN:", "MT:", "MSID:", "FROM:", "TO:", "SUBJ:", "TEXT:", "RE:", + "TestRNS:", // Satellite test + "SNME:", //POR and Driver + "DL:", //Driver + "LIC:", "ODN:", "TAG:", "FLC:", "VIN:", "REG:", "RNS:", "RVL:", // Vehicle + "\\n","\\\\n", "\n\n", "\\\\n\\\\n"); // New line and New line escaped (backslash) + + List result = new RegexTokenizer(text, delimiters).getTokens(); + + Body body = new Body(); + + body.setCdataAttributes(result); + + return body.getCDATAAttribute(key); + + } + } From 6961ec996cb7eee9cc4d3de13f0deb2da32c2a3b Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 26 Dec 2019 09:03:01 -0800 Subject: [PATCH 33/38] fixed issue with multilines --- .../iamp/bcparis/message/MessageUtils.java | 10 ++---- .../message/MessageUtilsGetValueTest.java | 33 +++++++++++-------- .../bcparis/service/MessageServiceTest.java | 12 +++---- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 7916a16..2214a8c 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -35,6 +35,8 @@ public class MessageUtils { public static String GetValue(String message, String key) { + if(!KNOWN_TOKENS.contains(key)) throw new IllegalArgumentException("key must be a known token"); + if (StringUtils.isEmpty(message)) return null; message = removeKnownEnd(message); @@ -57,13 +59,7 @@ public static String GetValue(String message, String key) { } } - message = message.substring(0, currentEndIndex); - - String[] results = message.split("\n"); - - if(results.length == 0) return ""; - - return results[0].replaceAll("\\s+$", ""); + return message.substring(0, currentEndIndex).replaceAll("\\s+$", ""); } diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java index 8ec5fe2..314d7d7 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/message/MessageUtilsGetValueTest.java @@ -94,7 +94,7 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "NEWMAN/G1:OLDSON/G2:MIKE/DOB:19900214\n\n2019051520054820190515200548"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -163,7 +163,7 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:05:48"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "WISKIN/G1:TOMAS/G2:GEORGE/G3:ALPHONSE/DOB:20050505"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "WISKIN/G1:TOMAS/G2:GEORGE/G3:ALPHONSE/DOB:20050505\n\n2019051520054820190515200548"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -186,7 +186,7 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190820-16:26:19"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/\n \n2019082020261920190820202619"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -209,7 +209,7 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190820-16:26:19"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, - {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/"}, + {Keys.REQUEST_SCHEMA_SNME_KEY, "SMITH/G1:JOHN/\n \n2019082020261920190820202619"}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, {Keys.REQUEST_SCHEMA_LIC_KEY, null}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, @@ -227,14 +227,14 @@ public static Collection data() { {Keys.REQUEST_SCHEMA_FROM_KEY, "BC41127"}, {Keys.REQUEST_SCHEMA_TO_KEY, "BC41028"}, {Keys.REQUEST_SCHEMA_TEXT_KEY, ""}, - {Keys.REQUEST_SCHEMA_RE_KEY, " 8261"}, + {Keys.REQUEST_SCHEMA_RE_KEY, " 8261\nHC BC11422 \nBC41028"}, {Keys.REQUEST_SCHEMA_SN_KEY, "M00001-0001"}, {Keys.REQUEST_SCHEMA_MT_KEY, "MUF"}, {Keys.REQUEST_SCHEMA_MSID_KEY, "BRKR-190515-20:02:04"}, {Keys.REQUEST_SCHEMA_SUBJ_KEY, null}, {Keys.REQUEST_SCHEMA_SNME_KEY, null}, {Keys.REQUEST_SCHEMA_DL_KEY, null}, - {Keys.REQUEST_SCHEMA_LIC_KEY, "PN890H"}, + {Keys.REQUEST_SCHEMA_LIC_KEY, "PN890H\n\n2019051520020420190515200204"}, {Keys.REQUEST_SCHEMA_ODN_KEY, null}, {Keys.REQUEST_SCHEMA_FLC_KEY, null}, {Keys.REQUEST_SCHEMA_VIN_KEY, null}, @@ -264,9 +264,10 @@ public void execute() { String oldResult = executeOldAlgo(this.input, this.expected[i][0]); - - if(result == null && oldResult.equals("")) { - } else { + // skipping null <> "" + if(!(result == null && oldResult.equals(""))) { + // skipping multilines + if(result.split("\n").length > 1) break; try { Assert.assertEquals(MessageFormat.format("Attribute [{0}] new result did not produced same:", expected[i][0]), oldResult, result); } catch (Throwable t) { @@ -274,13 +275,17 @@ public void execute() { } } - - Assert.assertEquals( - MessageFormat.format("Attribute [{0}] Value different from input", expected[i][0]), - expected[i][1], - result); + try { + Assert.assertEquals( + MessageFormat.format("Attribute [{0}] Value different from input", expected[i][0]), + expected[i][1], + result); + } catch (Throwable t) { + collector.addError(t); + } } + } public String executeOldAlgo(String text, String key) { diff --git a/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java b/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java index 6b9a969..01df790 100644 --- a/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java +++ b/src/test/java/ca/bc/gov/iamp/bcparis/service/MessageServiceTest.java @@ -23,12 +23,12 @@ public void test_build_vehicle_error_response() { String result = service.buildErrorResponse(message.getEnvelope().getBody(),"Error"); - Assert.assertEquals(1, StringUtils.countOccurrencesOf(result, "SEND MT:M\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FMT:Y\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "FROM:BC41028\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TO:BC41127\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result, "TEXT:RE: 8261\r\nHC BC11422\r\nBC41028\n\n")); - Assert.assertEquals(1,StringUtils.countOccurrencesOf(result,"Error")); + Assert.assertTrue(result.contains("SEND MT:M\n")); + Assert.assertTrue(result.contains("FMT:Y\n")); + Assert.assertTrue(result.contains("FROM:BC41028\n")); + Assert.assertTrue(result.contains("TO:BC41127\n")); + Assert.assertTrue(result.contains("TEXT:RE: 8261\r\nHC BC11422\r\nBC41028\n\n")); + Assert.assertTrue(result.contains("Error")); } @Test public void test_build_error_driver_response_with() { From b0064a6f81c52d2a3d674db2f8563e4fc2f263ab Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 27 Dec 2019 08:53:33 -0800 Subject: [PATCH 34/38] Fixed semicolon check --- .../iamp/bcparis/message/MessageUtils.java | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index 2214a8c..fe1ac12 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -41,13 +41,31 @@ public static String GetValue(String message, String key) { message = removeKnownEnd(message); - int startIndex = message.indexOf(key + SEMICOLLON); + message = removeToToken(message, key); + + if(message == null) return null; + + int currentEndIndex = getEndIndex(message); + + return message.substring(0, currentEndIndex).replaceAll("\\s+$", ""); + + } + + private static String removeKnownEnd(String message) { + message = message.replaceAll(STRING_END_ONE, ""); + return message.replaceAll(STRING_END_TWO, ""); + } + + private static String removeToToken(String message, String token) { + int startIndex = message.indexOf(token + SEMICOLLON); if (startIndex == -1) return null; - startIndex += key.length() + 1; + startIndex += token.length() + 1; - message = message.substring(startIndex); + return message.substring(startIndex); + } + private static int getEndIndex(String message) { int currentEndIndex = message.length(); for (String token : KNOWN_TOKENS) { @@ -57,18 +75,12 @@ public static String GetValue(String message, String key) { if (tokenIndex < currentEndIndex && tokenIndex >= 0) { currentEndIndex = tokenIndex; } - } - - return message.substring(0, currentEndIndex).replaceAll("\\s+$", ""); - - } + if(message.indexOf(":") > currentEndIndex) break; + } - private static String removeKnownEnd(String message) { - message = message.replaceAll(STRING_END_ONE, ""); - return message.replaceAll(STRING_END_TWO, ""); + return currentEndIndex; } - } From 6848aa5050ae3d93aa5eaa41eabf08a970273511 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 27 Dec 2019 09:26:40 -0800 Subject: [PATCH 35/38] Added javadoc --- .../iamp/bcparis/message/MessageUtils.java | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java index fe1ac12..ac08507 100644 --- a/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java +++ b/src/main/java/ca/bc/gov/iamp/bcparis/message/MessageUtils.java @@ -33,9 +33,40 @@ public class MessageUtils { add(Keys.REQUEST_SCHEMA_TEST_RNS_KEY); }}; + + /** + * Extract the attribute value based on a give token + * Known tokens includes: + *
    + *
  • FROM + *
  • TO + *
  • TEXT + *
  • RE + *
  • SN + *
  • MT + *
  • MSID + *
  • SUBJ + *
  • SNME + *
  • DL + *
  • LIC + *
  • ODN + *
  • FLC + *
  • VIN + *
  • REG + *
  • RNS + *
  • RVL + *
  • TestRNS + *
+ * + * @param message the source message + * @param key a known key + * @return the value of the attribute + * @throws IllegalArgumentException if the key is not a known key + * @since 1.0.20 + */ public static String GetValue(String message, String key) { - if(!KNOWN_TOKENS.contains(key)) throw new IllegalArgumentException("key must be a known token"); + if (!KNOWN_TOKENS.contains(key)) throw new IllegalArgumentException("key must be a known token"); if (StringUtils.isEmpty(message)) return null; @@ -43,11 +74,9 @@ public static String GetValue(String message, String key) { message = removeToToken(message, key); - if(message == null) return null; - - int currentEndIndex = getEndIndex(message); + if (message == null) return null; - return message.substring(0, currentEndIndex).replaceAll("\\s+$", ""); + return message.substring(0, getEndIndex(message)).replaceAll("\\s+$", ""); } @@ -76,7 +105,7 @@ private static int getEndIndex(String message) { currentEndIndex = tokenIndex; } - if(message.indexOf(":") > currentEndIndex) break; + if (message.indexOf(":") > currentEndIndex) break; } return currentEndIndex; From 9d94cc5b374b9638e89f9b5e3356d01face3d291 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 27 Dec 2019 10:07:00 -0800 Subject: [PATCH 36/38] Added contributing guidelines --- CONTRIBUTING.md | 31 +++++++++++++++++++++++++++++++ README.md | 3 +++ 2 files changed, 34 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b938563 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,31 @@ +# Contributing + +All Contributions to this repository start with a Jira Item associated with the work request. + +## Pull Request Process + +1. Fork the repository on you personal github space. see:[working with forks](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/working-with-forks). +1. [Build](README.md#build) and run the application on your local environment. +1. Commit your changes to your branch. +1. Update the README.md with details of changes to the interface, this includes new environment + variables, exposed ports, useful file locations and container parameters. +1. When your change is ready to be reviewed, open a PR on this repository using our [Pull Request Template](.github/PULL_REQUEST_TEMPLATE) and optionally assign one or more reviewer. Also, in the comment of the Jira item, put a link to the Pull Request. +1. If some changes are required, you will be notified in the PR, address any change requested and push to the same branch. +1. When your change is meeting the requirement, the reviewer will merge the code into master, you can celebrate! + +## Open a new bug in jira + +- When a bug is detected in the application, a jira bug must be open + the bug should be documented as followed: + - Expected Behavior + - Current Behavior + - Steps to Reproduce + - Environment + - Description (stack traces, screenshot, error messages, splunk logs query) + - Optionally you can suggest a possible solution + - set the target release + +## Open a new feature request in jira + +- For feature enhancements, a jira task or story must be open + - set the target release \ No newline at end of file diff --git a/README.md b/README.md index 7440790..26deb38 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,9 @@ cd bcparis-service mvn install ``` +## Contributing + +Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us. ## Run locally From 1b349fe258329ad9536bca7d6d4539674537c8d8 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 27 Dec 2019 10:08:50 -0800 Subject: [PATCH 37/38] Updated version for dev release --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c165862..c86a8ae 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ ca.bc.gov.bcparis bcparis-service BCPARIS Legacy Migration - 1.0.19 + 1.0.20 ca.bc.gov.iamp From 6ad0d443ccf7a958a181c0a63036d9bd2e581ee1 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 27 Dec 2019 10:28:38 -0800 Subject: [PATCH 38/38] Added move ticket to in review for contributing --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b938563..f284e37 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ All Contributions to this repository start with a Jira Item associated with the 1. Commit your changes to your branch. 1. Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. -1. When your change is ready to be reviewed, open a PR on this repository using our [Pull Request Template](.github/PULL_REQUEST_TEMPLATE) and optionally assign one or more reviewer. Also, in the comment of the Jira item, put a link to the Pull Request. +1. When your change is ready to be reviewed, open a PR on this repository using our [Pull Request Template](.github/PULL_REQUEST_TEMPLATE) and optionally assign one or more reviewer. Also, in the comment of the Jira item, put a link to the Pull Request and move the item to `in review` 1. If some changes are required, you will be notified in the PR, address any change requested and push to the same branch. 1. When your change is meeting the requirement, the reviewer will merge the code into master, you can celebrate!