From 922076d807974cefa6ade28f689a20f1a90fddeb Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Tue, 5 Apr 2022 11:19:47 +0200 Subject: provide more control on the logging to users --- .../uic/barcode/asn1/datatypes/Asn1SequenceOf.java | 8 +- .../org/uic/barcode/asn1/uper/StringCoder.java | 8 +- src/main/java/org/uic/barcode/logger/Logger.java | 20 +- .../java/org/uic/barcode/logger/LoggerFactory.java | 55 +- .../barcode/asn1/test/UperEncodeBitStringTest.java | 6 + .../barcode/asn1/test/UperEncodeBooleanTest.java | 5 + .../asn1/test/UperEncodeChoiceExtensionTest.java | 5 + .../barcode/asn1/test/UperEncodeChoiceTest.java | 6 + .../asn1/test/UperEncodeEnumExtensionTest.java | 5 + .../uic/barcode/asn1/test/UperEncodeEnumTest.java | 6 +- .../test/UperEncodeExtensionFieldOrderTest.java | 6 + .../asn1/test/UperEncodeFieldOrderTest.java | 5 + .../test/UperEncodeIntegerConstrainedTest.java | 6 +- .../asn1/test/UperEncodeIntegerExtensionTest.java | 7 +- .../asn1/test/UperEncodeIntegerSmallTest.java | 5 + .../barcode/asn1/test/UperEncodeIntegerTest.java | 5 + .../asn1/test/UperEncodeObjectIdentifierTest.java | 6 + .../asn1/test/UperEncodeOctetStringTest.java | 5 + .../UperEncodeOptionalSequenceExtensionTest.java | 5 + .../asn1/test/UperEncodeRestrictedIntegerTest.java | 6 + .../test/UperEncodeRestrictedStringLengthTest.java | 5 + .../asn1/test/UperEncodeSequenceExtensionTest.java | 5 + .../asn1/test/UperEncodeSequenceOfIntegerTest.java | 5 + .../UperEncodeSequenceOfRestrictedIntegerTest.java | 5 + .../test/UperEncodeSequenceOfStringListTest.java | 5 + .../asn1/test/UperEncodeSequenceOfStringTest.java | 7 +- .../test/UperEncodeSequenceOfUtf8StringTest.java | 5 + .../test/UperEncodeStringCustomAlphabetTest.java | 5 + .../asn1/test/UperEncodeStringDefaultTest.java | 5 + .../asn1/test/UperEncodeStringLengthTest.java | 6 +- .../barcode/asn1/test/UperEncodeStringTest.java | 5 + .../asn1/test/UperEncodeVarBitStringTest.java | 5 + .../barcode/test/AsnLevelDynamicContentTest.java | 5 + .../org/uic/barcode/test/BinaryStringTest.java | 7 +- .../uic/barcode/test/DynamicContentCoderTest.java | 3 + ...cFrameDoubleSignatureProviderSelectionTest.java | 3 + .../test/DynamicFrameDoubleSignatureTest.java | 3 + .../test/DynamicFrameDynamicContentApiTest.java | 3 + .../test/DynamicFrameDynamicContentTest.java | 3 + .../barcode/test/DynamicFrameFcbVersion1Test.java | 3 + .../barcode/test/DynamicFrameFcbVersion3Test.java | 3 + .../uic/barcode/test/DynamicFrameLOwLevelTest.java | 3 + .../uic/barcode/test/DynamicFrameSimpleTest.java | 3 + .../test/DynamicFrameV2FcbVersion3Test.java | 3 + .../test/DynamicFrameV2SignatureInsert2Test.java | 3 + .../test/DynamicFrameV2SignatureInsertTest.java | 3 + .../test/DynamicFrameV2ValidityDateTest.java | 3 + .../org/uic/barcode/test/SignatureSplitTest.java | 17 +- .../uic/barcode/test/StaticFrameBarcodeTest.java | 3 + .../barcode/test/StaticFrameBarcodeTestFCB2.java | 3 + .../barcode/test/StaticFrameBarcodeTestFCB3.java | 3 + .../org/uic/barcode/test/TicketLayoutTest.java | 5 + .../java/org/uic/barcode/test/TimeStampTest.java | 5 + .../ticket/api/test/AsnLevelAllElementsTestV3.java | 3 + .../ticket/api/test/AsnLevelCarCarriageTestV3.java | 3 + .../api/test/AsnLevelCountermarkComplexTestV1.java | 3 + .../api/test/AsnLevelCountermarkComplexTestV3.java | 3 + .../api/test/AsnLevelDelayConfirmationTestV3.java | 3 + .../ticket/api/test/AsnLevelParkingTestV3.java | 3 + .../api/test/AsnLevelStationPassageTestV3.java | 3 + .../ticket/api/test/AsnLevelVoucherTestV3.java | 3 + .../ticket/api/test/CounterMarkTimeZoneTestV3.java | 3 + .../api/test/CustomerCardTimeZoneTestV1.java | 3 + .../api/test/CustomerCardTimeZoneTestV2.java | 4 + .../api/test/CustomerCardTimeZoneTestV3.java | 3 + .../barcode/ticket/api/test/DateTimeUtilsTest.java | 7 +- .../barcode/ticket/api/test/FipTimeZoneTestV1.java | 3 + .../barcode/ticket/api/test/FipTimeZoneTestV2.java | 3 + .../barcode/ticket/api/test/FipTimeZoneTestV3.java | 697 +++++++++++---------- .../ticket/api/test/OpenTicketComplexTestV1.java | 3 + .../ticket/api/test/OpenTicketComplexTestV2.java | 3 + .../ticket/api/test/OpenTicketComplexTestV3.java | 3 + .../test/OpenTicketINcludedTicketDateTestV3.java | 3 + .../OpenTicketRestrictedLuggageComplexTestV3.java | 3 + .../ticket/api/test/OpenTicketTimeZoneTestV1.java | 3 + .../ticket/api/test/OpenTicketTimeZoneTestV3.java | 697 +++++++++++---------- .../api/test/OpenTicketTrainLinkDateTestV3.java | 3 + .../ticket/api/test/ParkingTimeZoneTestV1.java | 3 + .../ticket/api/test/ParkingTimeZoneTestV2.java | 3 + .../ticket/api/test/ParkingTimeZoneTestV3.java | 3 + .../barcode/ticket/api/test/PassComplexTestV3.java | 3 + .../ticket/api/test/PassTimeZoneTestV1.java | 3 + .../ticket/api/test/PassTimeZoneTestV2.java | 3 + .../ticket/api/test/PassTimeZoneTestV3.java | 697 +++++++++++---------- .../ticket/api/test/PassTrainValidityTestV3.java | 3 + .../ticket/api/test/ReservationTimeZoneTestV1.java | 3 + .../ticket/api/test/ReservationTimeZoneTestV2.java | 3 + .../ticket/api/test/ReservationTimeZoneTestV3.java | 631 +++++++++---------- .../api/test/StationPassageTimeZoneTestV1.java | 3 + .../api/test/StationPassageTimeZoneTestV2.java | 3 + .../api/test/StationPassageTimeZoneTestV3.java | 631 +++++++++---------- .../api/test/UperEncodeOpenTicketTestV1.java | 5 + .../ticket/api/test/UperEncodePassTestV1.java | 5 + .../api/test/UperEncodeTicketLinkTestV1.java | 6 +- .../ticket/api/test/UperEncodeTicketTestV1.java | 6 +- .../api/test/UperEncodeUICTicketExtensionTest.java | 20 +- .../ticket/api/test/VoucherTimeZoneTestV1.java | 3 + .../ticket/api/test/VoucherTimeZoneTestV2.java | 3 + .../ticket/api/test/VoucherTimeZoneTestV3.java | 3 + .../ticketTestDB/DecodeSparpreisTicketDBTest.java | 7 +- .../ticketTestDB/EncodeSparpreisTicketDBTest.java | 4 + .../SignatureValidationDBTicketTest.java | 3 + 102 files changed, 2132 insertions(+), 1720 deletions(-) (limited to 'src') diff --git a/src/main/java/org/uic/barcode/asn1/datatypes/Asn1SequenceOf.java b/src/main/java/org/uic/barcode/asn1/datatypes/Asn1SequenceOf.java index 4924b50..8e24222 100644 --- a/src/main/java/org/uic/barcode/asn1/datatypes/Asn1SequenceOf.java +++ b/src/main/java/org/uic/barcode/asn1/datatypes/Asn1SequenceOf.java @@ -3,8 +3,7 @@ package org.uic.barcode.asn1.datatypes; import java.lang.reflect.ParameterizedType; import java.util.*; -import org.uic.barcode.logger.Logger; -import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.asn1.uper.UperEncoder; /** @@ -35,8 +34,7 @@ import org.uic.barcode.logger.LoggerFactory; * @param type of elements contained. */ public abstract class Asn1SequenceOf extends AbstractList { - private final static Logger logger = LoggerFactory.getLogger("asnLogger"); - + private final List bakingList; @Override public T get(int index) { return bakingList.get(index); } @@ -45,7 +43,7 @@ public abstract class Asn1SequenceOf extends AbstractList { public Asn1SequenceOf() { this(new ArrayList()); } public Asn1SequenceOf(Collection coll) { - logger.debug(String.format("Instantiating Sequence Of %s with %s", + UperEncoder.logger.debug(String.format("Instantiating Sequence Of %s with %s", ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0], coll)); bakingList = new ArrayList<>(coll); diff --git a/src/main/java/org/uic/barcode/asn1/uper/StringCoder.java b/src/main/java/org/uic/barcode/asn1/uper/StringCoder.java index a504096..94e0aad 100644 --- a/src/main/java/org/uic/barcode/asn1/uper/StringCoder.java +++ b/src/main/java/org/uic/barcode/asn1/uper/StringCoder.java @@ -17,14 +17,10 @@ import org.uic.barcode.asn1.datatypes.DefaultAlphabet; import org.uic.barcode.asn1.datatypes.FixedSize; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.SizeRange; -import org.uic.barcode.logger.Logger; -import org.uic.barcode.logger.LoggerFactory; class StringCoder implements Decoder, Encoder { - private static final Logger LOGGER = LoggerFactory.getLogger("asnLogger"); - @Override public boolean canEncode(T obj, Annotation[] extraAnnotations) { return obj instanceof String || obj instanceof Asn1String; } @@ -231,7 +227,7 @@ class StringCoder implements Decoder, Encoder { try { chars = UperEncoder.instantiate(restriction.alphabet()).chars().toCharArray(); } catch (IllegalArgumentException e) { - LOGGER.info("Uninstantinatable alphabet ", e); + UperEncoder.logger.info("Uninstantinatable alphabet ", e); throw new IllegalArgumentException("Uninstantinatable alphabet" + restriction.alphabet().getName()); } if (BigInteger.valueOf(chars.length - 1).bitLength() < BigInteger.valueOf(126) @@ -293,7 +289,7 @@ class StringCoder implements Decoder, Encoder { try { chars = UperEncoder.instantiate(restrictionAnnotation.alphabet()).chars().toCharArray(); } catch (IllegalArgumentException e) { - LOGGER.info("Uninstantinatable alphabet ", e); + UperEncoder.logger.info("Uninstantinatable alphabet ", e); throw new IllegalArgumentException("Uninstantinatable alphabet " + restrictionAnnotation.alphabet().getName()); } if (BigInteger.valueOf(chars.length - 1).bitLength() < BigInteger.valueOf(126) diff --git a/src/main/java/org/uic/barcode/logger/Logger.java b/src/main/java/org/uic/barcode/logger/Logger.java index b536154..baae70d 100644 --- a/src/main/java/org/uic/barcode/logger/Logger.java +++ b/src/main/java/org/uic/barcode/logger/Logger.java @@ -3,11 +3,23 @@ package org.uic.barcode.logger; import java.util.logging.Level; -public class Logger { +public class Logger { + + private boolean consoleLog = false; + + public Logger(boolean consoleLog) { + this.consoleLog = consoleLog; + } + + public Logger() { + this.consoleLog = false; + } public void debug(String text){ java.util.logging.Logger.getGlobal().log(Level.FINEST,text); - System.out.println(text); + if (consoleLog) { + System.out.println(text); + } } public void log(Level level,String text){ @@ -17,6 +29,10 @@ public class Logger { public void info(String text, IllegalArgumentException e) { java.util.logging.Logger.getGlobal().log(Level.INFO,text); } + + public void activateConsoleLog(boolean consoleLogActive) { + this.consoleLog = consoleLogActive; + } } diff --git a/src/main/java/org/uic/barcode/logger/LoggerFactory.java b/src/main/java/org/uic/barcode/logger/LoggerFactory.java index 0a1a83c..be5736e 100644 --- a/src/main/java/org/uic/barcode/logger/LoggerFactory.java +++ b/src/main/java/org/uic/barcode/logger/LoggerFactory.java @@ -1,9 +1,60 @@ package org.uic.barcode.logger; +import java.util.HashMap; + +/** + * A factory for creating Logger objects. This allows to replace the default logger by your own loggers. + */ public class LoggerFactory { + + /** The registered loggers. */ + private static HashMap registeredLoggers = new HashMap(); + + /** The activate console log. */ + public static boolean activateConsoleLog = false; + + /** + * Gets the logger. + * + * @param name the name of the logger. UperEncoder uses asnLogger + * @return the logger + */ public static Logger getLogger(String name) { - return new Logger(); - } + Logger logger = registeredLoggers.get(name); + if (logger == null) { + logger = new Logger(activateConsoleLog); + registeredLoggers.put(name, logger); + } + return logger; + } + /** + * Checks if console log is on. + * + * @return true, if console log is on + */ + public static boolean isActivateConsoleLog() { + return activateConsoleLog; + } + + /** + * Sets the console log on + * + * @param activateConsoleLog the new activate console log + */ + public static void setActivateConsoleLog(boolean activateConsoleLog) { + LoggerFactory.activateConsoleLog = activateConsoleLog; + } + + /** + * Register logger. + * + * @param name the name of the logger + * @param logger the logger to be registered + */ + public void registerLogger(String name, Logger logger) { + registeredLoggers.put(name, logger); + } + } diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java index 94f29c2..9906fa0 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeBitStringTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.Bitstring; @@ -12,6 +13,7 @@ import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.FixedSize; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeBitStringTest { @@ -55,6 +57,10 @@ public class UperEncodeBitStringTest { booleans.add(value3); } } + + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeBooleanTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeBooleanTest.java index b5e73b0..dea2716 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeBooleanTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeBooleanTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeBooleanTest { @@ -36,6 +38,9 @@ public class UperEncodeBooleanTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testTrue() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord(new Boolean(true)); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceExtensionTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceExtensionTest.java index 3833ff2..94fbee7 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceExtensionTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceExtensionTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -13,6 +14,7 @@ import org.uic.barcode.asn1.datatypes.HasExtensionMarker; import org.uic.barcode.asn1.datatypes.IsExtension; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeChoiceExtensionTest { @@ -58,6 +60,9 @@ public class UperEncodeChoiceExtensionTest { public TestRecord() { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { TestRecordExtended record = new TestRecordExtended(); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceTest.java index 69b92d1..ebd994f 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeChoiceTest.java @@ -4,12 +4,14 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.CharacterRestriction; import org.uic.barcode.asn1.datatypes.Choice; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeChoiceTest { @@ -48,6 +50,10 @@ public class UperEncodeChoiceTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } + @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord(null, "Meier"); byte[] encoded = UperEncoder.encode(record); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumExtensionTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumExtensionTest.java index a2ecbe1..fdbcd5c 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumExtensionTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumExtensionTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.FieldOrder; @@ -11,6 +12,7 @@ import org.uic.barcode.asn1.datatypes.HasExtensionMarker; import org.uic.barcode.asn1.datatypes.IsExtension; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeEnumExtensionTest { @@ -105,6 +107,9 @@ public class UperEncodeEnumExtensionTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testExtension() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumTest.java index d1d2d82..a99a1b9 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeEnumTest.java @@ -4,12 +4,14 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Default; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeEnumTest { @@ -79,7 +81,9 @@ public class UperEncodeEnumTest { } } - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testNonDefaultValue() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeExtensionFieldOrderTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeExtensionFieldOrderTest.java index ff97c27..6a7680d 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeExtensionFieldOrderTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeExtensionFieldOrderTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1BigInteger; import org.uic.barcode.asn1.datatypes.FieldOrder; @@ -11,6 +12,7 @@ import org.uic.barcode.asn1.datatypes.HasExtensionMarker; import org.uic.barcode.asn1.datatypes.IsExtension; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeExtensionFieldOrderTest { @@ -69,6 +71,10 @@ Encoded successfully in 21 bytes: } + + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeFieldOrderTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeFieldOrderTest.java index d86b4cd..9f38d69 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeFieldOrderTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeFieldOrderTest.java @@ -2,6 +2,7 @@ package org.uic.barcode.asn1.test; import static org.junit.Assert.assertEquals; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -9,6 +10,7 @@ import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeFieldOrderTest { @@ -46,6 +48,9 @@ public class UperEncodeFieldOrderTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerConstrainedTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerConstrainedTest.java index 575597f..2f46046 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerConstrainedTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerConstrainedTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.IntRange; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeIntegerConstrainedTest { @@ -50,7 +52,9 @@ public class UperEncodeIntegerConstrainedTest { } } - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerExtensionTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerExtensionTest.java index acec756..bde0683 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerExtensionTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerExtensionTest.java @@ -2,6 +2,7 @@ package org.uic.barcode.asn1.test; import static org.junit.Assert.assertEquals; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1BigInteger; import org.uic.barcode.asn1.datatypes.FieldOrder; @@ -9,6 +10,7 @@ import org.uic.barcode.asn1.datatypes.HasExtensionMarker; import org.uic.barcode.asn1.datatypes.IsExtension; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeIntegerExtensionTest { @@ -69,7 +71,10 @@ Encoded successfully in 21 bytes: } - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } + @Test public void test() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord(); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerSmallTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerSmallTest.java index 5ada54d..39bfb32 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerSmallTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerSmallTest.java @@ -4,10 +4,12 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeIntegerSmallTest { @@ -40,6 +42,9 @@ public class UperEncodeIntegerSmallTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test1() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerTest.java index d57fd00..412689b 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeIntegerTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1BigInteger; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeIntegerTest { @@ -36,6 +38,9 @@ public class UperEncodeIntegerTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeObjectIdentifierTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeObjectIdentifierTest.java index 4b09604..f3a23a3 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeObjectIdentifierTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeObjectIdentifierTest.java @@ -3,12 +3,14 @@ package org.uic.barcode.asn1.test; import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.CharacterRestriction; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeObjectIdentifierTest { @@ -49,6 +51,10 @@ public class UperEncodeObjectIdentifierTest { } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } + @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord(); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeOctetStringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeOctetStringTest.java index 24896f0..89041cc 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeOctetStringTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeOctetStringTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.datatypesimpl.OctetString; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeOctetStringTest { @@ -40,6 +42,9 @@ public class UperEncodeOctetStringTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeOptionalSequenceExtensionTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeOptionalSequenceExtensionTest.java index 55e6026..bfb6a74 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeOptionalSequenceExtensionTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeOptionalSequenceExtensionTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -13,6 +14,7 @@ import org.uic.barcode.asn1.datatypes.IsExtension; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeOptionalSequenceExtensionTest { @@ -69,6 +71,9 @@ public class UperEncodeOptionalSequenceExtensionTest { public TestRecord() { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { TestRecordExtended record = new TestRecordExtended(); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedIntegerTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedIntegerTest.java index bc82621..f806c88 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedIntegerTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedIntegerTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.IntRange; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeRestrictedIntegerTest { @@ -36,6 +38,10 @@ TestRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE { value = num; } } + + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedStringLengthTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedStringLengthTest.java index 6e3d4ee..9dffd3a 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedStringLengthTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeRestrictedStringLengthTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -12,6 +13,7 @@ import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.datatypes.SizeRange; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeRestrictedStringLengthTest { @@ -51,6 +53,9 @@ public class UperEncodeRestrictedStringLengthTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode1() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord("A"); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceExtensionTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceExtensionTest.java index 29d203b..4ee42c5 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceExtensionTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceExtensionTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -13,6 +14,7 @@ import org.uic.barcode.asn1.datatypes.IsExtension; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeSequenceExtensionTest { @@ -57,6 +59,9 @@ public class UperEncodeSequenceExtensionTest { public TestRecord() { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { TestRecordExtended record = new TestRecordExtended(); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfIntegerTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfIntegerTest.java index 9194dca..3213b1e 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfIntegerTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfIntegerTest.java @@ -6,11 +6,13 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.datatypesimpl.SequenceOfUnrestrictedLong; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeSequenceOfIntegerTest { @@ -37,6 +39,9 @@ TestRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfRestrictedIntegerTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfRestrictedIntegerTest.java index d1834d0..33e9b9f 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfRestrictedIntegerTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfRestrictedIntegerTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.IntRange; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeSequenceOfRestrictedIntegerTest { @@ -39,6 +41,9 @@ TestRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringListTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringListTest.java index 49350cc..e038d51 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringListTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringListTest.java @@ -6,12 +6,14 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.CharacterRestriction; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeSequenceOfStringListTest { @@ -41,6 +43,9 @@ public class UperEncodeSequenceOfStringListTest { } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringTest.java index f3bff6d..8c9cd70 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfStringTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.datatypesimpl.SequenceOfStringIA5; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeSequenceOfStringTest { @@ -37,7 +39,10 @@ public class UperEncodeSequenceOfStringTest { } - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } + @Test public void test() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord(); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfUtf8StringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfUtf8StringTest.java index ab8fa2a..a39a4be 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfUtf8StringTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeSequenceOfUtf8StringTest.java @@ -4,11 +4,13 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.datatypesimpl.SequenceOfStringUTF8; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeSequenceOfUtf8StringTest { @@ -59,6 +61,9 @@ Encoded successfully in 19 bytes: } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void test() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringCustomAlphabetTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringCustomAlphabetTest.java index 03b8bac..557fad1 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringCustomAlphabetTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringCustomAlphabetTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -11,6 +12,7 @@ import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeStringCustomAlphabetTest { @@ -52,6 +54,9 @@ public class UperEncodeStringCustomAlphabetTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringDefaultTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringDefaultTest.java index d8e5029..9023d51 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringDefaultTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringDefaultTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Default; import org.uic.barcode.asn1.datatypes.Asn1Optional; @@ -12,6 +13,7 @@ import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeStringDefaultTest { @@ -45,6 +47,9 @@ public class UperEncodeStringDefaultTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord("Müller", "testString"); diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringLengthTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringLengthTest.java index 9dd4389..0b24cb7 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringLengthTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringLengthTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -11,6 +12,7 @@ import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeStringLengthTest { @@ -32,7 +34,9 @@ public class UperEncodeStringLengthTest { */ - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Sequence public static class TestRecord { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringTest.java index 75ace32..68eccc8 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeStringTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; @@ -11,6 +12,7 @@ import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.RestrictedString; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeStringTest { @@ -47,6 +49,9 @@ public class UperEncodeStringTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/asn1/test/UperEncodeVarBitStringTest.java b/src/test/java/org/uic/barcode/asn1/test/UperEncodeVarBitStringTest.java index d6212e2..7b0f943 100644 --- a/src/test/java/org/uic/barcode/asn1/test/UperEncodeVarBitStringTest.java +++ b/src/test/java/org/uic/barcode/asn1/test/UperEncodeVarBitStringTest.java @@ -6,12 +6,14 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.Asn1VarSizeBitstring; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; public class UperEncodeVarBitStringTest { @@ -55,6 +57,9 @@ public class UperEncodeVarBitStringTest { } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { TestRecord record = new TestRecord(false,false,true); diff --git a/src/test/java/org/uic/barcode/test/AsnLevelDynamicContentTest.java b/src/test/java/org/uic/barcode/test/AsnLevelDynamicContentTest.java index 955066d..7e36489 100644 --- a/src/test/java/org/uic/barcode/test/AsnLevelDynamicContentTest.java +++ b/src/test/java/org/uic/barcode/test/AsnLevelDynamicContentTest.java @@ -6,6 +6,7 @@ import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.dynamicContent.fdc1.ExtensionData; import org.uic.barcode.dynamicContent.fdc1.TimeStamp; import org.uic.barcode.dynamicContent.fdc1.UicDynamicContentDataFDC1; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.dynamicContent.fdc1.GeoCoordinateType; public class AsnLevelDynamicContentTest { @@ -52,6 +53,10 @@ public class AsnLevelDynamicContentTest { + } + + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); } @Test public void testDynamicContentEncoding() { diff --git a/src/test/java/org/uic/barcode/test/BinaryStringTest.java b/src/test/java/org/uic/barcode/test/BinaryStringTest.java index d5533fa..11fc3c8 100644 --- a/src/test/java/org/uic/barcode/test/BinaryStringTest.java +++ b/src/test/java/org/uic/barcode/test/BinaryStringTest.java @@ -1,13 +1,18 @@ package org.uic.barcode.test; import java.io.IOException; + +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.AsnUtils; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; public class BinaryStringTest { - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testBinaryString() throws IOException, EncodingFormatException{ diff --git a/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java b/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java index 5355d5d..c6a693f 100644 --- a/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java @@ -9,6 +9,7 @@ import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.dynamicContent.api.DynamicContentCoder; import org.uic.barcode.dynamicContent.api.IUicDynamicContent; import org.uic.barcode.dynamicContent.api.SimpleUicDynamicContent; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.impl.SimpleExtension; import org.uic.barcode.ticket.api.impl.SimpleGeoCoordinate; @@ -21,6 +22,8 @@ public class DynamicContentCoderTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + content = new SimpleUicDynamicContent(); content.setAppId("appID"); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java index 0730e69..f531f70 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java @@ -23,6 +23,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.Level2TestDataFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; @@ -43,6 +44,8 @@ public class DynamicFrameDoubleSignatureProviderSelectionTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java index 787ebae..160ebc1 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java @@ -22,6 +22,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.Level2TestDataFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; @@ -41,6 +42,8 @@ public class DynamicFrameDoubleSignatureTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java index 4d34c1b..4c039ff 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java @@ -26,6 +26,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicContent.api.IUicDynamicContent; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.DynamicTestContent; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; @@ -49,6 +50,8 @@ public class DynamicFrameDynamicContentApiTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java index d26ab77..656dbb4 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java @@ -29,6 +29,7 @@ import org.uic.barcode.dynamicContent.fdc1.GeoCoordinateType; import org.uic.barcode.dynamicContent.fdc1.TimeStamp; import org.uic.barcode.dynamicContent.fdc1.UicDynamicContentDataFDC1; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -52,6 +53,8 @@ public class DynamicFrameDynamicContentTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java index ea95a88..f5a4705 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java @@ -21,6 +21,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -38,6 +39,8 @@ public class DynamicFrameFcbVersion1Test { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java index 199a32d..4eb821a 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java @@ -21,6 +21,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -38,6 +39,8 @@ public class DynamicFrameFcbVersion3Test { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameLOwLevelTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameLOwLevelTest.java index b8a851b..e1345e5 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameLOwLevelTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameLOwLevelTest.java @@ -22,6 +22,7 @@ import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.dynamicFrame.Constants; import org.uic.barcode.dynamicFrame.v1.DynamicFrame; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.SimpleDynamicFrameTestBarcode; public class DynamicFrameLOwLevelTest { @@ -35,6 +36,8 @@ public class DynamicFrameLOwLevelTest { @Before public void initialize() { + + LoggerFactory.setActivateConsoleLog(true); Security.addProvider(new BouncyCastleProvider()); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java index 190924d..2c7cce3 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java @@ -20,6 +20,7 @@ import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -37,6 +38,8 @@ public class DynamicFrameSimpleTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java index 17bccd6..5fcb07a 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java @@ -21,6 +21,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -38,6 +39,8 @@ public class DynamicFrameV2FcbVersion3Test { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java index a7d5098..c50172b 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java @@ -26,6 +26,7 @@ import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.DynamicTestContent; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; @@ -49,6 +50,8 @@ public class DynamicFrameV2SignatureInsert2Test { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java index 8f97574..90d3c2b 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java @@ -26,6 +26,7 @@ import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.DynamicTestContent; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; @@ -49,6 +50,8 @@ public class DynamicFrameV2SignatureInsertTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java index 9bbd736..d4f5d6a 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java @@ -25,6 +25,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -42,6 +43,8 @@ public class DynamicFrameV2ValidityDateTest { @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; elipticCurve = "secp256k1"; diff --git a/src/test/java/org/uic/barcode/test/SignatureSplitTest.java b/src/test/java/org/uic/barcode/test/SignatureSplitTest.java index 08fe3ad..300515a 100644 --- a/src/test/java/org/uic/barcode/test/SignatureSplitTest.java +++ b/src/test/java/org/uic/barcode/test/SignatureSplitTest.java @@ -5,7 +5,9 @@ import static org.junit.Assert.assertEquals; import java.io.IOException; import java.math.BigInteger; +import org.junit.Before; import org.junit.Test; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.staticFrame.StaticFrame; import org.uic.barcode.test.utils.TestUtils; import org.uic.barcode.ticket.EncodingFormatException; @@ -27,20 +29,15 @@ public class SignatureSplitTest { 134515671861986 } - - Encoding using DER encoding rule - Signature SEQUENCE OF: tag = [UNIVERSAL 16] constructed; length = 18 - INTEGER: tag = [UNIVERSAL 2] primitive; length = 8 - 340282366920938463 - INTEGER: tag = [UNIVERSAL 2] primitive; length = 6 - 134515671861986 - Encoded successfully in 20 bytes: 30120208 04B8ED02 83A6D3DF 02067A57 5ED68AE2 - - * * */ + @Before public void initialize() { + + LoggerFactory.setActivateConsoleLog(true); + + } @Test public void testSplitSignature() throws IOException, EncodingFormatException{ diff --git a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTest.java b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTest.java index 9600191..0aafc3b 100644 --- a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTest.java +++ b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTest.java @@ -18,6 +18,7 @@ import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout; import org.uic.barcode.test.utils.SimpleTestTicketLayout; import org.uic.barcode.test.utils.SimpleUICTestTicket; @@ -53,6 +54,8 @@ public class StaticFrameBarcodeTest { */ @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + algorithmOID = Constants.DSA_SHA224; keySize = 2048; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB2.java b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB2.java index 048d684..0a0c245 100644 --- a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB2.java +++ b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB2.java @@ -18,6 +18,7 @@ import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout; import org.uic.barcode.test.utils.SimpleTestTicketLayout; import org.uic.barcode.test.utils.SimpleUICTestTicket; @@ -52,6 +53,8 @@ public class StaticFrameBarcodeTestFCB2 { * for ticket and layout */ @Before public void initialize() { + + LoggerFactory.setActivateConsoleLog(true); algorithmOID = Constants.DSA_SHA224; keySize = 2048; diff --git a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java index 41ce365..b519308 100644 --- a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java +++ b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java @@ -18,6 +18,7 @@ import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout; import org.uic.barcode.test.utils.SimpleTestTicketLayout; import org.uic.barcode.test.utils.SimpleUICTestTicket; @@ -52,6 +53,8 @@ public class StaticFrameBarcodeTestFCB3 { * for ticket and layout */ @Before public void initialize() { + + LoggerFactory.setActivateConsoleLog(true); algorithmOID = Constants.DSA_SHA224; keySize = 2048; diff --git a/src/test/java/org/uic/barcode/test/TicketLayoutTest.java b/src/test/java/org/uic/barcode/test/TicketLayoutTest.java index 3d053e7..69fddbb 100644 --- a/src/test/java/org/uic/barcode/test/TicketLayoutTest.java +++ b/src/test/java/org/uic/barcode/test/TicketLayoutTest.java @@ -4,7 +4,9 @@ import static org.junit.Assert.assertEquals; import java.io.IOException; +import org.junit.Before; import org.junit.Test; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.staticFrame.UTLAYDataRecord; import org.uic.barcode.staticFrame.ticketLayoutBarcode.LayoutElement; import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout; @@ -15,6 +17,9 @@ import org.uic.barcode.ticket.EncodingFormatException; public class TicketLayoutTest { + @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testTicketLayout() throws IOException, EncodingFormatException{ diff --git a/src/test/java/org/uic/barcode/test/TimeStampTest.java b/src/test/java/org/uic/barcode/test/TimeStampTest.java index b2e3ab1..c15e0fb 100644 --- a/src/test/java/org/uic/barcode/test/TimeStampTest.java +++ b/src/test/java/org/uic/barcode/test/TimeStampTest.java @@ -4,12 +4,17 @@ import java.util.Calendar; import java.util.Date; import java.util.TimeZone; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.dynamicContent.fdc1.TimeStamp; +import org.uic.barcode.logger.LoggerFactory; public class TimeStampTest { + @Before public void initialize() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testDateConversion() { diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelAllElementsTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelAllElementsTestV3.java index a5b4765..c0fb248 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelAllElementsTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelAllElementsTestV3.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.HemisphereLongitudeType; import org.uic.barcode.ticket.api.asn.omv3.IncludedOpenTicketType; import org.uic.barcode.ticket.api.asn.omv3.LineType; @@ -70,6 +71,8 @@ public class AsnLevelAllElementsTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCarCarriageTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCarCarriageTestV3.java index 955e2cf..39c4440 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCarCarriageTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCarCarriageTestV3.java @@ -10,6 +10,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.CarCarriageReservationData; import org.uic.barcode.ticket.api.asn.omv3.LoadingDeckType; import org.uic.barcode.ticket.api.asn.omv3.PriceTypeType; @@ -41,6 +42,8 @@ public class AsnLevelCarCarriageTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV1.java index e7dbd50..21fe946 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV1.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.test.testtickets.CountermarkTestComplexTicketV1; @@ -34,6 +35,8 @@ public class AsnLevelCountermarkComplexTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV3.java index 918615c..60f5375 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelCountermarkComplexTestV3.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.CountermarkData; import org.uic.barcode.ticket.api.asn.omv3.TravelClassType; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; @@ -38,6 +39,8 @@ public class AsnLevelCountermarkComplexTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelDelayConfirmationTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelDelayConfirmationTestV3.java index 8a2cbde..3bcd759 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelDelayConfirmationTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelDelayConfirmationTestV3.java @@ -10,6 +10,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.LinkMode; import org.uic.barcode.ticket.api.asn.omv3.TicketType; import org.uic.barcode.ticket.api.asn.omv3.DelayConfirmation; @@ -40,6 +41,8 @@ public class AsnLevelDelayConfirmationTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelParkingTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelParkingTestV3.java index e45ae13..8077a13 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelParkingTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelParkingTestV3.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.ParkingGroundData; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.test.testtickets.ParkingTestTicketV3; @@ -35,6 +36,8 @@ public class AsnLevelParkingTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelStationPassageTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelStationPassageTestV3.java index a1496c8..b2f1c9b 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelStationPassageTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelStationPassageTestV3.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.test.testtickets.StationPassageTestTicketV3; @@ -34,6 +35,8 @@ public class AsnLevelStationPassageTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelVoucherTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelVoucherTestV3.java index eacdabb..6d25531 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelVoucherTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AsnLevelVoucherTestV3.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.VoucherData; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.test.testtickets.VoucherTestTicketV3; @@ -35,6 +36,8 @@ public class AsnLevelVoucherTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java index 1a05e6f..c83c95b 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.spec.ICounterMark; @@ -87,6 +88,8 @@ public class CounterMarkTimeZoneTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = CountermarkTestComplexTicketV3.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java index 315774e..d9e5ba9 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.ICustomerCard; @@ -85,6 +86,8 @@ public class CustomerCardTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = CustomerCardTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV2.java index e8857ab..d9ae8dc 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV2.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.spec.ICustomerCard; @@ -85,6 +86,9 @@ public class CustomerCardTimeZoneTestV2 { */ @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = CustomerCardTestTicketV2.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java index da0879b..ad1b0da 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.spec.ICustomerCard; @@ -87,6 +88,8 @@ public class CustomerCardTimeZoneTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = CustomerCardTestTicketV3.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/DateTimeUtilsTest.java b/src/test/java/org/uic/barcode/ticket/api/test/DateTimeUtilsTest.java index 5b2e578..b818738 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/DateTimeUtilsTest.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/DateTimeUtilsTest.java @@ -2,13 +2,18 @@ package org.uic.barcode.ticket.api.test; import java.util.Calendar; import java.util.TimeZone; + +import org.junit.Before; import org.junit.Test; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.utils.DateTimeUtils; public class DateTimeUtilsTest{ - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testDateDiff1() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java index c9b0f31..8cf0736 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IFipTicket; @@ -89,6 +90,8 @@ public class FipTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = FipTimeZoneTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV2.java index 89b6562..8b8c542 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV2.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IFipTicket; @@ -89,6 +90,8 @@ public class FipTimeZoneTestV2 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = FipTimeZoneTestTicketV2.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java index a4c542e..fca31a9 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java @@ -1,347 +1,350 @@ -package org.uic.barcode.ticket.api.test; - -import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.uic.barcode.asn1.uper.UperEncoder; -import org.uic.barcode.ticket.EncodingFormatException; -import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; -import org.uic.barcode.ticket.api.spec.IFipTicket; -import org.uic.barcode.ticket.api.spec.IUicRailTicket; -import org.uic.barcode.ticket.api.test.testtickets.FipTimeZoneTestTicketV3; -import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; -import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; -import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; -import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; - - -/** - * The Class FipTimeZoneTestV1. - * - * - * - */ -public class FipTimeZoneTestV3 { - - /** The low level encoded test ticket test case 1 . */ - private byte[] encoded1 = null; - - /** The low level encoded test ticket test case 2 . */ - private byte[] encoded2 = null; - - /** The low level encoded test ticket test case 3 . */ - private byte[] encoded3 = null; - - /** The decoder. */ - Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); - - /** The encoder. */ - Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); - - /** The API ticket low level encoded for case 1. */ - IUicRailTicket iTicketDecodedFromAsn1Case1 = null; - - /** The API ticket low level encoded for case 2. */ - IUicRailTicket iTicketDecodedFromAsn1Case2 = null; - - /** The API ticket low level encoded for case 3. */ - IUicRailTicket iTicketDecodedFromAsn1Case3 = null; - - - /** The ticket decoded 1. */ - IUicRailTicket iTicketDecodedCase1 = null; - - /** The i ticket decoded 2. */ - IUicRailTicket iTicketDecodedCase2 = null; - - /** The i ticket decoded 3. */ - IUicRailTicket iTicketDecodedCase3 = null; - - byte[] encodedInTimeZone1 = null; - byte[] encodedInTimeZone2 = null; - byte[] encodedInTimeZone3 = null; - - String issuingDate1 = null; - String issuingDate2 = null; - String issuingDate3 = null; - - String validFrom1 = null; - String validFrom2 = null; - String validFrom3 = null; - - String validUntil1 = null; - String validUntil2 = null; - String validUntil3 = null; - - String activationDate1 = null; - String activationDate2 = null; - String activationDate3 = null; - - TimeZone defaulttimeZone = null; - - /** - * Prepare tickets. - */ - @Before public void prepare() { - - defaulttimeZone = TimeZone.getDefault(); - - UicRailTicketData ticket1 = FipTimeZoneTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket2 = FipTimeZoneTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket3 = FipTimeZoneTestTicketV3.getUicTestTicket(); - - //encode in UTC time zone - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - - encoded1 = UperEncoder.encode(ticket1); - encoded2 = UperEncoder.encode(ticket2); - encoded3 = UperEncoder.encode(ticket3); - - } - - /** - * clean up - */ - @After public void resetTimeZone() { - TimeZone.setDefault(defaulttimeZone); - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone CET - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("CET"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("GMT")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("GMT"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - } - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("CET"); - decode("GMT"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); - assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); - assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 GMT 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - } - - private void decodedDateToStrings() { - - issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); - issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); - issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); - - validFrom1 = ((IFipTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); - validFrom2 = ((IFipTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); - validFrom3 = ((IFipTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); - - validUntil1 = ((IFipTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntil2 = ((IFipTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntil3 = ((IFipTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); - - activationDate1 = ((IFipTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - activationDate2 = ((IFipTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - activationDate3 = ((IFipTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - - } - - - private void setActivatedDayTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().add(date); - - ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().add(date); - - ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().add(date); - - } - - private void setValidFromTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); - ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); - ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); - } - - private void setValidUntilTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); - ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); - ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); - } - - - /** - * Encode in Time Zone - */ - private void encode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - try { - encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); - encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); - encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); - } catch (EncodingFormatException e) { - e.printStackTrace(); - } - } - - /** - * Decode in Time Zone - */ - private void decode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - - try { - iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); - iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); - iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * Encode decode. - */ - private void decodeTestTicketUTC() { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - try { - iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); - iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); - iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { - e.printStackTrace(); - } - - } - -} +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; +import org.uic.barcode.ticket.api.spec.IFipTicket; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.test.testtickets.FipTimeZoneTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class FipTimeZoneTestV1. + * + * + * + */ +public class FipTimeZoneTestV3 { + + /** The low level encoded test ticket test case 1 . */ + private byte[] encoded1 = null; + + /** The low level encoded test ticket test case 2 . */ + private byte[] encoded2 = null; + + /** The low level encoded test ticket test case 3 . */ + private byte[] encoded3 = null; + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + /** The API ticket low level encoded for case 1. */ + IUicRailTicket iTicketDecodedFromAsn1Case1 = null; + + /** The API ticket low level encoded for case 2. */ + IUicRailTicket iTicketDecodedFromAsn1Case2 = null; + + /** The API ticket low level encoded for case 3. */ + IUicRailTicket iTicketDecodedFromAsn1Case3 = null; + + + /** The ticket decoded 1. */ + IUicRailTicket iTicketDecodedCase1 = null; + + /** The i ticket decoded 2. */ + IUicRailTicket iTicketDecodedCase2 = null; + + /** The i ticket decoded 3. */ + IUicRailTicket iTicketDecodedCase3 = null; + + byte[] encodedInTimeZone1 = null; + byte[] encodedInTimeZone2 = null; + byte[] encodedInTimeZone3 = null; + + String issuingDate1 = null; + String issuingDate2 = null; + String issuingDate3 = null; + + String validFrom1 = null; + String validFrom2 = null; + String validFrom3 = null; + + String validUntil1 = null; + String validUntil2 = null; + String validUntil3 = null; + + String activationDate1 = null; + String activationDate2 = null; + String activationDate3 = null; + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + UicRailTicketData ticket1 = FipTimeZoneTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket2 = FipTimeZoneTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket3 = FipTimeZoneTestTicketV3.getUicTestTicket(); + + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + encoded1 = UperEncoder.encode(ticket1); + encoded2 = UperEncoder.encode(ticket2); + encoded3 = UperEncoder.encode(ticket3); + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone CET + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("CET"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("GMT")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("GMT"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + } + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("CET"); + decode("GMT"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); + assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); + assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 GMT 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + } + + private void decodedDateToStrings() { + + issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); + issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); + issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); + + validFrom1 = ((IFipTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); + validFrom2 = ((IFipTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); + validFrom3 = ((IFipTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); + + validUntil1 = ((IFipTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntil2 = ((IFipTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntil3 = ((IFipTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); + + activationDate1 = ((IFipTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + activationDate2 = ((IFipTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + activationDate3 = ((IFipTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + + } + + + private void setActivatedDayTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().add(date); + + ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().add(date); + + ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().add(date); + + } + + private void setValidFromTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); + ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); + ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); + } + + private void setValidUntilTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IFipTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); + ((IFipTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); + ((IFipTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); + } + + + /** + * Encode in Time Zone + */ + private void encode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + try { + encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); + encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); + encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); + } catch (EncodingFormatException e) { + e.printStackTrace(); + } + } + + /** + * Decode in Time Zone + */ + private void decode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + + try { + iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); + iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); + iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * Encode decode. + */ + private void decodeTestTicketUTC() { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + try { + iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); + iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); + iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV1.java index 4b1d61e..1ee9bc1 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV1.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.test.testtickets.OpenTestComplexTicketV1; @@ -35,6 +36,8 @@ public class OpenTicketComplexTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV2.java index da167c4..86bf2d4 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV2.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.test.testtickets.OpenTestComplexTicketV2; @@ -35,6 +36,8 @@ public class OpenTicketComplexTestV2 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV3.java index 21266a9..e04fbb7 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketComplexTestV3.java @@ -8,6 +8,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.IncludedOpenTicketType; import org.uic.barcode.ticket.api.asn.omv3.OpenTicketData; import org.uic.barcode.ticket.api.asn.omv3.PassengerType; @@ -39,6 +40,8 @@ public class OpenTicketComplexTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketINcludedTicketDateTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketINcludedTicketDateTestV3.java index 5631489..5420675 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketINcludedTicketDateTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketINcludedTicketDateTestV3.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.CodeTableType; import org.uic.barcode.ticket.api.asn.omv3.IncludedOpenTicketType; import org.uic.barcode.ticket.api.asn.omv3.OpenTicketData; @@ -42,6 +43,8 @@ public class OpenTicketINcludedTicketDateTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketRestrictedLuggageComplexTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketRestrictedLuggageComplexTestV3.java index fe0bdda..5ae24b4 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketRestrictedLuggageComplexTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketRestrictedLuggageComplexTestV3.java @@ -8,6 +8,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.IncludedOpenTicketType; import org.uic.barcode.ticket.api.asn.omv3.OpenTicketData; import org.uic.barcode.ticket.api.asn.omv3.PassengerType; @@ -39,6 +40,8 @@ public class OpenTicketRestrictedLuggageComplexTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java index c2d288e..8d632c8 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IOpenTicket; @@ -89,6 +90,8 @@ public class OpenTicketTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = OpenTicketTimeZoneTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java index 236d8b0..cc94978 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java @@ -1,347 +1,350 @@ -package org.uic.barcode.ticket.api.test; - -import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.uic.barcode.asn1.uper.UperEncoder; -import org.uic.barcode.ticket.EncodingFormatException; -import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; -import org.uic.barcode.ticket.api.spec.IOpenTicket; -import org.uic.barcode.ticket.api.spec.IUicRailTicket; -import org.uic.barcode.ticket.api.test.testtickets.OpenTicketTimeZoneTestTicketV3; -import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; -import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; -import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; -import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; - - -/** - * The Class FipTimeZoneTestV2. - * - * - * - */ -public class OpenTicketTimeZoneTestV3 { - - /** The low level encoded test ticket test case 1 . */ - private byte[] encoded1 = null; - - /** The low level encoded test ticket test case 2 . */ - private byte[] encoded2 = null; - - /** The low level encoded test ticket test case 3 . */ - private byte[] encoded3 = null; - - /** The decoder. */ - Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); - - /** The encoder. */ - Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); - - /** The API ticket low level encoded for case 1. */ - IUicRailTicket iTicketDecodedFromAsn1Case1 = null; - - /** The API ticket low level encoded for case 2. */ - IUicRailTicket iTicketDecodedFromAsn1Case2 = null; - - /** The API ticket low level encoded for case 3. */ - IUicRailTicket iTicketDecodedFromAsn1Case3 = null; - - - /** The ticket decoded 1. */ - IUicRailTicket iTicketDecodedCase1 = null; - - /** The i ticket decoded 2. */ - IUicRailTicket iTicketDecodedCase2 = null; - - /** The i ticket decoded 3. */ - IUicRailTicket iTicketDecodedCase3 = null; - - byte[] encodedInTimeZone1 = null; - byte[] encodedInTimeZone2 = null; - byte[] encodedInTimeZone3 = null; - - String issuingDate1 = null; - String issuingDate2 = null; - String issuingDate3 = null; - - String validFrom1 = null; - String validFrom2 = null; - String validFrom3 = null; - - String validUntil1 = null; - String validUntil2 = null; - String validUntil3 = null; - - String activationDate1 = null; - String activationDate2 = null; - String activationDate3 = null; - - TimeZone defaulttimeZone = null; - - /** - * Prepare tickets. - */ - @Before public void prepare() { - - defaulttimeZone = TimeZone.getDefault(); - - UicRailTicketData ticket1 = OpenTicketTimeZoneTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket2 = OpenTicketTimeZoneTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket3 = OpenTicketTimeZoneTestTicketV3.getUicTestTicket(); - - //encode in UTC time zone - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - - encoded1 = UperEncoder.encode(ticket1); - encoded2 = UperEncoder.encode(ticket2); - encoded3 = UperEncoder.encode(ticket3); - - } - - /** - * clean up - */ - @After public void resetTimeZone() { - TimeZone.setDefault(defaulttimeZone); - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone CET - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("CET"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("GMT")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("GMT"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - } - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("CET"); - decode("GMT"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); - assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); - assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 GMT 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - } - - private void decodedDateToStrings() { - - issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); - issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); - issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); - - validFrom1 = ((IOpenTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); - validFrom2 = ((IOpenTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); - validFrom3 = ((IOpenTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); - - validUntil1 = ((IOpenTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntil2 = ((IOpenTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntil3 = ((IOpenTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); - - activationDate1 = ((IOpenTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - activationDate2 = ((IOpenTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - activationDate3 = ((IOpenTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - - } - - - private void setActivatedDayTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().add(date); - - ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().add(date); - - ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().add(date); - - } - - private void setValidFromTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); - ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); - ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); - } - - private void setValidUntilTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); - ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); - ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); - } - - - /** - * Encode in Time Zone - */ - private void encode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - try { - encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); - encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); - encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); - } catch (EncodingFormatException e) { - e.printStackTrace(); - } - } - - /** - * Decode in Time Zone - */ - private void decode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - - try { - iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); - iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); - iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * Encode decode. - */ - private void decodeTestTicketUTC() { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - try { - iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); - iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); - iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { - e.printStackTrace(); - } - - } - -} +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; +import org.uic.barcode.ticket.api.spec.IOpenTicket; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.test.testtickets.OpenTicketTimeZoneTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class FipTimeZoneTestV2. + * + * + * + */ +public class OpenTicketTimeZoneTestV3 { + + /** The low level encoded test ticket test case 1 . */ + private byte[] encoded1 = null; + + /** The low level encoded test ticket test case 2 . */ + private byte[] encoded2 = null; + + /** The low level encoded test ticket test case 3 . */ + private byte[] encoded3 = null; + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + /** The API ticket low level encoded for case 1. */ + IUicRailTicket iTicketDecodedFromAsn1Case1 = null; + + /** The API ticket low level encoded for case 2. */ + IUicRailTicket iTicketDecodedFromAsn1Case2 = null; + + /** The API ticket low level encoded for case 3. */ + IUicRailTicket iTicketDecodedFromAsn1Case3 = null; + + + /** The ticket decoded 1. */ + IUicRailTicket iTicketDecodedCase1 = null; + + /** The i ticket decoded 2. */ + IUicRailTicket iTicketDecodedCase2 = null; + + /** The i ticket decoded 3. */ + IUicRailTicket iTicketDecodedCase3 = null; + + byte[] encodedInTimeZone1 = null; + byte[] encodedInTimeZone2 = null; + byte[] encodedInTimeZone3 = null; + + String issuingDate1 = null; + String issuingDate2 = null; + String issuingDate3 = null; + + String validFrom1 = null; + String validFrom2 = null; + String validFrom3 = null; + + String validUntil1 = null; + String validUntil2 = null; + String validUntil3 = null; + + String activationDate1 = null; + String activationDate2 = null; + String activationDate3 = null; + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + UicRailTicketData ticket1 = OpenTicketTimeZoneTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket2 = OpenTicketTimeZoneTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket3 = OpenTicketTimeZoneTestTicketV3.getUicTestTicket(); + + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + encoded1 = UperEncoder.encode(ticket1); + encoded2 = UperEncoder.encode(ticket2); + encoded3 = UperEncoder.encode(ticket3); + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone CET + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("CET"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("GMT")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("GMT"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + } + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("CET"); + decode("GMT"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); + assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); + assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 GMT 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + } + + private void decodedDateToStrings() { + + issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); + issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); + issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); + + validFrom1 = ((IOpenTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); + validFrom2 = ((IOpenTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); + validFrom3 = ((IOpenTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); + + validUntil1 = ((IOpenTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntil2 = ((IOpenTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntil3 = ((IOpenTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); + + activationDate1 = ((IOpenTicket) iTicketDecodedCase1.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + activationDate2 = ((IOpenTicket) iTicketDecodedCase2.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + activationDate3 = ((IOpenTicket) iTicketDecodedCase3.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + + } + + + private void setActivatedDayTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().add(date); + + ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().add(date); + + ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().add(date); + + } + + private void setValidFromTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); + ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); + ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); + } + + private void setValidUntilTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IOpenTicket) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); + ((IOpenTicket) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); + ((IOpenTicket) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); + } + + + /** + * Encode in Time Zone + */ + private void encode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + try { + encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); + encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); + encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); + } catch (EncodingFormatException e) { + e.printStackTrace(); + } + } + + /** + * Decode in Time Zone + */ + private void decode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + + try { + iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); + iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); + iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * Encode decode. + */ + private void decodeTestTicketUTC() { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + try { + iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); + iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); + iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTrainLinkDateTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTrainLinkDateTestV3.java index ae6a75a..75de2ae 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTrainLinkDateTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTrainLinkDateTestV3.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.OpenTicketData; import org.uic.barcode.ticket.api.asn.omv3.TrainLinkType; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; @@ -40,6 +41,8 @@ public class OpenTicketTrainLinkDateTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java index 0cda25e..3855967 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IParkingGround; @@ -85,6 +86,8 @@ public class ParkingTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = ParkingTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV2.java index 3833034..b4c2560 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV2.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IParkingGround; @@ -85,6 +86,8 @@ public class ParkingTimeZoneTestV2 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = ParkingTestTicketV2.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java index 88c7a6e..e6bdf8f 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IParkingGround; @@ -87,6 +88,8 @@ public class ParkingTimeZoneTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = ParkingTestTicketV3.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/PassComplexTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/PassComplexTestV3.java index 6b73221..9dc3bb5 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/PassComplexTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/PassComplexTestV3.java @@ -7,6 +7,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.BoardingOrArrivalType; import org.uic.barcode.ticket.api.asn.omv3.PassData; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; @@ -35,6 +36,8 @@ public class PassComplexTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java index e7aeae8..ad7a0dd 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IPass; @@ -132,6 +133,8 @@ public class PassTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = PassTimeZoneTestTicketCase1V1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV2.java index decc26b..6b71547 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV2.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IPass; @@ -89,6 +90,8 @@ public class PassTimeZoneTestV2 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = PassTimeZoneTestTicketV2.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java index d8ea9f3..7a2f392 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java @@ -1,347 +1,350 @@ -package org.uic.barcode.ticket.api.test; - -import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.uic.barcode.asn1.uper.UperEncoder; -import org.uic.barcode.ticket.EncodingFormatException; -import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; -import org.uic.barcode.ticket.api.spec.IPass; -import org.uic.barcode.ticket.api.spec.IUicRailTicket; -import org.uic.barcode.ticket.api.test.testtickets.PassTimeZoneTestTicketV3; -import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; -import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; -import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; -import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; - - -/** - * The Class FipTimeZoneTestV2. - * - * - * - */ -public class PassTimeZoneTestV3 { - - /** The low level encoded test ticket test case 1 . */ - private byte[] encoded1 = null; - - /** The low level encoded test ticket test case 2 . */ - private byte[] encoded2 = null; - - /** The low level encoded test ticket test case 3 . */ - private byte[] encoded3 = null; - - /** The decoder. */ - Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); - - /** The encoder. */ - Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); - - /** The API ticket low level encoded for case 1. */ - IUicRailTicket iTicketDecodedFromAsn1Case1 = null; - - /** The API ticket low level encoded for case 2. */ - IUicRailTicket iTicketDecodedFromAsn1Case2 = null; - - /** The API ticket low level encoded for case 3. */ - IUicRailTicket iTicketDecodedFromAsn1Case3 = null; - - - /** The ticket decoded 1. */ - IUicRailTicket iTicketDecodedCase1 = null; - - /** The i ticket decoded 2. */ - IUicRailTicket iTicketDecodedCase2 = null; - - /** The i ticket decoded 3. */ - IUicRailTicket iTicketDecodedCase3 = null; - - byte[] encodedInTimeZone1 = null; - byte[] encodedInTimeZone2 = null; - byte[] encodedInTimeZone3 = null; - - String issuingDate1 = null; - String issuingDate2 = null; - String issuingDate3 = null; - - String validFrom1 = null; - String validFrom2 = null; - String validFrom3 = null; - - String validUntil1 = null; - String validUntil2 = null; - String validUntil3 = null; - - String activationDate1 = null; - String activationDate2 = null; - String activationDate3 = null; - - TimeZone defaulttimeZone = null; - - /** - * Prepare tickets. - */ - @Before public void prepare() { - - defaulttimeZone = TimeZone.getDefault(); - - UicRailTicketData ticket1 = PassTimeZoneTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket2 = PassTimeZoneTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket3 = PassTimeZoneTestTicketV3.getUicTestTicket(); - - //encode in UTC time zone - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - - encoded1 = UperEncoder.encode(ticket1); - encoded2 = UperEncoder.encode(ticket2); - encoded3 = UperEncoder.encode(ticket3); - - } - - /** - * clean up - */ - @After public void resetTimeZone() { - TimeZone.setDefault(defaulttimeZone); - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone CET - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("CET"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("GMT")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("GMT"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - } - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromTo("2021.03.14-00:00"); - setValidUntilTo("2021.03.24-23:59"); - setActivatedDayTo("2021.03.14-00:00"); - - encode("CET"); - decode("GMT"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); - assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); - assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); - - assert(validFrom1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFrom2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFrom3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - assert(validUntil1.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntil2.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntil3.equals("Wed Mar 24 23:59:00 GMT 2021" )); - - assert(activationDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(activationDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(activationDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - } - - private void decodedDateToStrings() { - - issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); - issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); - issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); - - validFrom1 = ((IPass) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); - validFrom2 = ((IPass) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); - validFrom3 = ((IPass) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); - - validUntil1 = ((IPass) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntil2 = ((IPass) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntil3 = ((IPass) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); - - activationDate1 = ((IPass) iTicketDecodedCase1.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - activationDate2 = ((IPass) iTicketDecodedCase2.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - activationDate3 = ((IPass) iTicketDecodedCase3.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); - - } - - - private void setActivatedDayTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().add(date); - - ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().add(date); - - ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().clear(); - ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().add(date); - - } - - private void setValidFromTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); - ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); - ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); - } - - private void setValidUntilTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); - ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); - ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); - } - - - /** - * Encode in Time Zone - */ - private void encode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - try { - encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); - encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); - encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); - } catch (EncodingFormatException e) { - e.printStackTrace(); - } - } - - /** - * Decode in Time Zone - */ - private void decode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - - try { - iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); - iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); - iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * Encode decode. - */ - private void decodeTestTicketUTC() { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - try { - iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); - iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); - iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { - e.printStackTrace(); - } - - } - -} +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; +import org.uic.barcode.ticket.api.spec.IPass; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.test.testtickets.PassTimeZoneTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class FipTimeZoneTestV2. + * + * + * + */ +public class PassTimeZoneTestV3 { + + /** The low level encoded test ticket test case 1 . */ + private byte[] encoded1 = null; + + /** The low level encoded test ticket test case 2 . */ + private byte[] encoded2 = null; + + /** The low level encoded test ticket test case 3 . */ + private byte[] encoded3 = null; + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + /** The API ticket low level encoded for case 1. */ + IUicRailTicket iTicketDecodedFromAsn1Case1 = null; + + /** The API ticket low level encoded for case 2. */ + IUicRailTicket iTicketDecodedFromAsn1Case2 = null; + + /** The API ticket low level encoded for case 3. */ + IUicRailTicket iTicketDecodedFromAsn1Case3 = null; + + + /** The ticket decoded 1. */ + IUicRailTicket iTicketDecodedCase1 = null; + + /** The i ticket decoded 2. */ + IUicRailTicket iTicketDecodedCase2 = null; + + /** The i ticket decoded 3. */ + IUicRailTicket iTicketDecodedCase3 = null; + + byte[] encodedInTimeZone1 = null; + byte[] encodedInTimeZone2 = null; + byte[] encodedInTimeZone3 = null; + + String issuingDate1 = null; + String issuingDate2 = null; + String issuingDate3 = null; + + String validFrom1 = null; + String validFrom2 = null; + String validFrom3 = null; + + String validUntil1 = null; + String validUntil2 = null; + String validUntil3 = null; + + String activationDate1 = null; + String activationDate2 = null; + String activationDate3 = null; + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + UicRailTicketData ticket1 = PassTimeZoneTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket2 = PassTimeZoneTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket3 = PassTimeZoneTestTicketV3.getUicTestTicket(); + + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + encoded1 = UperEncoder.encode(ticket1); + encoded2 = UperEncoder.encode(ticket2); + encoded3 = UperEncoder.encode(ticket3); + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone CET + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("CET"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("GMT")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("GMT"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + } + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromTo("2021.03.14-00:00"); + setValidUntilTo("2021.03.24-23:59"); + setActivatedDayTo("2021.03.14-00:00"); + + encode("CET"); + decode("GMT"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); + assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); + assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); + + assert(validFrom1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFrom2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFrom3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + assert(validUntil1.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntil2.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntil3.equals("Wed Mar 24 23:59:00 GMT 2021" )); + + assert(activationDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(activationDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(activationDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + } + + private void decodedDateToStrings() { + + issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); + issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); + issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); + + validFrom1 = ((IPass) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); + validFrom2 = ((IPass) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); + validFrom3 = ((IPass) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); + + validUntil1 = ((IPass) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntil2 = ((IPass) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntil3 = ((IPass) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); + + activationDate1 = ((IPass) iTicketDecodedCase1.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + activationDate2 = ((IPass) iTicketDecodedCase2.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + activationDate3 = ((IPass) iTicketDecodedCase3.getDocumentData().iterator().next()).getActivatedDays().iterator().next().toString(); + + } + + + private void setActivatedDayTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).getActivatedDays().add(date); + + ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).getActivatedDays().add(date); + + ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().clear(); + ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).getActivatedDays().add(date); + + } + + private void setValidFromTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); + ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); + ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); + } + + private void setValidUntilTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IPass) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); + ((IPass) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); + ((IPass) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); + } + + + /** + * Encode in Time Zone + */ + private void encode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + try { + encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); + encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); + encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); + } catch (EncodingFormatException e) { + e.printStackTrace(); + } + } + + /** + * Decode in Time Zone + */ + private void decode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + + try { + iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); + iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); + iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * Encode decode. + */ + private void decodeTestTicketUTC() { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + try { + iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); + iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); + iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/PassTrainValidityTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/PassTrainValidityTestV3.java index 2e78ef3..3691a69 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/PassTrainValidityTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/PassTrainValidityTestV3.java @@ -10,6 +10,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv3.BoardingOrArrivalType; import org.uic.barcode.ticket.api.asn.omv3.PassData; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; @@ -38,6 +39,8 @@ public class PassTrainValidityTestV3 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //encode in UTC time zone diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java index 5bf78cb..ac0ab37 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IReservation; @@ -85,6 +86,8 @@ public class ReservationTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = ReservationTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV2.java index 34d3bc2..72e7313 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV2.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IReservation; @@ -85,6 +86,8 @@ public class ReservationTimeZoneTestV2 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = ReservationTestTicketV2.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java index 3eb43e1..e479e10 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java @@ -1,314 +1,317 @@ -package org.uic.barcode.ticket.api.test; - -import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.uic.barcode.asn1.uper.UperEncoder; -import org.uic.barcode.ticket.EncodingFormatException; -import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; -import org.uic.barcode.ticket.api.spec.IReservation; -import org.uic.barcode.ticket.api.spec.IUicRailTicket; -import org.uic.barcode.ticket.api.test.testtickets.ReservationTestTicketV3; -import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; -import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; -import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; -import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; - - -/** - * The Class FipTimeZoneTestV3. - * - * - * - */ -public class ReservationTimeZoneTestV3 { - - /** The low level encoded test ticket test case 1 . */ - private byte[] encoded1 = null; - - /** The low level encoded test ticket test case 2 . */ - private byte[] encoded2 = null; - - /** The low level encoded test ticket test case 3 . */ - private byte[] encoded3 = null; - - /** The decoder. */ - Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); - - /** The encoder. */ - Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); - - /** The API ticket low level encoded for case 1. */ - IUicRailTicket iTicketDecodedFromAsn1Case1 = null; - - /** The API ticket low level encoded for case 2. */ - IUicRailTicket iTicketDecodedFromAsn1Case2 = null; - - /** The API ticket low level encoded for case 3. */ - IUicRailTicket iTicketDecodedFromAsn1Case3 = null; - - - /** The ticket decoded 1. */ - IUicRailTicket iTicketDecodedCase1 = null; - - /** The i ticket decoded 2. */ - IUicRailTicket iTicketDecodedCase2 = null; - - /** The i ticket decoded 3. */ - IUicRailTicket iTicketDecodedCase3 = null; - - byte[] encodedInTimeZone1 = null; - byte[] encodedInTimeZone2 = null; - byte[] encodedInTimeZone3 = null; - - String issuingDate1 = null; - String issuingDate2 = null; - String issuingDate3 = null; - - String departureDate1 = null; - String departureDate2 = null; - String departureDate3 = null; - - String arrivalDate1 = null; - String arrivalDate2 = null; - String arrivalDate3 = null; - - TimeZone defaulttimeZone = null; - - /** - * Prepare tickets. - */ - @Before public void prepare() { - - defaulttimeZone = TimeZone.getDefault(); - - UicRailTicketData ticket1 = ReservationTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket2 = ReservationTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket3 = ReservationTestTicketV3.getUicTestTicket(); - - //encode in UTC time zone - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - - encoded1 = UperEncoder.encode(ticket1); - encoded2 = UperEncoder.encode(ticket2); - encoded3 = UperEncoder.encode(ticket3); - - } - - /** - * clean up - */ - @After public void resetTimeZone() { - TimeZone.setDefault(defaulttimeZone); - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone CET - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setdepartureDateTo("2021.03.14-00:00"); - setarrivalDateTo("2021.03.24-23:59"); - - encode("CET"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(departureDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(departureDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(departureDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(arrivalDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(arrivalDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(arrivalDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("GMT")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setdepartureDateTo("2021.03.14-00:00"); - setarrivalDateTo("2021.03.24-23:59"); - - encode("GMT"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(departureDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(departureDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(departureDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(arrivalDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(arrivalDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(arrivalDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - - } - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setdepartureDateTo("2021.03.14-00:00"); - setarrivalDateTo("2021.03.24-23:59"); - - encode("CET"); - decode("GMT"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); - assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); - assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); - - assert(departureDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(departureDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(departureDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - assert(arrivalDate1.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(arrivalDate2.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(arrivalDate3.equals("Wed Mar 24 23:59:00 GMT 2021" )); - - - } - - private void decodedDateToStrings() { - - issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); - issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); - issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); - - departureDate1 = ((IReservation) iTicketDecodedCase1.getDocumentData().iterator().next()).getDepartureDate().toString(); - departureDate2 = ((IReservation) iTicketDecodedCase2.getDocumentData().iterator().next()).getDepartureDate().toString(); - departureDate3 = ((IReservation) iTicketDecodedCase3.getDocumentData().iterator().next()).getDepartureDate().toString(); - - arrivalDate1 = ((IReservation) iTicketDecodedCase1.getDocumentData().iterator().next()).getArrivalDate().toString(); - arrivalDate2 = ((IReservation) iTicketDecodedCase2.getDocumentData().iterator().next()).getArrivalDate().toString(); - arrivalDate3 = ((IReservation) iTicketDecodedCase3.getDocumentData().iterator().next()).getArrivalDate().toString(); - - - } - - - private void setdepartureDateTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IReservation) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setDepartureDate(date); - ((IReservation) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setDepartureDate(date); - ((IReservation) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setDepartureDate(date); - } - - private void setarrivalDateTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IReservation) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setArrivalDate(date); - ((IReservation) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setArrivalDate(date); - ((IReservation) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setArrivalDate(date); - } - - - /** - * Encode in Time Zone - */ - private void encode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - try { - encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); - encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); - encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); - } catch (EncodingFormatException e) { - e.printStackTrace(); - } - } - - /** - * Decode in Time Zone - */ - private void decode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - - try { - iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); - iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); - iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * Encode decode. - */ - private void decodeTestTicketUTC() { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - try { - iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); - iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); - iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { - e.printStackTrace(); - } - - } - -} +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; +import org.uic.barcode.ticket.api.spec.IReservation; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.test.testtickets.ReservationTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class FipTimeZoneTestV3. + * + * + * + */ +public class ReservationTimeZoneTestV3 { + + /** The low level encoded test ticket test case 1 . */ + private byte[] encoded1 = null; + + /** The low level encoded test ticket test case 2 . */ + private byte[] encoded2 = null; + + /** The low level encoded test ticket test case 3 . */ + private byte[] encoded3 = null; + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + /** The API ticket low level encoded for case 1. */ + IUicRailTicket iTicketDecodedFromAsn1Case1 = null; + + /** The API ticket low level encoded for case 2. */ + IUicRailTicket iTicketDecodedFromAsn1Case2 = null; + + /** The API ticket low level encoded for case 3. */ + IUicRailTicket iTicketDecodedFromAsn1Case3 = null; + + + /** The ticket decoded 1. */ + IUicRailTicket iTicketDecodedCase1 = null; + + /** The i ticket decoded 2. */ + IUicRailTicket iTicketDecodedCase2 = null; + + /** The i ticket decoded 3. */ + IUicRailTicket iTicketDecodedCase3 = null; + + byte[] encodedInTimeZone1 = null; + byte[] encodedInTimeZone2 = null; + byte[] encodedInTimeZone3 = null; + + String issuingDate1 = null; + String issuingDate2 = null; + String issuingDate3 = null; + + String departureDate1 = null; + String departureDate2 = null; + String departureDate3 = null; + + String arrivalDate1 = null; + String arrivalDate2 = null; + String arrivalDate3 = null; + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + UicRailTicketData ticket1 = ReservationTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket2 = ReservationTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket3 = ReservationTestTicketV3.getUicTestTicket(); + + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + encoded1 = UperEncoder.encode(ticket1); + encoded2 = UperEncoder.encode(ticket2); + encoded3 = UperEncoder.encode(ticket3); + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone CET + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setdepartureDateTo("2021.03.14-00:00"); + setarrivalDateTo("2021.03.24-23:59"); + + encode("CET"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(departureDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(departureDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(departureDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(arrivalDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(arrivalDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(arrivalDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("GMT")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setdepartureDateTo("2021.03.14-00:00"); + setarrivalDateTo("2021.03.24-23:59"); + + encode("GMT"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(departureDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(departureDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(departureDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(arrivalDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(arrivalDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(arrivalDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + + } + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setdepartureDateTo("2021.03.14-00:00"); + setarrivalDateTo("2021.03.24-23:59"); + + encode("CET"); + decode("GMT"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); + assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); + assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); + + assert(departureDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(departureDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(departureDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + assert(arrivalDate1.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(arrivalDate2.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(arrivalDate3.equals("Wed Mar 24 23:59:00 GMT 2021" )); + + + } + + private void decodedDateToStrings() { + + issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); + issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); + issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); + + departureDate1 = ((IReservation) iTicketDecodedCase1.getDocumentData().iterator().next()).getDepartureDate().toString(); + departureDate2 = ((IReservation) iTicketDecodedCase2.getDocumentData().iterator().next()).getDepartureDate().toString(); + departureDate3 = ((IReservation) iTicketDecodedCase3.getDocumentData().iterator().next()).getDepartureDate().toString(); + + arrivalDate1 = ((IReservation) iTicketDecodedCase1.getDocumentData().iterator().next()).getArrivalDate().toString(); + arrivalDate2 = ((IReservation) iTicketDecodedCase2.getDocumentData().iterator().next()).getArrivalDate().toString(); + arrivalDate3 = ((IReservation) iTicketDecodedCase3.getDocumentData().iterator().next()).getArrivalDate().toString(); + + + } + + + private void setdepartureDateTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IReservation) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setDepartureDate(date); + ((IReservation) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setDepartureDate(date); + ((IReservation) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setDepartureDate(date); + } + + private void setarrivalDateTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IReservation) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setArrivalDate(date); + ((IReservation) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setArrivalDate(date); + ((IReservation) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setArrivalDate(date); + } + + + /** + * Encode in Time Zone + */ + private void encode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + try { + encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); + encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); + encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); + } catch (EncodingFormatException e) { + e.printStackTrace(); + } + } + + /** + * Decode in Time Zone + */ + private void decode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + + try { + iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); + iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); + iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * Encode decode. + */ + private void decodeTestTicketUTC() { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + try { + iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); + iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); + iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java index aedf569..f8379f1 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IStationPassage; @@ -85,6 +86,8 @@ public class StationPassageTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = StationPassageTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV2.java index e87e968..dffd5a8 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV2.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IStationPassage; @@ -85,6 +86,8 @@ public class StationPassageTimeZoneTestV2 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = StationPassageTestTicketV2.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java index c60225d..ffe8916 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java @@ -1,314 +1,317 @@ -package org.uic.barcode.ticket.api.test; - -import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.uic.barcode.asn1.uper.UperEncoder; -import org.uic.barcode.ticket.EncodingFormatException; -import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; -import org.uic.barcode.ticket.api.spec.IStationPassage; -import org.uic.barcode.ticket.api.spec.IUicRailTicket; -import org.uic.barcode.ticket.api.test.testtickets.StationPassageTestTicketV3; -import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; -import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; -import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; -import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; - - -/** - * The Class FipTimeZoneTestV3. - * - * - * - */ -public class StationPassageTimeZoneTestV3 { - - /** The low level encoded test ticket test case 1 . */ - private byte[] encoded1 = null; - - /** The low level encoded test ticket test case 2 . */ - private byte[] encoded2 = null; - - /** The low level encoded test ticket test case 3 . */ - private byte[] encoded3 = null; - - /** The decoder. */ - Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); - - /** The encoder. */ - Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); - - /** The API ticket low level encoded for case 1. */ - IUicRailTicket iTicketDecodedFromAsn1Case1 = null; - - /** The API ticket low level encoded for case 2. */ - IUicRailTicket iTicketDecodedFromAsn1Case2 = null; - - /** The API ticket low level encoded for case 3. */ - IUicRailTicket iTicketDecodedFromAsn1Case3 = null; - - - /** The ticket decoded 1. */ - IUicRailTicket iTicketDecodedCase1 = null; - - /** The i ticket decoded 2. */ - IUicRailTicket iTicketDecodedCase2 = null; - - /** The i ticket decoded 3. */ - IUicRailTicket iTicketDecodedCase3 = null; - - byte[] encodedInTimeZone1 = null; - byte[] encodedInTimeZone2 = null; - byte[] encodedInTimeZone3 = null; - - String issuingDate1 = null; - String issuingDate2 = null; - String issuingDate3 = null; - - String validFromDate1 = null; - String validFromDate2 = null; - String validFromDate3 = null; - - String validUntilDate1 = null; - String validUntilDate2 = null; - String validUntilDate3 = null; - - TimeZone defaulttimeZone = null; - - /** - * Prepare tickets. - */ - @Before public void prepare() { - - defaulttimeZone = TimeZone.getDefault(); - - UicRailTicketData ticket1 = StationPassageTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket2 = StationPassageTestTicketV3.getUicTestTicket(); - UicRailTicketData ticket3 = StationPassageTestTicketV3.getUicTestTicket(); - - //encode in UTC time zone - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - - encoded1 = UperEncoder.encode(ticket1); - encoded2 = UperEncoder.encode(ticket2); - encoded3 = UperEncoder.encode(ticket3); - - } - - /** - * clean up - */ - @After public void resetTimeZone() { - TimeZone.setDefault(defaulttimeZone); - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone CET - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromDateTo("2021.03.14-00:00"); - setUntilDateTo("2021.03.24-23:59"); - - encode("CET"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFromDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFromDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFromDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntilDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntilDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntilDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - - } - - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("GMT")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromDateTo("2021.03.14-00:00"); - setUntilDateTo("2021.03.24-23:59"); - - encode("GMT"); - decode("CET"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); - assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); - assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); - - assert(validFromDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFromDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); - assert(validFromDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); - - assert(validUntilDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntilDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); - assert(validUntilDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); - - - } - - /** - * Test encode test tickets in UTC and decode in CET. - * - * @throws IllegalArgumentException the illegal argument exception - * @throws IllegalAccessException the illegal access exception - * @throws ParseException - */ - @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { - - //get tickets - decodeTestTicketUTC(); - - //set the dates in the time zone GMT - TimeZone.setDefault(TimeZone.getTimeZone("CET")); - iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); - iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); - iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); - - setValidFromDateTo("2021.03.14-00:00"); - setUntilDateTo("2021.03.24-23:59"); - - encode("CET"); - decode("GMT"); - decodedDateToStrings(); - - assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); - assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); - assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); - - assert(validFromDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFromDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); - assert(validFromDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); - - assert(validUntilDate1.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntilDate2.equals("Wed Mar 24 23:59:00 GMT 2021" )); - assert(validUntilDate3.equals("Wed Mar 24 23:59:00 GMT 2021" )); - - - } - - private void decodedDateToStrings() { - - issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); - issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); - issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); - - validFromDate1 = ((IStationPassage) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); - validFromDate2 = ((IStationPassage) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); - validFromDate3 = ((IStationPassage) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); - - validUntilDate1 = ((IStationPassage) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntilDate2 = ((IStationPassage) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); - validUntilDate3 = ((IStationPassage) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); - - - } - - - private void setValidFromDateTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IStationPassage) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); - ((IStationPassage) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); - ((IStationPassage) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); - } - - private void setUntilDateTo(String dateString) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); - Date date = dateFormat.parse(dateString); - ((IStationPassage) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); - ((IStationPassage) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); - ((IStationPassage) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); - } - - - /** - * Encode in Time Zone - */ - private void encode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - try { - encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); - encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); - encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); - } catch (EncodingFormatException e) { - e.printStackTrace(); - } - } - - /** - * Decode in Time Zone - */ - private void decode(String timeZone) { - TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); - - try { - iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); - iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); - iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * Encode decode. - */ - private void decodeTestTicketUTC() { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - try { - iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); - iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); - iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { - e.printStackTrace(); - } - - } - -} +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; +import org.uic.barcode.ticket.api.spec.IStationPassage; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.test.testtickets.StationPassageTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class FipTimeZoneTestV3. + * + * + * + */ +public class StationPassageTimeZoneTestV3 { + + /** The low level encoded test ticket test case 1 . */ + private byte[] encoded1 = null; + + /** The low level encoded test ticket test case 2 . */ + private byte[] encoded2 = null; + + /** The low level encoded test ticket test case 3 . */ + private byte[] encoded3 = null; + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + /** The API ticket low level encoded for case 1. */ + IUicRailTicket iTicketDecodedFromAsn1Case1 = null; + + /** The API ticket low level encoded for case 2. */ + IUicRailTicket iTicketDecodedFromAsn1Case2 = null; + + /** The API ticket low level encoded for case 3. */ + IUicRailTicket iTicketDecodedFromAsn1Case3 = null; + + + /** The ticket decoded 1. */ + IUicRailTicket iTicketDecodedCase1 = null; + + /** The i ticket decoded 2. */ + IUicRailTicket iTicketDecodedCase2 = null; + + /** The i ticket decoded 3. */ + IUicRailTicket iTicketDecodedCase3 = null; + + byte[] encodedInTimeZone1 = null; + byte[] encodedInTimeZone2 = null; + byte[] encodedInTimeZone3 = null; + + String issuingDate1 = null; + String issuingDate2 = null; + String issuingDate3 = null; + + String validFromDate1 = null; + String validFromDate2 = null; + String validFromDate3 = null; + + String validUntilDate1 = null; + String validUntilDate2 = null; + String validUntilDate3 = null; + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + UicRailTicketData ticket1 = StationPassageTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket2 = StationPassageTestTicketV3.getUicTestTicket(); + UicRailTicketData ticket3 = StationPassageTestTicketV3.getUicTestTicket(); + + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + encoded1 = UperEncoder.encode(ticket1); + encoded2 = UperEncoder.encode(ticket2); + encoded3 = UperEncoder.encode(ticket3); + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone CET + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromDateTo("2021.03.14-00:00"); + setUntilDateTo("2021.03.24-23:59"); + + encode("CET"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFromDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFromDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFromDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntilDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntilDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntilDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testGMTCETencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("GMT")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromDateTo("2021.03.14-00:00"); + setUntilDateTo("2021.03.24-23:59"); + + encode("GMT"); + decode("CET"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 13:30:00 CET 2021" )); + assert(issuingDate2.equals("Thu Mar 04 01:30:00 CET 2021" )); + assert(issuingDate3.equals("Thu Mar 04 00:30:00 CET 2021" )); + + assert(validFromDate1.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFromDate2.equals("Sun Mar 14 00:00:00 CET 2021" )); + assert(validFromDate3.equals("Sun Mar 14 00:00:00 CET 2021" )); + + assert(validUntilDate1.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntilDate2.equals("Wed Mar 24 23:59:00 CET 2021" )); + assert(validUntilDate3.equals("Wed Mar 24 23:59:00 CET 2021" )); + + + } + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testCETGMTencoding() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + decodeTestTicketUTC(); + + //set the dates in the time zone GMT + TimeZone.setDefault(TimeZone.getTimeZone("CET")); + iTicketDecodedFromAsn1Case1.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" )); + iTicketDecodedFromAsn1Case2.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-00:30" )); + iTicketDecodedFromAsn1Case3.getIssuerDetails().setIssuingDate(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.03-23:30" )); + + setValidFromDateTo("2021.03.14-00:00"); + setUntilDateTo("2021.03.24-23:59"); + + encode("CET"); + decode("GMT"); + decodedDateToStrings(); + + assert(issuingDate1.equals("Thu Mar 04 12:30:00 GMT 2021" )); + assert(issuingDate2.equals("Thu Mar 04 00:30:00 GMT 2021" )); + assert(issuingDate3.equals("Wed Mar 03 23:30:00 GMT 2021" )); + + assert(validFromDate1.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFromDate2.equals("Sun Mar 14 00:00:00 GMT 2021" )); + assert(validFromDate3.equals("Sun Mar 14 00:00:00 GMT 2021" )); + + assert(validUntilDate1.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntilDate2.equals("Wed Mar 24 23:59:00 GMT 2021" )); + assert(validUntilDate3.equals("Wed Mar 24 23:59:00 GMT 2021" )); + + + } + + private void decodedDateToStrings() { + + issuingDate1 = iTicketDecodedCase1.getIssuerDetails().getIssuingDate().toString(); + issuingDate2 = iTicketDecodedCase2.getIssuerDetails().getIssuingDate().toString(); + issuingDate3 = iTicketDecodedCase3.getIssuerDetails().getIssuingDate().toString(); + + validFromDate1 = ((IStationPassage) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidFrom().toString(); + validFromDate2 = ((IStationPassage) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidFrom().toString(); + validFromDate3 = ((IStationPassage) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidFrom().toString(); + + validUntilDate1 = ((IStationPassage) iTicketDecodedCase1.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntilDate2 = ((IStationPassage) iTicketDecodedCase2.getDocumentData().iterator().next()).getValidUntil().toString(); + validUntilDate3 = ((IStationPassage) iTicketDecodedCase3.getDocumentData().iterator().next()).getValidUntil().toString(); + + + } + + + private void setValidFromDateTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IStationPassage) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidFrom(date); + ((IStationPassage) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidFrom(date); + ((IStationPassage) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidFrom(date); + } + + private void setUntilDateTo(String dateString) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + Date date = dateFormat.parse(dateString); + ((IStationPassage) iTicketDecodedFromAsn1Case1.getDocumentData().iterator().next()).setValidUntil(date); + ((IStationPassage) iTicketDecodedFromAsn1Case2.getDocumentData().iterator().next()).setValidUntil(date); + ((IStationPassage) iTicketDecodedFromAsn1Case3.getDocumentData().iterator().next()).setValidUntil(date); + } + + + /** + * Encode in Time Zone + */ + private void encode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + try { + encodedInTimeZone1 = encoder.encode(iTicketDecodedFromAsn1Case1); + encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); + encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); + } catch (EncodingFormatException e) { + e.printStackTrace(); + } + } + + /** + * Decode in Time Zone + */ + private void decode(String timeZone) { + TimeZone.setDefault(TimeZone.getTimeZone(timeZone)); + + try { + iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); + iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); + iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * Encode decode. + */ + private void decodeTestTicketUTC() { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + try { + iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); + iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); + iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); + } catch (IOException e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java index cb20d79..d9a2944 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java @@ -5,8 +5,10 @@ import static org.junit.Assert.assertEquals; import java.io.IOException; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -17,6 +19,9 @@ import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoder; public class UperEncodeOpenTicketTestV1 { + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testDecodeTicket() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java index 7436f5d..a60296a 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java @@ -5,8 +5,10 @@ import static org.junit.Assert.assertEquals; import java.io.IOException; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IUicRailTicket; @@ -17,6 +19,9 @@ import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoder; public class UperEncodePassTestV1 { + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testDecodeTicket() throws IllegalArgumentException, IllegalAccessException { UicRailTicketData ticket = PassTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java index 0a4b04c..a512ff3 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java @@ -5,8 +5,10 @@ import static org.junit.Assert.assertEquals; import java.io.IOException; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.ILinkMode; import org.uic.barcode.ticket.api.spec.ITicketLink; @@ -19,7 +21,9 @@ import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoder; public class UperEncodeTicketLinkTestV1 { - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncodeTicket() throws IllegalArgumentException, IllegalAccessException { diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketTestV1.java index cf8eec6..fd59308 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketTestV1.java @@ -4,8 +4,10 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.test.testtickets.SimpleUicTestTicket; @@ -85,7 +87,9 @@ public class UperEncodeTicketTestV1 { */ - + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncodeTicket() throws IllegalArgumentException, IllegalAccessException { UicRailTicketData ticket = SimpleUicTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeUICTicketExtensionTest.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeUICTicketExtensionTest.java index da59f67..6dda463 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeUICTicketExtensionTest.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeUICTicketExtensionTest.java @@ -4,10 +4,12 @@ import static org.junit.Assert.assertEquals; import java.util.logging.Level; +import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.api.asn.omv1.ExtensionData; import org.uic.barcode.ticket.api.asn.omv1.SequenceOfExtensionData; @@ -35,20 +37,7 @@ public class UperEncodeUICTicketExtensionTest { } } -Encoding to the file 'data.uper' using PER UNALIGNED encoding rule... -TestRecord SEQUENCE [fieldcount (not encoded) = 1] - extensionList SEQUENCE OF [count = 2] - ExtensionData SEQUENCE [fieldcount (not encoded) = 2] - extensionId IA5String [length = 1.0] - "1" - extensionData OCTET STRING [length = 2.0] - 0x82da - ExtensionData SEQUENCE [fieldcount (not encoded) = 2] - extensionId IA5String [length = 1.0] - "2" - extensionData OCTET STRING [length = 2.0] - 0x83da -Total encoded length = 10.7 + Encoded successfully in 11 bytes: 8100B102 82DA0164 0507B4 @@ -66,6 +55,9 @@ Encoded successfully in 11 bytes: } } + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } @Test public void testEncodeTicket() throws IllegalArgumentException, IllegalAccessException { TestRecord ticket = new TestRecord(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java index 423908b..e2629a3 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IVoucher; @@ -85,6 +86,8 @@ public class VoucherTimeZoneTestV1 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = VoucherTestTicketV1.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java index c7c2512..f7b4618 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv2.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IVoucher; @@ -87,6 +88,8 @@ public class VoucherTimeZoneTestV2 { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); UicRailTicketData ticket1 = VoucherTestTicketV2.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java index 22b17c2..b76b6cc 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java @@ -11,6 +11,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData; import org.uic.barcode.ticket.api.spec.IVoucher; @@ -86,6 +87,8 @@ public class VoucherTimeZoneTestV3 { * Prepare tickets. */ @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); defaulttimeZone = TimeZone.getDefault(); diff --git a/src/test/java/org/uic/barcode/ticketTestDB/DecodeSparpreisTicketDBTest.java b/src/test/java/org/uic/barcode/ticketTestDB/DecodeSparpreisTicketDBTest.java index 326eb99..2898b59 100644 --- a/src/test/java/org/uic/barcode/ticketTestDB/DecodeSparpreisTicketDBTest.java +++ b/src/test/java/org/uic/barcode/ticketTestDB/DecodeSparpreisTicketDBTest.java @@ -1,7 +1,6 @@ package org.uic.barcode.ticketTestDB; -import java.util.Iterator; import java.util.TimeZone; import org.junit.After; @@ -10,11 +9,10 @@ import org.junit.Before; import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout; -import org.uic.barcode.ticket.api.impl.SimpleTrainLink; import org.uic.barcode.ticket.api.spec.IOpenTicket; import org.uic.barcode.ticket.api.spec.IPassengerType; -import org.uic.barcode.ticket.api.spec.IRegionalValidity; import org.uic.barcode.ticket.api.spec.ITariff; import org.uic.barcode.ticket.api.spec.ITrainLink; import org.uic.barcode.ticket.api.spec.ITraveler; @@ -28,6 +26,9 @@ public class DecodeSparpreisTicketDBTest { * Prepare tickets. */ @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //decode in local CET time zone TimeZone.setDefault(TimeZone.getTimeZone("CET")); diff --git a/src/test/java/org/uic/barcode/ticketTestDB/EncodeSparpreisTicketDBTest.java b/src/test/java/org/uic/barcode/ticketTestDB/EncodeSparpreisTicketDBTest.java index 787abf5..2cb6d69 100644 --- a/src/test/java/org/uic/barcode/ticketTestDB/EncodeSparpreisTicketDBTest.java +++ b/src/test/java/org/uic/barcode/ticketTestDB/EncodeSparpreisTicketDBTest.java @@ -17,6 +17,7 @@ import org.uic.barcode.Decoder; import org.uic.barcode.Encoder; import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; import org.uic.barcode.staticFrame.StaticFrame; import org.uic.barcode.test.utils.TestUtils; import org.uic.barcode.ticket.EncodingFormatException; @@ -46,6 +47,9 @@ public class EncodeSparpreisTicketDBTest { * @throws IOException */ @Before public void prepare() throws IOException, EncodingFormatException, DataFormatException { + + LoggerFactory.setActivateConsoleLog(true); + defaulttimeZone = TimeZone.getDefault(); //decode in local CET time zone TimeZone.setDefault(TimeZone.getTimeZone("CET")); diff --git a/src/test/java/org/uic/barcode/ticketTestDB/SignatureValidationDBTicketTest.java b/src/test/java/org/uic/barcode/ticketTestDB/SignatureValidationDBTicketTest.java index 9249f4f..e8922d2 100644 --- a/src/test/java/org/uic/barcode/ticketTestDB/SignatureValidationDBTicketTest.java +++ b/src/test/java/org/uic/barcode/ticketTestDB/SignatureValidationDBTicketTest.java @@ -18,6 +18,7 @@ import org.junit.Test; import org.uic.barcode.Decoder; import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.logger.LoggerFactory; public class SignatureValidationDBTicketTest { @@ -28,6 +29,8 @@ public class SignatureValidationDBTicketTest { */ @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + Security.addProvider(new BouncyCastleProvider()); defaulttimeZone = TimeZone.getDefault(); -- cgit v1.2.3 From 9c1dec2f31e121b0f23a0270211961f3398445ac Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 11 Apr 2022 09:26:40 +0200 Subject: nullpointer exception fixed in dynamic content of dosipas --- .../barcode/dynamicContent/api/DynamicContentCoder.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java index 34406e0..00b5824 100644 --- a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java +++ b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java @@ -92,8 +92,12 @@ public class DynamicContentCoder { GeoCoordinateType asnPoint = new GeoCoordinateType(); - asnPoint.setLatitude(point.getLatitude()); - asnPoint.setLongitude(point.getLongitude()); + if (point.getLatitude() != null) { + asnPoint.setLatitude(point.getLatitude()); + } + if (point.getLongitude() != null) { + asnPoint.setLongitude(point.getLongitude()); + } if (point.getUnit() != IGeoUnitType.milliDegree && point.getUnit() != null){ asnPoint.setGeoUnit(GeoUnitType.valueOf(point.getUnit().name())); @@ -169,8 +173,12 @@ public class DynamicContentCoder { IGeoCoordinate g = new SimpleGeoCoordinate(); - g.setLatitude(asnCoordinate.getLatitude()); - g.setLongitude(asnCoordinate.getLongitude()); + if (asnCoordinate.getLatitude() != null) { + g.setLatitude(asnCoordinate.getLatitude()); + } + if (asnCoordinate.getLongitude() != null) { + g.setLongitude(asnCoordinate.getLongitude()); + } if (asnCoordinate.getCoordinateSystem() != null) { g.setSystem(IGeoCoordinateSystemType.valueOf(asnCoordinate.getCoordinateSystem().name())); -- cgit v1.2.3 From 0ea854b3232f1dc33bb55f2ef9946f72dc40ed21 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 11 Apr 2022 09:30:06 +0200 Subject: nullpointer --- .../java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java index 00b5824..a4d38c6 100644 --- a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java +++ b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java @@ -162,8 +162,9 @@ public class DynamicContentCoder { content.setGeoCoordinate(getGeoCoordinate(asn.getGeoCoordinate())); - content.setTimeStamp(asn.getTimeStamp().getTimeAsDate()); - + if (asn.getTimeStamp() != null) { + content.setTimeStamp(asn.getTimeStamp().getTimeAsDate()); + } return content; -- cgit v1.2.3 From 6c625e1491ec3260790765f002ce75cf6fdd369c Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 11 Apr 2022 09:36:04 +0200 Subject: nullpointer --- .../java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java index a4d38c6..ea90879 100644 --- a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java +++ b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java @@ -172,6 +172,8 @@ public class DynamicContentCoder { private static IGeoCoordinate getGeoCoordinate(GeoCoordinateType asnCoordinate) { + if (asnCoordinate == null) return null; + IGeoCoordinate g = new SimpleGeoCoordinate(); if (asnCoordinate.getLatitude() != null) { -- cgit v1.2.3 From 44f3079ffeb5cdb6d5338b48f0a6460c24f2503e Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 11 Apr 2022 09:39:35 +0200 Subject: nullpointer --- .../dynamicContent/api/DynamicContentCoder.java | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java index ea90879..b49bcb9 100644 --- a/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java +++ b/src/main/java/org/uic/barcode/dynamicContent/api/DynamicContentCoder.java @@ -57,21 +57,25 @@ public class DynamicContentCoder { private static SequenceOfExtension getAsnContentExtensions(UicDynamicContentDataFDC1 asn, List dynamicContentResponseList) throws EncodingFormatException { - if (dynamicContentResponseList != null && !dynamicContentResponseList.isEmpty()){ + if (dynamicContentResponseList == null || dynamicContentResponseList.isEmpty()){ + return null; + } - SequenceOfExtension asnList = asn.getExtensions(); - if (asnList == null) asnList = new SequenceOfExtension(); - for (IExtension extension : dynamicContentResponseList){ - ExtensionData asnExtension = getAsnExtension(extension); - if (asnExtension!= null) { - asnList.add(asnExtension); - } - } - if (!asnList.isEmpty()){ - return asnList; + SequenceOfExtension asnList = asn.getExtensions(); + if (asnList == null) { + asnList = new SequenceOfExtension(); + } + + for (IExtension extension : dynamicContentResponseList){ + ExtensionData asnExtension = getAsnExtension(extension); + if (asnExtension!= null) { + asnList.add(asnExtension); } } - + if (!asnList.isEmpty()){ + return asnList; + } + return null; } -- cgit v1.2.3 From 32a1132a55a6493941ca8441104e1b9d85688147 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 11 Apr 2022 10:10:04 +0200 Subject: TimeStamp using java compliant with older android version --- .../uic/barcode/dynamicContent/fdc1/TimeStamp.java | 20 +++++---- .../java/org/uic/barcode/test/TimeStampTest.java | 50 +++++++++++++++++++++- 2 files changed, 61 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java b/src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java index c2cd8fa..2f54da3 100644 --- a/src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java +++ b/src/main/java/org/uic/barcode/dynamicContent/fdc1/TimeStamp.java @@ -1,11 +1,11 @@ package org.uic.barcode.dynamicContent.fdc1; import java.time.Instant; -import java.time.ZoneId; import java.time.ZoneOffset; import java.time.ZonedDateTime; -import java.time.temporal.ChronoField; +import java.util.Calendar; import java.util.Date; +import java.util.TimeZone; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.IntRange; @@ -41,18 +41,22 @@ public class TimeStamp { * Instantiates a new time stamp and sets the time-stamp to now. */ public TimeStamp() { - ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")); - day = new Long(now.get(ChronoField.DAY_OF_YEAR)); - secondOfDay = new Long(now.get(ChronoField.SECOND_OF_DAY)); + setNow(); } /** * Sets the the time-stamp to now. */ public void setNow() { - ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")); - day = new Long(now.get(ChronoField.DAY_OF_YEAR)); - secondOfDay = new Long(now.get(ChronoField.SECOND_OF_DAY)); + Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + day = (long) c.get(Calendar.DAY_OF_YEAR); + long now = c.getTimeInMillis(); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + long passed = now - c.getTimeInMillis(); + secondOfDay = passed / 1000; } /** diff --git a/src/test/java/org/uic/barcode/test/TimeStampTest.java b/src/test/java/org/uic/barcode/test/TimeStampTest.java index c15e0fb..f03a63c 100644 --- a/src/test/java/org/uic/barcode/test/TimeStampTest.java +++ b/src/test/java/org/uic/barcode/test/TimeStampTest.java @@ -1,5 +1,8 @@ package org.uic.barcode.test; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.temporal.ChronoField; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; @@ -36,6 +39,51 @@ public class TimeStampTest { } - + @Test public void testDateConversion2() { + + + Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + long day = (long) c.get(Calendar.DAY_OF_YEAR); + long now = c.getTimeInMillis(); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + long passed = now - c.getTimeInMillis(); + long secondOfDay = passed / 1000; + + TimeStamp ts = new TimeStamp(); + assert (ts.day == day); + assert (ts.secondOfDay >= secondOfDay - 1); + assert (ts.secondOfDay <= secondOfDay + 1); + + + } + + @Test public void testDateConversion3() { + + //implemntation not available on older android versions: + ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")); + long day = new Long(now.get(ChronoField.DAY_OF_YEAR)); + long secondOfDay = new Long(now.get(ChronoField.SECOND_OF_DAY)); + + //alternative implementation + Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + long day2 = (long) c.get(Calendar.DAY_OF_YEAR); + long now2 = c.getTimeInMillis(); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + long passed = now2 - c.getTimeInMillis(); + long secondOfDay2 = passed / 1000; + + + assert (day2 == day); + assert (secondOfDay2 >= secondOfDay - 1); + assert (secondOfDay2 <= secondOfDay + 1); + + + } } -- cgit v1.2.3 From e670f1fdbc43f0d0854896a1afe2815f8a9f4c87 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 11 Apr 2022 15:06:48 +0200 Subject: fixing DOSIPAS algorithm names and supported EC curves --- .../dynamicFrame/api/SimpleDynamicFrame.java | 43 ++++- .../uic/barcode/utils/AlgorithmNameResolver.java | 187 ++++++++++++++------- .../java/org/uic/barcode/utils/SecurityUtils.java | 129 ++++++++++++++ ...cFrameDoubleSignatureProviderSelectionTest.java | 13 +- .../test/DynamicFrameDoubleSignatureTest.java | 27 ++- .../test/DynamicFrameDynamicContentApiTest.java | 2 +- .../test/DynamicFrameDynamicContentTest.java | 4 +- .../barcode/test/DynamicFrameFcbVersion1Test.java | 2 +- .../barcode/test/DynamicFrameFcbVersion3Test.java | 2 +- .../uic/barcode/test/DynamicFrameSimpleTest.java | 2 +- .../test/DynamicFrameV2FcbVersion3Test.java | 2 +- .../test/DynamicFrameV2SignatureInsert2Test.java | 2 +- .../test/DynamicFrameV2SignatureInsertTest.java | 2 +- .../test/DynamicFrameV2ValidityDateTest.java | 2 +- 14 files changed, 312 insertions(+), 107 deletions(-) create mode 100644 src/main/java/org/uic/barcode/utils/SecurityUtils.java (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java b/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java index a05a936..ef31166 100644 --- a/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java +++ b/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java @@ -20,6 +20,7 @@ import org.uic.barcode.dynamicFrame.v1.DynamicFrameCoderV1; import org.uic.barcode.dynamicFrame.v2.DynamicFrameCoderV2; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.utils.AlgorithmNameResolver; +import org.uic.barcode.utils.SecurityUtils; @@ -132,13 +133,15 @@ public class SimpleDynamicFrame implements IDynamicFrame { * * Note: an appropriate security provider (e.g. BC) must be registered before * - * @param prov the registered security provider + * @param provider the registered security provider * @return the return error code * @throws EncodingFormatException */ @Override public int validateLevel2(Provider prov) throws EncodingFormatException { + Provider provider = prov; + if (getLevel2Data() == null || getLevel2Data().getLevel1Data() == null || getLevel2Data().getLevel1Data().getLevel2KeyAlg() == null @@ -159,7 +162,7 @@ public class SimpleDynamicFrame implements IDynamicFrame { String keyAlgName = null; try { - keyAlgName = AlgorithmNameResolver.getName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, level2KeyAlg,prov); + keyAlgName = AlgorithmNameResolver.getName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, level2KeyAlg,provider); } catch (Exception e1) { return Constants.LEVEL2_VALIDATION_KEY_ALG_NOT_IMPLEMENTED; } @@ -171,7 +174,20 @@ public class SimpleDynamicFrame implements IDynamicFrame { try { byte[] keyBytes = this.getLevel2Data().getLevel1Data().getLevel2publicKey(); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); - key = KeyFactory.getInstance(keyAlgName).generatePublic(keySpec); + + KeyFactory keyFactory = null; + if (provider == null) { + keyFactory = SecurityUtils.findKeyFactory(level2KeyAlg, keyBytes); + provider = keyFactory.getProvider(); + } else { + keyFactory = KeyFactory.getInstance(keyAlgName,provider); + } + if (keyFactory != null) { + key = keyFactory.generatePublic(keySpec); + } else { + return Constants.LEVEL2_VALIDATION_KEY_ALG_NOT_IMPLEMENTED; + } + } catch (InvalidKeySpecException e1) { return Constants.LEVEL2_VALIDATION_KEY_ALG_NOT_IMPLEMENTED; } catch (NoSuchAlgorithmException e1) { @@ -183,7 +199,7 @@ public class SimpleDynamicFrame implements IDynamicFrame { String sigAlgName = null; try { - sigAlgName = AlgorithmNameResolver.getName(AlgorithmNameResolver.TYPE_SIGNATURE_ALG,level2SigAlg,prov); + sigAlgName = AlgorithmNameResolver.getSignatureAlgorithmName(level2SigAlg,provider); } catch (Exception e1) { return Constants.LEVEL2_VALIDATION_SIG_ALG_NOT_IMPLEMENTED; } @@ -191,12 +207,12 @@ public class SimpleDynamicFrame implements IDynamicFrame { return Constants.LEVEL2_VALIDATION_SIG_ALG_NOT_IMPLEMENTED; } - Signature sig; + Signature sig = null; try { - if (prov == null) { + if (provider == null) { sig = Signature.getInstance(sigAlgName); } else { - sig = Signature.getInstance(sigAlgName, prov); + sig = Signature.getInstance(sigAlgName,provider); } } catch (NoSuchAlgorithmException e) { return Constants.LEVEL2_VALIDATION_SIG_ALG_NOT_IMPLEMENTED; @@ -321,7 +337,7 @@ public class SimpleDynamicFrame implements IDynamicFrame { } else { return Constants.LEVEL1_VALIDATION_FRAUD; } - } catch (SignatureException e) { + } catch (Exception e) { return Constants.LEVEL1_VALIDATION_SIG_ALG_NOT_IMPLEMENTED; } } @@ -344,6 +360,9 @@ public class SimpleDynamicFrame implements IDynamicFrame { //find the algorithm name for the signature OID String algo = AlgorithmNameResolver.getSignatureAlgorithmName(this.getLevel2Data().getLevel1Data().getLevel2SigningAlg(), prov); Signature sig = null; + if (prov == null) { + prov = SecurityUtils.findPrivateKeyProvider(key); + } if (prov != null) { sig = Signature.getInstance(algo,prov); } else { @@ -438,10 +457,16 @@ public class SimpleDynamicFrame implements IDynamicFrame { ILevel1Data level1Data = level2Data.getLevel1Data(); if (level1Data == null) return; + + if (prov == null) { + //check for a provider supporting the key + prov = SecurityUtils.findPrivateKeyProvider(key); + } //find the algorithm name for the signature OID - String algo = AlgorithmNameResolver.getSignatureAlgorithmName(level1Data.getLevel1SigningAlg()); + String algo = AlgorithmNameResolver.getSignatureAlgorithmName(level1Data.getLevel1SigningAlg(), prov); Signature sig = null; + if (prov != null) { sig = Signature.getInstance(algo, prov); } else { diff --git a/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java b/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java index a3154f3..28f90e6 100644 --- a/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java +++ b/src/main/java/org/uic/barcode/utils/AlgorithmNameResolver.java @@ -3,98 +3,161 @@ package org.uic.barcode.utils; import java.security.Provider; import java.security.Provider.Service; import java.security.Security; +import java.util.HashMap; +/** + * The Class AlgorithmNameResolver. + */ public class AlgorithmNameResolver { + /** The Constant TYPE_KEY_GENERATOR_ALG. */ public static final String TYPE_KEY_GENERATOR_ALG = "KeyPairGenerator"; + + /** The Constant TYPE_SIGNATURE_ALG. */ public static final String TYPE_SIGNATURE_ALG = "Signature"; + /** The map. */ + private static HashMap> map = new HashMap>(); + + /** + * Adds an entry for a mapping of algorithm type and oid to an algorithm name + * + * @param type the algorithm type + * @param oid the algorithm OID + * @param name the algorithm name + */ + public static void addMap (String type, String oid, String name) { + + if (map.get(type) == null) { + HashMap list = new HashMap(); + list.put(oid, name); + map.put(type, list); + } else { + map.get(type).put(oid, name); + } + } + + /** + * Gets the signature algorithm name. + * + * @param oid the oid + * @return the signature algorithm name + * @throws Exception the exception + */ public static String getSignatureAlgorithmName (String oid) throws Exception { - Provider[] provs = Security.getProviders(); - for (Provider prov : provs) { - Service service = prov.getService(AlgorithmNameResolver.TYPE_SIGNATURE_ALG,oid); - if (service != null) { - return service.getAlgorithm(); - } - } - return null; + return getSignatureAlgorithmName (oid, null); } + /** + * Gets the signature algorithm name. + * + * @param oid the oid + * @param provider the provider + * @return the signature algorithm name + * @throws Exception the exception + */ public static String getSignatureAlgorithmName (String oid, Provider provider) throws Exception { + return getAlgorithmName(AlgorithmNameResolver.TYPE_SIGNATURE_ALG,oid,provider); + + } + + /** + * Gets the name. + * + * @param type the type + * @param oid the oid + * @return the name + * @throws Exception the exception + */ + public static String getName (String type, String oid) throws Exception { + + return getAlgorithmName(type,oid,null); + + } + + + /** + * Gets the name. + * + * @param type the type + * @param oid the oid + * @param provider the provider + * @return the name + * @throws Exception the exception + */ + public static String getName(String type, String oid, Provider provider) throws Exception { + + return getAlgorithmName(type,oid,provider); + + } + + + + /** + * Gets the algorithm name. + * + * @param type the type + * @param oid the oid + * @param provider the provider + * @return the algorithm name + * @throws Exception the exception + */ + public static String getAlgorithmName (String type, String oid, Provider provider) throws Exception { + + String name = null; + if (provider != null) { - Service service = provider.getService(AlgorithmNameResolver.TYPE_SIGNATURE_ALG,oid); - return service.getAlgorithm(); + Service service = provider.getService(type,oid); + if (service != null) { + name = service.getAlgorithm(); + } + + if (name != null && name.length() > 0) { + return name; + } } Provider[] provs = Security.getProviders(); for (Provider prov : provs) { - Service service = prov.getService(AlgorithmNameResolver.TYPE_SIGNATURE_ALG,oid); + Service service = prov.getService(type,oid); if (service != null) { - return service.getAlgorithm(); + name = service.getAlgorithm(); + } + if (name != null && name.length() > 0) { + return name; } } - return null; - - } - - - public static String getName (String type, String oid) throws Exception { - - Provider[] provs = Security.getProviders(); - for (Provider prov : provs) { - Service service = prov.getService(type,oid); - if (service != null) { - return service.getAlgorithm(); - } - } - - if (oid.startsWith("1.2.840.10045")) { + + if (map.get(type) != null) { + if (map.get(type).get(oid) != null) { + return map.get(type).get(oid); + } + } + + + //fallback if the provider did not implement OIDs + if (oid.startsWith("1.2.840.10045.4")) { return "ECDSA"; - } else if (oid.startsWith("1.2.840.10040")) { - return "DSA"; - } - - return null; - - } - - - public static String getName(String type, String oid, Provider provider) throws Exception { - - Service service = null; - if (provider == null) { - - Provider[] provs = Security.getProviders(); - for (Provider prov : provs) { - service = prov.getService(type,oid); - } - - } else { - service = provider.getService(type,oid); - } - - - - if (service != null) { - return service.getAlgorithm(); - } - - if (oid.startsWith("1.2.840.10045")) { + } else if (oid.startsWith("1.2.840.10045.3")) { + return "EC"; + } else if (oid.startsWith("1.2.840.10045")) { return "ECDSA"; } else if (oid.startsWith("1.2.840.10040")) { return "DSA"; } - - return null; - - } + + return null; + + } + + diff --git a/src/main/java/org/uic/barcode/utils/SecurityUtils.java b/src/main/java/org/uic/barcode/utils/SecurityUtils.java new file mode 100644 index 0000000..542208b --- /dev/null +++ b/src/main/java/org/uic/barcode/utils/SecurityUtils.java @@ -0,0 +1,129 @@ +package org.uic.barcode.utils; + +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.Provider; +import java.security.PublicKey; +import java.security.Security; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; + +public class SecurityUtils { + + public static KeyFactory findKeyFactory(String oid, byte[] keyBytes) { + + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); + + String name = null; + try { + name = AlgorithmNameResolver.getName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, oid); + } catch (Exception e2) { + return null; + } + if (name == null || name.length() == 0) { + return null; + } + + KeyFactory keyFactory = null; + + Provider[] provs = Security.getProviders(); + for (Provider provider : provs) { + try { + keyFactory = KeyFactory.getInstance(name,provider); + } catch (NoSuchAlgorithmException e1) { + //try next + } + if (keyFactory != null) { + try { + keyFactory.generatePublic(keySpec); + return keyFactory; + } catch (Exception e) { + //try next + } + } + } + return null; + + } + + + public static Provider findPrivateKeyProvider(PrivateKey key) { + + String name = key.getAlgorithm(); + byte[] keyBytes = key.getEncoded(); + + + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); + + + KeyFactory keyFactory = null; + + Provider[] provs = Security.getProviders(); + for (Provider provider : provs) { + try { + keyFactory = KeyFactory.getInstance(name,provider); + } catch (NoSuchAlgorithmException e1) { + //try next + } + if (keyFactory != null) { + try { + keyFactory.generatePrivate(keySpec); + return provider; + } catch (Exception e) { + provider = null; + //try next + } + } + } + + return null; + } + + + + public static PublicKey convertPublicKey(PublicKey key) { + + + PublicKey publicKey; + try { + publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(key.getEncoded())); + } catch (InvalidKeySpecException | NoSuchAlgorithmException e) { + return key; + } + + return publicKey; + + } + + + public static PublicKey convert(PublicKey key, Provider provider) { + + PublicKey publicKey; + try { + publicKey = KeyFactory.getInstance("RSA", provider).generatePublic(new X509EncodedKeySpec(key.getEncoded())); + } catch (InvalidKeySpecException | NoSuchAlgorithmException e) { + return key; + } + + return publicKey; + + + } + + + public static PrivateKey convertPrivateKey(PrivateKey key) { + + + PrivateKey privateKey; + try { + privateKey = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(key.getEncoded())); + } catch (InvalidKeySpecException | NoSuchAlgorithmException e) { + return key; + } + + return privateKey; + + } +} diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java index f531f70..59f3b47 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureProviderSelectionTest.java @@ -1,12 +1,10 @@ package org.uic.barcode.test; import java.io.IOException; -import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; import java.security.Provider; import java.security.SecureRandom; import java.security.Security; @@ -28,6 +26,7 @@ import org.uic.barcode.test.utils.Level2TestDataFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.utils.AlgorithmNameResolver; public class DynamicFrameDoubleSignatureProviderSelectionTest { @@ -48,7 +47,7 @@ public class DynamicFrameDoubleSignatureProviderSelectionTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); @@ -152,16 +151,10 @@ public class DynamicFrameDoubleSignatureProviderSelectionTest { } - public KeyPair generateECDSAKeys(String keyAlgorithmName, String paramName) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException{ - ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(paramName); - KeyPairGenerator g = KeyPairGenerator.getInstance(keyAlgorithmName, "BC"); - g.initialize(ecSpec, new SecureRandom()); - return g.generateKeyPair(); - } public KeyPair generateECKeys(String keyAlgorithmOid, String curve) throws Exception{ - String keyAlgorithmName = "ECDSA"; + String keyAlgorithmName = AlgorithmNameResolver.getName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, keyAlgorithmOid); ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(curve); KeyPairGenerator g = KeyPairGenerator.getInstance(keyAlgorithmName, "BC"); g.initialize(ecSpec, new SecureRandom()); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java index 160ebc1..bd0f9a4 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java @@ -1,21 +1,18 @@ package org.uic.barcode.test; import java.io.IOException; -import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; import java.security.SecureRandom; import java.security.Security; import java.security.SignatureException; +import java.security.spec.ECGenParameterSpec; import java.util.Arrays; import java.util.zip.DataFormatException; -import org.bouncycastle.jce.ECNamedCurveTable; import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECParameterSpec; import org.junit.Before; import org.junit.Test; import org.uic.barcode.Decoder; @@ -27,6 +24,7 @@ import org.uic.barcode.test.utils.Level2TestDataFactory; import org.uic.barcode.test.utils.SimpleUICTestTicket; import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.utils.SecurityUtils; public class DynamicFrameDoubleSignatureTest { @@ -46,7 +44,7 @@ public class DynamicFrameDoubleSignatureTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); @@ -148,20 +146,17 @@ public class DynamicFrameDoubleSignatureTest { } - public KeyPair generateECDSAKeys(String keyAlgorithmName, String paramName) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException{ - ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(paramName); - KeyPairGenerator g = KeyPairGenerator.getInstance(keyAlgorithmName, "BC"); - g.initialize(ecSpec, new SecureRandom()); - return g.generateKeyPair(); - } public KeyPair generateECKeys(String keyAlgorithmOid, String curve) throws Exception{ - String keyAlgorithmName = "ECDSA"; - ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(curve); - KeyPairGenerator g = KeyPairGenerator.getInstance(keyAlgorithmName, "BC"); - g.initialize(ecSpec, new SecureRandom()); - return g.generateKeyPair(); + //ECNamedCurveGenParameterSpec namedParamSpec = new ECNamedCurveGenParameterSpec(elipticCurve); + + ECGenParameterSpec namedParamSpec = new ECGenParameterSpec(elipticCurve); + KeyPairGenerator ecKPGen = KeyPairGenerator.getInstance("EC", "BC"); + ecKPGen.initialize(namedParamSpec, new SecureRandom()); + KeyPair keyPair = ecKPGen.generateKeyPair(); + KeyPair kp = new KeyPair(SecurityUtils.convertPublicKey(keyPair.getPublic()),SecurityUtils.convertPrivateKey(keyPair.getPrivate())); + return kp; } diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java index 4c039ff..da701bd 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentApiTest.java @@ -54,7 +54,7 @@ public class DynamicFrameDynamicContentApiTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java index 656dbb4..b91cd0c 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDynamicContentTest.java @@ -57,10 +57,10 @@ public class DynamicFrameDynamicContentTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); - + Security.addProvider(new BouncyCastleProvider()); try { diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java index f5a4705..dafeb49 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion1Test.java @@ -43,7 +43,7 @@ public class DynamicFrameFcbVersion1Test { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java index 4eb821a..f8a03ba 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java @@ -43,7 +43,7 @@ public class DynamicFrameFcbVersion3Test { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java index 2c7cce3..931324d 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameSimpleTest.java @@ -42,7 +42,7 @@ public class DynamicFrameSimpleTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java index 5fcb07a..ab4c39e 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2FcbVersion3Test.java @@ -43,7 +43,7 @@ public class DynamicFrameV2FcbVersion3Test { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java index c50172b..5b5a8ae 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsert2Test.java @@ -54,7 +54,7 @@ public class DynamicFrameV2SignatureInsert2Test { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java index 90d3c2b..68be52e 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2SignatureInsertTest.java @@ -54,7 +54,7 @@ public class DynamicFrameV2SignatureInsertTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java index d4f5d6a..a198b97 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameV2ValidityDateTest.java @@ -47,7 +47,7 @@ public class DynamicFrameV2ValidityDateTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256k1"; + elipticCurve = "secp256r1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); -- cgit v1.2.3 From 6ef85723cca938e298b318dc6d564318b83ab4ba Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Mon, 11 Apr 2022 16:30:32 +0200 Subject: use one provider only within validation --- .../dynamicFrame/api/SimpleDynamicFrame.java | 10 ++- .../java/org/uic/barcode/utils/SecurityUtils.java | 77 ++++++++++++++++------ .../test/DynamicFrameDoubleSignatureTest.java | 8 ++- .../barcode/test/DynamicFrameFcbVersion3Test.java | 8 +-- 4 files changed, 74 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java b/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java index ef31166..a8d7a0f 100644 --- a/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java +++ b/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java @@ -272,6 +272,7 @@ public class SimpleDynamicFrame implements IDynamicFrame { return Constants.LEVEL1_VALIDATION_NO_SIGNATURE; } + byte[] signature = this.getLevel2Data().getLevel1Signature(); @@ -288,7 +289,13 @@ public class SimpleDynamicFrame implements IDynamicFrame { if (signingAlgorithmOid == null || signingAlgorithmOid.length() == 0) { return Constants.LEVEL1_VALIDATION_NO_SIGNATURE; - } + } + + if (prov == null) { + prov = SecurityUtils.findSignatureProvider(key.getEncoded(), signingAlgorithmOid); + } + + //find the algorithm name for the signature OID String algo = null; try { @@ -312,6 +319,7 @@ public class SimpleDynamicFrame implements IDynamicFrame { return Constants.LEVEL1_VALIDATION_SIG_ALG_NOT_IMPLEMENTED; } try { + key = SecurityUtils.convert(key, prov); sig.initVerify(key); } catch (InvalidKeyException e) { return Constants.LEVEL1_VALIDATION_SIG_ALG_NOT_IMPLEMENTED; diff --git a/src/main/java/org/uic/barcode/utils/SecurityUtils.java b/src/main/java/org/uic/barcode/utils/SecurityUtils.java index 542208b..af1a65a 100644 --- a/src/main/java/org/uic/barcode/utils/SecurityUtils.java +++ b/src/main/java/org/uic/barcode/utils/SecurityUtils.java @@ -4,6 +4,7 @@ import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.Provider; +import java.security.Provider.Service; import java.security.PublicKey; import java.security.Security; import java.security.spec.InvalidKeySpecException; @@ -81,28 +82,22 @@ public class SecurityUtils { return null; } - - - public static PublicKey convertPublicKey(PublicKey key) { - - - PublicKey publicKey; - try { - publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(key.getEncoded())); - } catch (InvalidKeySpecException | NoSuchAlgorithmException e) { - return key; - } - - return publicKey; - - } public static PublicKey convert(PublicKey key, Provider provider) { PublicKey publicKey; + KeyFactory keyFactory = null; + try { - publicKey = KeyFactory.getInstance("RSA", provider).generatePublic(new X509EncodedKeySpec(key.getEncoded())); + if (key.getAlgorithm() != null && key.getAlgorithm().toUpperCase().contains("EC") ) { + keyFactory = KeyFactory.getInstance("EC",provider); + } else if (key.getAlgorithm() != null && key.getAlgorithm().length() > 0 ) { + keyFactory = KeyFactory.getInstance("DSA",provider); + } else { + return key; + } + publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(key.getEncoded())); } catch (InvalidKeySpecException | NoSuchAlgorithmException e) { return key; } @@ -113,17 +108,61 @@ public class SecurityUtils { } - public static PrivateKey convertPrivateKey(PrivateKey key) { - + public static PrivateKey convert(PrivateKey key, Provider provider) { PrivateKey privateKey; + KeyFactory keyFactory = null; + try { - privateKey = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(key.getEncoded())); + if (key.getAlgorithm() != null && key.getAlgorithm().toUpperCase().contains("EC") ) { + keyFactory = KeyFactory.getInstance("EC",provider); + } else if (key.getAlgorithm() != null && key.getAlgorithm().length() > 0 ) { + keyFactory = KeyFactory.getInstance("DSA",provider); + } else { + return key; + } + privateKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(key.getEncoded())); } catch (InvalidKeySpecException | NoSuchAlgorithmException e) { return key; } return privateKey; + + } + + public static Provider findSignatureProvider(byte[] encoded, String oid) { + + KeyFactory keyFactory = null; + String signatureAlgorithmName = null; + + Provider[] provs = Security.getProviders(); + for (Provider provider : provs) { + try { + Service service = provider.getService(AlgorithmNameResolver.TYPE_SIGNATURE_ALG, oid); + if (service != null) { + signatureAlgorithmName = service.getAlgorithm(); + if (signatureAlgorithmName != null && signatureAlgorithmName.length() > 0) { + if (signatureAlgorithmName.toUpperCase().contains("EC") ) { + keyFactory = KeyFactory.getInstance("EC",provider); + } else { + keyFactory = KeyFactory.getInstance("DSA",provider); + } + if (keyFactory != null) { + X509EncodedKeySpec spec = new X509EncodedKeySpec(encoded); + //try to encode the key + keyFactory.generatePublic(spec); + } + } + } + } catch (Exception e1) { + keyFactory = null; + } + if (keyFactory != null) { + return keyFactory.getProvider(); + } + } + + return null; } } diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java index bd0f9a4..6533938 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureTest.java @@ -5,6 +5,7 @@ import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; +import java.security.Provider; import java.security.SecureRandom; import java.security.Security; import java.security.SignatureException; @@ -37,6 +38,8 @@ public class DynamicFrameDoubleSignatureTest { public IUicRailTicket testFCBticket = null; + public Provider provider = null; + @Before public void initialize() { @@ -44,10 +47,11 @@ public class DynamicFrameDoubleSignatureTest { signatureAlgorithmOID = Constants.ECDSA_SHA256; keyPairAlgorithmOID = Constants.KG_EC_256; - elipticCurve = "secp256r1"; + elipticCurve = "secp256k1"; testFCBticket = SimpleUICTestTicket.getUicTestTicket(); + provider = new BouncyCastleProvider(); Security.addProvider(new BouncyCastleProvider()); try { @@ -155,7 +159,7 @@ public class DynamicFrameDoubleSignatureTest { KeyPairGenerator ecKPGen = KeyPairGenerator.getInstance("EC", "BC"); ecKPGen.initialize(namedParamSpec, new SecureRandom()); KeyPair keyPair = ecKPGen.generateKeyPair(); - KeyPair kp = new KeyPair(SecurityUtils.convertPublicKey(keyPair.getPublic()),SecurityUtils.convertPrivateKey(keyPair.getPrivate())); + KeyPair kp = new KeyPair(SecurityUtils.convert(keyPair.getPublic(), provider),SecurityUtils.convert(keyPair.getPrivate(), provider)); return kp; } diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java index f8a03ba..7f03658 100644 --- a/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java +++ b/src/test/java/org/uic/barcode/test/DynamicFrameFcbVersion3Test.java @@ -159,13 +159,7 @@ public class DynamicFrameFcbVersion3Test { } - public KeyPair generateECDSAKeys(String keyAlgorithmName, String paramName) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException{ - ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(paramName); - KeyPairGenerator g = KeyPairGenerator.getInstance(keyAlgorithmName, "BC"); - g.initialize(ecSpec, new SecureRandom()); - return g.generateKeyPair(); - } - + public KeyPair generateECKeys(String keyAlgorithmOid, String curve) throws Exception{ String keyAlgorithmName = "ECDSA"; -- cgit v1.2.3 From 58bafb860b060c609a01815657b4df22ce8fbffc Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Tue, 12 Apr 2022 12:54:16 +0200 Subject: test on algorithm name resolver --- .../dynamicFrame/api/SimpleDynamicFrame.java | 15 +- .../uic/barcode/dynamicFrame/v2/DynamicFrame.java | 56 ------ .../barcode/ticket/api/impl/SimpleTraveler.java | 2 +- .../ticket/api/utils/OpenAsn2ApiDecoder.java | 4 +- .../ticket/api/utils/OpenAsn2ApiDecoderV2.java | 4 +- .../ticket/api/utils/OpenAsn2ApiDecoderV3.java | 6 +- .../java/org/uic/barcode/utils/SecurityUtils.java | 57 +++++- .../uic/barcode/asn1/test/BinaryStringTest.java | 66 ++++++ .../barcode/test/AlgorithmNameResolverTest.java | 122 +++++++++++ .../org/uic/barcode/test/BinaryStringTest.java | 66 ------ .../DynamicFrameDoubleSignatureBCelipticTest2.java | 167 ++++++++++++++++ .../DynamicFrameDoubleSignatureCurve2Test.java | 167 ++++++++++++++++ .../org/uic/barcode/test/SecurityUtilsTest.java | 222 +++++++++++++++++++++ .../ticket/api/test/DelayConfirmationTestV3.java | 180 +++++++++++++++++ .../api/test/testtickets/DelayTestTicketV3.java | 10 + 15 files changed, 997 insertions(+), 147 deletions(-) create mode 100644 src/test/java/org/uic/barcode/asn1/test/BinaryStringTest.java create mode 100644 src/test/java/org/uic/barcode/test/AlgorithmNameResolverTest.java delete mode 100644 src/test/java/org/uic/barcode/test/BinaryStringTest.java create mode 100644 src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java create mode 100644 src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureCurve2Test.java create mode 100644 src/test/java/org/uic/barcode/test/SecurityUtilsTest.java create mode 100644 src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java b/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java index a8d7a0f..59ccd52 100644 --- a/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java +++ b/src/main/java/org/uic/barcode/dynamicFrame/api/SimpleDynamicFrame.java @@ -150,6 +150,7 @@ public class SimpleDynamicFrame implements IDynamicFrame { } String level2KeyAlg = getLevel2Data().getLevel1Data().getLevel2KeyAlg(); + String level2SigAlg = this.getLevel2Data().getLevel1Data().getLevel2SigningAlg(); if (level2KeyAlg == null || level2KeyAlg.length() == 0) { @@ -173,16 +174,13 @@ public class SimpleDynamicFrame implements IDynamicFrame { PublicKey key = null; try { byte[] keyBytes = this.getLevel2Data().getLevel1Data().getLevel2publicKey(); - X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); - KeyFactory keyFactory = null; if (provider == null) { - keyFactory = SecurityUtils.findKeyFactory(level2KeyAlg, keyBytes); - provider = keyFactory.getProvider(); - } else { - keyFactory = KeyFactory.getInstance(keyAlgName,provider); - } + provider = SecurityUtils.findPublicKeyProvider(level2KeyAlg,keyBytes); + } + KeyFactory keyFactory = KeyFactory.getInstance(keyAlgName,provider); if (keyFactory != null) { + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); key = keyFactory.generatePublic(keySpec); } else { return Constants.LEVEL2_VALIDATION_KEY_ALG_NOT_IMPLEMENTED; @@ -194,9 +192,8 @@ public class SimpleDynamicFrame implements IDynamicFrame { return Constants.LEVEL2_VALIDATION_KEY_ALG_NOT_IMPLEMENTED; } - //find the algorithm name for the signature OID - String level2SigAlg = this.getLevel2Data().getLevel1Data().getLevel2SigningAlg(); + //find the algorithm name for the signature OID String sigAlgName = null; try { sigAlgName = AlgorithmNameResolver.getSignatureAlgorithmName(level2SigAlg,provider); diff --git a/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java b/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java index 55af066..30043c0 100644 --- a/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java +++ b/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java @@ -123,43 +123,6 @@ public class DynamicFrame extends Object{ } - /** - * Sign level 2 data without a specific security provider. - * - * @param key the key - * @throws Exception the exception - */ - public void signLevel2(PrivateKey key) throws Exception { - - //find the algorithm name for the signature OID - String algo = AlgorithmNameResolver.getSignatureAlgorithmName(this.getLevel2SignedData().getLevel1Data().level2SigningAlg); - Signature sig = Signature.getInstance(algo); - sig.initSign(key); - byte[] data = level2SignedData.encode(); - sig.update(data); - byte[] signature = sig.sign(); - this.level2Signature = new OctetString(signature); - - } - - /** - * Sign level 2 data. - * - * @param key the key - * @param prov the security Provider - * @throws Exception the exception - */ - public void signLevel2(PrivateKey key, Provider prov) throws Exception { - - //find the algorithm name for the signature OID - String algo = AlgorithmNameResolver.getSignatureAlgorithmName(this.getLevel2SignedData().getLevel1Data().level2SigningAlg); - Signature sig = Signature.getInstance(algo,prov); - sig.initSign(key); - byte[] data = level2SignedData.encode(); - sig.update(data); - this.level2Signature = new OctetString(sig.sign()); - - } /** @@ -207,24 +170,5 @@ public class DynamicFrame extends Object{ } - /** - * Gets the dynamic data FDC 1. - * - * @return the dynamic data FDC 1 - */ - public UicDynamicContentDataFDC1 getDynamicDataFDC1() { - - if (this.getLevel2SignedData() == null || - this.getLevel2SignedData().getLevel2Data() == null){ - return null; - } - - if ( UicDynamicContentDataFDC1.getFormat().equals(this.getLevel2SignedData().getLevel2Data().getFormat())) { - return UperEncoder.decode(this.getLevel2SignedData().getLevel2Data().getByteData(), UicDynamicContentDataFDC1.class); - } - return null; - - } - } diff --git a/src/main/java/org/uic/barcode/ticket/api/impl/SimpleTraveler.java b/src/main/java/org/uic/barcode/ticket/api/impl/SimpleTraveler.java index afc351d..e7edd45 100644 --- a/src/main/java/org/uic/barcode/ticket/api/impl/SimpleTraveler.java +++ b/src/main/java/org/uic/barcode/ticket/api/impl/SimpleTraveler.java @@ -53,7 +53,7 @@ public class SimpleTraveler implements ITraveler { protected IPassengerType passengerType; /** The passenger with reduced mobility. */ - protected boolean passengerWithReducedMobility; + protected Boolean passengerWithReducedMobility; /** The country of residence. */ protected int countryOfResidence = 0; diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java index 031d5b3..f4e041f 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java @@ -356,12 +356,14 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { private IDelayConfirmation convertDelayConfirmation(DelayConfirmation asnDocument, Date issuingDate) { IDelayConfirmation document = factory.createDelayConfirmation(); - document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum().longValue(),asnDocument.getReferenceIA5())); + document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); + document.setTrain(UicEncoderUtils.mapToString(asnDocument.getTrainNum(), asnDocument.getTrainIA5())); + if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java index 1d50cb8..57d2366 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java @@ -358,12 +358,14 @@ public class OpenAsn2ApiDecoderV2 implements Asn2ApiDecoder { private IDelayConfirmation convertDelayConfirmation(DelayConfirmation asnDocument, Date issuingDate) { IDelayConfirmation document = factory.createDelayConfirmation(); - document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum().longValue(),asnDocument.getReferenceIA5())); + document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setExtension(convertExtension(asnDocument.getExtension())); document.setInfoText(asnDocument.getInfoText()); + document.setTrain(UicEncoderUtils.mapToString(asnDocument.getTrainNum(), asnDocument.getTrainIA5())); + if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().toString())); } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java index 20d2319..9521858 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java @@ -361,12 +361,14 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { private IDelayConfirmation convertDelayConfirmation(DelayConfirmation asnDocument, Date issuingDate) { IDelayConfirmation document = factory.createDelayConfirmation(); - document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum().longValue(),asnDocument.getReferenceIA5())); + document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setExtension(convertExtension(asnDocument.getExtension())); - document.setInfoText(asnDocument.getInfoText()); + document.setInfoText(asnDocument.getInfoText()); + document.setTrain(UicEncoderUtils.mapToString(asnDocument.getTrainNum(), asnDocument.getTrainIA5())); + if (asnDocument.getStationCodeTable()!=null){ document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().toString())); } diff --git a/src/main/java/org/uic/barcode/utils/SecurityUtils.java b/src/main/java/org/uic/barcode/utils/SecurityUtils.java index af1a65a..1fcc18a 100644 --- a/src/main/java/org/uic/barcode/utils/SecurityUtils.java +++ b/src/main/java/org/uic/barcode/utils/SecurityUtils.java @@ -11,22 +11,30 @@ import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; +/** + * The Class SecurityUtils. + */ public class SecurityUtils { - public static KeyFactory findKeyFactory(String oid, byte[] keyBytes) { + /** + * Find provider by public key. + * + * @param algorithmOid the algorithm oid used to generate the key + * @param keyBytes the encoded bytes of the public key + * @return the provider + */ + public static Provider findPublicKeyProvider(String keyAlgorithmOid, byte[] keyBytes) { + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); - String name = null; + String name; try { - name = AlgorithmNameResolver.getName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, oid); + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, keyAlgorithmOid, null); } catch (Exception e2) { return null; } - if (name == null || name.length() == 0) { - return null; - } - + KeyFactory keyFactory = null; Provider[] provs = Security.getProviders(); @@ -39,17 +47,23 @@ public class SecurityUtils { if (keyFactory != null) { try { keyFactory.generatePublic(keySpec); - return keyFactory; + return provider; } catch (Exception e) { + provider = null; //try next } } } - return null; - + + return null; } - + /** + * Find private key provider. + * + * @param key the private key + * @return the provider + */ public static Provider findPrivateKeyProvider(PrivateKey key) { String name = key.getAlgorithm(); @@ -84,6 +98,13 @@ public class SecurityUtils { + /** + * Convert. + * + * @param key the key + * @param provider the provider + * @return the public key + */ public static PublicKey convert(PublicKey key, Provider provider) { PublicKey publicKey; @@ -108,6 +129,13 @@ public class SecurityUtils { } + /** + * Convert. + * + * @param key the key + * @param provider the provider + * @return the private key + */ public static PrivateKey convert(PrivateKey key, Provider provider) { PrivateKey privateKey; @@ -131,6 +159,13 @@ public class SecurityUtils { } + /** + * Find signature provider. + * + * @param encoded the encoded + * @param oid the oid + * @return the provider + */ public static Provider findSignatureProvider(byte[] encoded, String oid) { KeyFactory keyFactory = null; diff --git a/src/test/java/org/uic/barcode/asn1/test/BinaryStringTest.java b/src/test/java/org/uic/barcode/asn1/test/BinaryStringTest.java new file mode 100644 index 0000000..bb06eae --- /dev/null +++ b/src/test/java/org/uic/barcode/asn1/test/BinaryStringTest.java @@ -0,0 +1,66 @@ +package org.uic.barcode.asn1.test; + +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.AsnUtils; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; + +public class BinaryStringTest { + + @Before public void prepare() { + LoggerFactory.setActivateConsoleLog(true); + } + + + @Test public void testBinaryString() throws IOException, EncodingFormatException{ + + String bs1 = "01000000"; + String ms1 = "1000000001000000001000000001000000001000000001000000001000000001"; + String ms2 = "10000000010000000010000000010000"; + + + //String bs1 = "1011111100001000011011100000000000000001000000010000010010000000"; + + byte[] bytes = AsnUtils.fromBooleanString(bs1); + + String bs2 = AsnUtils.toBooleanString(bytes); + + + + byte[] mask = new byte[] { + (byte) 0b1000_0000, + 0b0100_0000, + 0b0010_0000, + 0b0001_0000, + 0b0000_1000, + 0b0000_0100, + 0b0000_0010, + 0b0000_0001, + }; + String bs3 = AsnUtils.toBooleanString(mask); + byte[] bytes2 = AsnUtils.fromBooleanString(bs3); + + + byte[] mask2 = new byte[] { + (byte) 0b1000_0000, + 0b0100_0000, + 0b0010_0000, + 0b0001_0000, + }; + String bs4 = AsnUtils.toBooleanString(mask2); + byte[] bytes3 = AsnUtils.fromBooleanString(bs4); + + + assert(bs4.equals(ms2)); + + assert(bs3.equals(ms1)); + + assert(bs1.equals(bs2)); + + } + + +} \ No newline at end of file diff --git a/src/test/java/org/uic/barcode/test/AlgorithmNameResolverTest.java b/src/test/java/org/uic/barcode/test/AlgorithmNameResolverTest.java new file mode 100644 index 0000000..6e245e8 --- /dev/null +++ b/src/test/java/org/uic/barcode/test/AlgorithmNameResolverTest.java @@ -0,0 +1,122 @@ +package org.uic.barcode.test; + +import java.security.Provider; +import java.security.Security; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.utils.AlgorithmNameResolver; + +public class AlgorithmNameResolverTest { + + public String signatureAlgorithmOID = null; + public String elipticCurve = null; + public String keyPairAlgorithmOID = null; + + + public Provider provider = null; + + + @Before public void initialize() { + + + + signatureAlgorithmOID = Constants.ECDSA_SHA256; + keyPairAlgorithmOID = Constants.KG_EC_256; + elipticCurve = "secp256k1"; + + + provider = new BouncyCastleProvider(); + Security.addProvider(new BouncyCastleProvider()); + + } + + + + @Test public void testSignatureAlgorithmName() { + + String name = null; + + try { + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_SIGNATURE_ALG, signatureAlgorithmOID, null); + } catch (Exception e) { + assert(false); + } + + assert(name.equals("SHA256withECDSA")); + + //default values: + + try { + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_SIGNATURE_ALG, "1.2.840.10045", null); + } catch (Exception e) { + assert(false); + } + + assert(name.equals("ECDSA")); + + try { + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_SIGNATURE_ALG, "1.2.840.10040", null); + } catch (Exception e) { + assert(false); + } + + assert(name.equals("DSA")); + + //custom value + + AlgorithmNameResolver.addMap(AlgorithmNameResolver.TYPE_SIGNATURE_ALG, "1.2.3.4.5", "TEST"); + + try { + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_SIGNATURE_ALG, "1.2.3.4.5", null); + } catch (Exception e) { + assert(false); + } + + assert(name.equals("TEST")); + + + } + + @Test public void testKeyGeneratorAlgorithmName() { + + String name = null; + + try { + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, keyPairAlgorithmOID, null); + } catch (Exception e) { + assert(false); + } + + assert(name.equals("EC")); + + //default values: + + try { + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_SIGNATURE_ALG, "1.2.840.10045.3", null); + } catch (Exception e) { + assert(false); + } + + assert(name.equals("EC")); + + + + //custom value + + AlgorithmNameResolver.addMap(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, "1.2.3.4.5", "TEST"); + + try { + name = AlgorithmNameResolver.getAlgorithmName(AlgorithmNameResolver.TYPE_KEY_GENERATOR_ALG, "1.2.3.4.5", null); + } catch (Exception e) { + assert(false); + } + + assert(name.equals("TEST")); + + + } + + +} diff --git a/src/test/java/org/uic/barcode/test/BinaryStringTest.java b/src/test/java/org/uic/barcode/test/BinaryStringTest.java deleted file mode 100644 index 11fc3c8..0000000 --- a/src/test/java/org/uic/barcode/test/BinaryStringTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.uic.barcode.test; - -import java.io.IOException; - -import org.junit.Before; -import org.junit.Test; -import org.uic.barcode.asn1.uper.AsnUtils; -import org.uic.barcode.logger.LoggerFactory; -import org.uic.barcode.ticket.EncodingFormatException; - -public class BinaryStringTest { - - @Before public void prepare() { - LoggerFactory.setActivateConsoleLog(true); - } - - - @Test public void testBinaryString() throws IOException, EncodingFormatException{ - - String bs1 = "01000000"; - String ms1 = "1000000001000000001000000001000000001000000001000000001000000001"; - String ms2 = "10000000010000000010000000010000"; - - - //String bs1 = "1011111100001000011011100000000000000001000000010000010010000000"; - - byte[] bytes = AsnUtils.fromBooleanString(bs1); - - String bs2 = AsnUtils.toBooleanString(bytes); - - - - byte[] mask = new byte[] { - (byte) 0b1000_0000, - 0b0100_0000, - 0b0010_0000, - 0b0001_0000, - 0b0000_1000, - 0b0000_0100, - 0b0000_0010, - 0b0000_0001, - }; - String bs3 = AsnUtils.toBooleanString(mask); - byte[] bytes2 = AsnUtils.fromBooleanString(bs3); - - - byte[] mask2 = new byte[] { - (byte) 0b1000_0000, - 0b0100_0000, - 0b0010_0000, - 0b0001_0000, - }; - String bs4 = AsnUtils.toBooleanString(mask2); - byte[] bytes3 = AsnUtils.fromBooleanString(bs4); - - - assert(bs4.equals(ms2)); - - assert(bs3.equals(ms1)); - - assert(bs1.equals(bs2)); - - } - - -} \ No newline at end of file diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java new file mode 100644 index 0000000..f5d0729 --- /dev/null +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java @@ -0,0 +1,167 @@ +package org.uic.barcode.test; + +import java.io.IOException; +import java.security.InvalidKeyException; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.Provider; +import java.security.SecureRandom; +import java.security.Security; +import java.security.SignatureException; +import java.security.spec.ECGenParameterSpec; +import java.util.Arrays; +import java.util.zip.DataFormatException; + +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.Decoder; +import org.uic.barcode.Encoder; +import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.test.utils.Level2TestDataFactory; +import org.uic.barcode.test.utils.SimpleUICTestTicket; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.utils.SecurityUtils; + +public class DynamicFrameDoubleSignatureBCelipticTest2 { + + public String signatureAlgorithmOID = null; + public String elipticCurve = null; + public String keyPairAlgorithmOID = null; + + public KeyPair keyPairLevel1 = null; + public KeyPair keyPairLevel2 = null; + + public IUicRailTicket testFCBticket = null; + + public Provider provider = null; + + + @Before public void initialize() { + + LoggerFactory.setActivateConsoleLog(true); + + signatureAlgorithmOID = Constants.ECDSA_SHA256; + keyPairAlgorithmOID = Constants.KG_EC_256; + elipticCurve = "secp256k1"; + + testFCBticket = SimpleUICTestTicket.getUicTestTicket(); + + provider = new BouncyCastleProvider(); + Security.addProvider(new BouncyCastleProvider()); + + try { + keyPairLevel1 = generateECKeys(keyPairAlgorithmOID, elipticCurve); + keyPairLevel2 = generateECKeys(keyPairAlgorithmOID, elipticCurve); + } catch (Exception e) { + assert(false); + } + + assert(keyPairLevel1 != null); + + assert(keyPairLevel2 != null); + + } + + + + @Test public void testDynamicHeaderBarcodeDecoding() { + + IUicRailTicket ticket = testFCBticket; + + Encoder enc = null; + + try { + enc = new Encoder(ticket, null, Encoder.UIC_BARCODE_TYPE_DOSIPAS, 1, 13); + } catch (IOException | EncodingFormatException e1) { + assert(false); + } + + assert(enc != null); + + try { + enc.setLevel1Algs(signatureAlgorithmOID, keyPairAlgorithmOID); + enc.setLevel2Algs(signatureAlgorithmOID, keyPairAlgorithmOID,keyPairLevel2.getPublic()); + enc.signLevel1("1080", keyPairLevel1.getPrivate(), signatureAlgorithmOID, "1"); + } catch (Exception e) { + assert(false); + } + + assert(enc != null); + + + IData level2Data = Level2TestDataFactory.getLevel2SimpleTestData(); + try { + enc.setLevel2Data(level2Data); + enc.signLevel2(keyPairLevel2.getPrivate()); + } catch (Exception e) { + assert(false); + } + + + byte[] encoded = null; + try { + encoded = enc.encode(); + } catch (Exception e) { + assert(false); + } + + assert(encoded != null); + + Decoder dec = null; + try { + dec = new Decoder(encoded); + } catch (IOException e) { + assert(false); + } catch (EncodingFormatException e) { + assert(false); + } catch (DataFormatException e) { + assert(false); + } + assert(dec != null); + + int signatureCheck = 0; + try { + signatureCheck = dec.validateLevel1(keyPairLevel1.getPublic(), null); + } catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException | IllegalArgumentException + | UnsupportedOperationException | IOException | EncodingFormatException e) { + assert(false); + } + assert(signatureCheck == Constants.LEVEL1_VALIDATION_OK); + + signatureCheck = 0; + try { + signatureCheck = dec.validateLevel2(); + } catch (Exception e) { + assert(false); + } + assert(signatureCheck == Constants.LEVEL2_VALIDATION_OK); + + IData level2DataDec = dec.getLevel2Data(); + + assert(level2Data.getFormat().equals(level2DataDec.getFormat())); + assert(Arrays.equals(level2Data.getData(),level2DataDec.getData())); + + SimpleUICTestTicket.compare(ticket, dec.getUicTicket()); + + } + + + public KeyPair generateECKeys(String keyAlgorithmOid, String curve) throws Exception{ + + //ECNamedCurveGenParameterSpec namedParamSpec = new ECNamedCurveGenParameterSpec(elipticCurve); + + ECGenParameterSpec namedParamSpec = new ECGenParameterSpec(elipticCurve); + KeyPairGenerator ecKPGen = KeyPairGenerator.getInstance("ECDSA", "BC"); + ecKPGen.initialize(namedParamSpec, new SecureRandom()); + KeyPair keyPair = ecKPGen.generateKeyPair(); + KeyPair kp = new KeyPair(SecurityUtils.convert(keyPair.getPublic(), provider),SecurityUtils.convert(keyPair.getPrivate(), provider)); + return kp; + } + + +} diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureCurve2Test.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureCurve2Test.java new file mode 100644 index 0000000..f118026 --- /dev/null +++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureCurve2Test.java @@ -0,0 +1,167 @@ +package org.uic.barcode.test; + +import java.io.IOException; +import java.security.InvalidKeyException; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.Provider; +import java.security.SecureRandom; +import java.security.Security; +import java.security.SignatureException; +import java.security.spec.ECGenParameterSpec; +import java.util.Arrays; +import java.util.zip.DataFormatException; + +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.Decoder; +import org.uic.barcode.Encoder; +import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.dynamicFrame.api.IData; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.test.utils.Level2TestDataFactory; +import org.uic.barcode.test.utils.SimpleUICTestTicket; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.utils.SecurityUtils; + +public class DynamicFrameDoubleSignatureCurve2Test { + + public String signatureAlgorithmOID = null; + public String elipticCurve = null; + public String keyPairAlgorithmOID = null; + + public KeyPair keyPairLevel1 = null; + public KeyPair keyPairLevel2 = null; + + public IUicRailTicket testFCBticket = null; + + public Provider provider = null; + + + @Before public void initialize() { + + LoggerFactory.setActivateConsoleLog(true); + + signatureAlgorithmOID = Constants.ECDSA_SHA256; + keyPairAlgorithmOID = Constants.KG_EC_256; + elipticCurve = "secp256r1"; + + testFCBticket = SimpleUICTestTicket.getUicTestTicket(); + + provider = new BouncyCastleProvider(); + Security.addProvider(new BouncyCastleProvider()); + + try { + keyPairLevel1 = generateECKeys(keyPairAlgorithmOID, elipticCurve); + keyPairLevel2 = generateECKeys(keyPairAlgorithmOID, elipticCurve); + } catch (Exception e) { + assert(false); + } + + assert(keyPairLevel1 != null); + + assert(keyPairLevel2 != null); + + } + + + + @Test public void testDynamicHeaderBarcodeDecoding() { + + IUicRailTicket ticket = testFCBticket; + + Encoder enc = null; + + try { + enc = new Encoder(ticket, null, Encoder.UIC_BARCODE_TYPE_DOSIPAS, 1, 13); + } catch (IOException | EncodingFormatException e1) { + assert(false); + } + + assert(enc != null); + + try { + enc.setLevel1Algs(signatureAlgorithmOID, keyPairAlgorithmOID); + enc.setLevel2Algs(signatureAlgorithmOID, keyPairAlgorithmOID,keyPairLevel2.getPublic()); + enc.signLevel1("1080", keyPairLevel1.getPrivate(), signatureAlgorithmOID, "1"); + } catch (Exception e) { + assert(false); + } + + assert(enc != null); + + + IData level2Data = Level2TestDataFactory.getLevel2SimpleTestData(); + try { + enc.setLevel2Data(level2Data); + enc.signLevel2(keyPairLevel2.getPrivate()); + } catch (Exception e) { + assert(false); + } + + + byte[] encoded = null; + try { + encoded = enc.encode(); + } catch (Exception e) { + assert(false); + } + + assert(encoded != null); + + Decoder dec = null; + try { + dec = new Decoder(encoded); + } catch (IOException e) { + assert(false); + } catch (EncodingFormatException e) { + assert(false); + } catch (DataFormatException e) { + assert(false); + } + assert(dec != null); + + int signatureCheck = 0; + try { + signatureCheck = dec.validateLevel1(keyPairLevel1.getPublic(), null); + } catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException | IllegalArgumentException + | UnsupportedOperationException | IOException | EncodingFormatException e) { + assert(false); + } + assert(signatureCheck == Constants.LEVEL1_VALIDATION_OK); + + signatureCheck = 0; + try { + signatureCheck = dec.validateLevel2(); + } catch (Exception e) { + assert(false); + } + assert(signatureCheck == Constants.LEVEL2_VALIDATION_OK); + + IData level2DataDec = dec.getLevel2Data(); + + assert(level2Data.getFormat().equals(level2DataDec.getFormat())); + assert(Arrays.equals(level2Data.getData(),level2DataDec.getData())); + + SimpleUICTestTicket.compare(ticket, dec.getUicTicket()); + + } + + + public KeyPair generateECKeys(String keyAlgorithmOid, String curve) throws Exception{ + + //ECNamedCurveGenParameterSpec namedParamSpec = new ECNamedCurveGenParameterSpec(elipticCurve); + + ECGenParameterSpec namedParamSpec = new ECGenParameterSpec(elipticCurve); + KeyPairGenerator ecKPGen = KeyPairGenerator.getInstance("EC", "BC"); + ecKPGen.initialize(namedParamSpec, new SecureRandom()); + KeyPair keyPair = ecKPGen.generateKeyPair(); + KeyPair kp = new KeyPair(SecurityUtils.convert(keyPair.getPublic(), provider),SecurityUtils.convert(keyPair.getPrivate(), provider)); + return kp; + } + + +} diff --git a/src/test/java/org/uic/barcode/test/SecurityUtilsTest.java b/src/test/java/org/uic/barcode/test/SecurityUtilsTest.java new file mode 100644 index 0000000..e500523 --- /dev/null +++ b/src/test/java/org/uic/barcode/test/SecurityUtilsTest.java @@ -0,0 +1,222 @@ +package org.uic.barcode.test; + +import java.security.InvalidKeyException; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.PrivateKey; +import java.security.Provider; +import java.security.SecureRandom; +import java.security.Security; +import java.security.Signature; +import java.security.SignatureException; +import java.security.spec.ECGenParameterSpec; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.dynamicFrame.Constants; +import org.uic.barcode.utils.AlgorithmNameResolver; +import org.uic.barcode.utils.SecurityUtils; + +public class SecurityUtilsTest { + + + + public KeyPair keyPairCk = null; + public KeyPair keyPairCr = null; + public KeyPair keyPairDsa = null; + public KeyPair keyPairECDSACk = null; + public KeyPair keyPairECDSACr = null; + + + public Provider provider = null; + + + @Before public void initialize() { + + provider = new BouncyCastleProvider(); + Security.addProvider(new BouncyCastleProvider()); + + try { + keyPairCk = generateECKeys(Constants.KG_EC_256, "secp256k1"); + keyPairCr = generateECKeys(Constants.KG_EC_256, "secp256r1"); + keyPairECDSACk = generateECDSAKeys(Constants.KG_EC_256, "secp256k1"); + keyPairECDSACr = generateECDSAKeys(Constants.KG_EC_256, "secp256r1"); + keyPairDsa = generateDsaKeys(); + } catch (Exception e) { + assert(false); + } + + assert(keyPairCk != null); + + assert(keyPairCr != null); + + assert(keyPairDsa != null); + + } + + + + + + + @Test public void testFindPublicKeyProvider() { + + + Provider p = null; + boolean canSign = false; + + p = SecurityUtils.findPublicKeyProvider(Constants.KG_EC_256,keyPairCk.getPublic().getEncoded()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairCk.getPrivate()); + assert(canSign == true); + + p = SecurityUtils.findPublicKeyProvider(Constants.KG_EC_256,keyPairCr.getPublic().getEncoded()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairCr.getPrivate()); + assert(canSign == true); + + p = SecurityUtils.findPublicKeyProvider(Constants.KG_EC_256,keyPairECDSACk.getPublic().getEncoded()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairECDSACk.getPrivate()); + assert(canSign == true); + + p = SecurityUtils.findPublicKeyProvider(Constants.KG_EC_256,keyPairECDSACr.getPublic().getEncoded()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairECDSACr.getPrivate()); + assert(canSign == true); + + p = SecurityUtils.findPublicKeyProvider("1.2.840.10040",keyPairDsa.getPublic().getEncoded()); + assert (p != null); + canSign = testSignature(p,Constants.DSA_SHA256,keyPairDsa.getPrivate()); + assert(canSign == true); + + } + + + + + + + @Test public void testFindSignatureAlgorithmProvider() { + + Provider p = null; + boolean canSign = false; + + p = SecurityUtils.findPrivateKeyProvider(keyPairCk.getPrivate()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairCk.getPrivate()); + assert(canSign == true); + + + p = SecurityUtils.findPrivateKeyProvider(keyPairCr.getPrivate()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairCr.getPrivate()); + assert(canSign == true); + + p = SecurityUtils.findPrivateKeyProvider(keyPairECDSACk.getPrivate()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairECDSACk.getPrivate()); + assert(canSign == true); + + + p = SecurityUtils.findPrivateKeyProvider(keyPairECDSACr.getPrivate()); + assert (p != null); + canSign = testSignature(p,Constants.ECDSA_SHA256,keyPairECDSACr.getPrivate()); + assert(canSign == true); + + p = SecurityUtils.findPrivateKeyProvider(keyPairDsa.getPrivate()); + assert (p != null); + canSign = testSignature(p,Constants.DSA_SHA256,keyPairDsa.getPrivate()); + assert(canSign == true); + + + } + + + public KeyPair generateECKeys(String keyAlgorithmOid, String curve) throws Exception{ + + //ECNamedCurveGenParameterSpec namedParamSpec = new ECNamedCurveGenParameterSpec(elipticCurve); + + ECGenParameterSpec namedParamSpec = new ECGenParameterSpec(curve); + KeyPairGenerator ecKPGen = KeyPairGenerator.getInstance("EC", "BC"); + ecKPGen.initialize(namedParamSpec, new SecureRandom()); + KeyPair keyPair = ecKPGen.generateKeyPair(); + KeyPair kp = new KeyPair(SecurityUtils.convert(keyPair.getPublic(), provider),SecurityUtils.convert(keyPair.getPrivate(), provider)); + return kp; + } + + public KeyPair generateECDSAKeys(String keyAlgorithmOid, String curve) throws Exception{ + + //ECNamedCurveGenParameterSpec namedParamSpec = new ECNamedCurveGenParameterSpec(elipticCurve); + + ECGenParameterSpec namedParamSpec = new ECGenParameterSpec(curve); + KeyPairGenerator ecKPGen = KeyPairGenerator.getInstance("ECDSA", "BC"); + ecKPGen.initialize(namedParamSpec, new SecureRandom()); + KeyPair keyPair = ecKPGen.generateKeyPair(); + KeyPair kp = new KeyPair(SecurityUtils.convert(keyPair.getPublic(), provider),SecurityUtils.convert(keyPair.getPrivate(), provider)); + return kp; + } + + private KeyPair generateDsaKeys() { + + KeyPairGenerator g = null; + try { + g = KeyPairGenerator.getInstance("DSA", "BC"); + } catch (NoSuchAlgorithmException e) { + assert(false); + } catch (NoSuchProviderException e) { + assert(false); + } + g.initialize(1024, new SecureRandom()); + + KeyPair keyPair = g.generateKeyPair(); + KeyPair kp = new KeyPair(SecurityUtils.convert(keyPair.getPublic(), provider),SecurityUtils.convert(keyPair.getPrivate(), provider)); + return kp; + + } + + private boolean testSignature(Provider provider, String signatureAlgorithmOid, PrivateKey privateKey) { + + String sigAlgName = null; + try { + sigAlgName = AlgorithmNameResolver.getSignatureAlgorithmName(signatureAlgorithmOid,provider); + } catch (Exception e) { + assert(false); + } + assert(sigAlgName != null); + + + Signature sig = null; + try { + sig = Signature.getInstance(sigAlgName,provider); + } catch (Exception e) { + assert (false); + } + + try { + sig.initSign(privateKey); + } catch (InvalidKeyException e) { + assert(false); + } + try { + sig.update("ABCDEFGHI".getBytes()); + } catch (SignatureException e) { + assert(false); + } + byte[] signature = null; + try { + signature = sig.sign(); + } catch (SignatureException e) { + assert(false); + } + + assert(signature != null); + assert(signature.length > 5); + + return true; + } + + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java new file mode 100644 index 0000000..840c4c7 --- /dev/null +++ b/src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java @@ -0,0 +1,180 @@ +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.spec.IDelayConfirmation; +import org.uic.barcode.ticket.api.spec.IDocumentData; +import org.uic.barcode.ticket.api.spec.ILinkMode; +import org.uic.barcode.ticket.api.spec.ITicketLink; +import org.uic.barcode.ticket.api.spec.ITicketType; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.test.testtickets.DelayTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class VoucherTestV1. + * + * + * + */ +public class DelayConfirmationTestV3 { + + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + /** The API ticket low level encoded for case 1. */ + IUicRailTicket iTicketDecodedFromAsn1Case1 = null; + + + /** The ticket decoded 1. */ + IUicRailTicket iTicketDecodedCase1 = null; + + byte[] encodedInTimeZone1 = null; + + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testDelayConfirmation() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + + defaulttimeZone = TimeZone.getDefault(); + + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + IUicRailTicket ticketDecoded = null; + try { + ticketDecoded = decoder.decodeFromAsn(DelayTestTicketV3.getEncodingBytes()); + } catch (IOException e) { + assert(false); + } + + IDocumentData document = ticketDecoded.getDocumentData().iterator().next(); + assert(document != null); + assert(document instanceof IDelayConfirmation); + + IDelayConfirmation del = (IDelayConfirmation) document; + assert(del.getDelay() == 31); + + /* + * + referenceIA5 "ABDJ12345", + trainNum 100, + departureYear 2022, + departureDay 12, + departureTime 1000, + stationCodeTable stationUIC, + stationNum 8000001, + delay 31, + trainCancelled FALSE, + confirmationType travelerDelayConfirmation, + affectedTickets { + { + referenceNum 801234567890, + productOwnerNum 1080, + ticketType openTicket, + linkMode issuedTogether + } + }, + infoText "delay confirmation" + */ + + assert(del.getLinkedTickets().size() == 1); + assert(del.getDelay() == 31L); + assert(del.isTrainCancelled() == false); + assert(del.getInfoText().equals("delay confirmation")); + assert(del.getReference().equals("ABDJ12345")); + assert(del.getTrain().equals("100")); + + + ITicketLink tl = del.getLinkedTickets().iterator().next(); + assert(tl.getReference().equals("801234567890")); + assert(tl.getProductOwner().equals("1080")); + assert(tl.getTicketType().equals(ITicketType.openTicket)); + assert(tl.getLinkMode().equals(ILinkMode.issuedTogether)); + + TimeZone current = TimeZone.getDefault(); + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + String pd = dateFormat.format(del.getArrivalDate()); + assert(pd.equals("2022.01.12-16:40")); + TimeZone.setDefault(current); + + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + byte[] encoded = null; + try { + encoded = encoder.encode(ticketDecoded); + } catch (EncodingFormatException e) { + assert(false); + } + + + IUicRailTicket ticketDecoded2 = null; + try { + ticketDecoded2 = decoder.decodeFromAsn(encoded); + } catch (IOException e) { + assert(false); + } + + assert (ticketDecoded2 != null); + + String hex1 = UperEncoder.hexStringFromBytes(encoded); + String hex2 = DelayTestTicketV3.getEncodingHex(); + assert(hex1.equals(hex2)); + + + + + TimeZone.setDefault(defaulttimeZone); + } + + + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/testtickets/DelayTestTicketV3.java b/src/test/java/org/uic/barcode/ticket/api/test/testtickets/DelayTestTicketV3.java index a74ad18..5285f03 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/testtickets/DelayTestTicketV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/testtickets/DelayTestTicketV3.java @@ -1,6 +1,7 @@ package org.uic.barcode.ticket.api.test.testtickets; import org.uic.barcode.asn1.datatypes.Asn1BigInteger; +import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.ticket.api.asn.omv3.CardReferenceType; import org.uic.barcode.ticket.api.asn.omv3.ControlData; import org.uic.barcode.ticket.api.asn.omv3.CustomerStatusType; @@ -121,6 +122,15 @@ value UicRailTicketData ::= { } + public static byte[] getEncodingBytes() { + + String hex = getEncodingHex(); + + return UperEncoder.bytesFromHexString(hex); + + + } + private static void populateTicket(UicRailTicketData ticket) { -- cgit v1.2.3 From c830c865409321401504ac1ca296ced194811a16 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Tue, 12 Apr 2022 14:12:55 +0200 Subject: test on car carriage cleanup --- .../uic/barcode/dynamicFrame/v2/DynamicFrame.java | 52 ------- .../barcode/dynamicFrame/v2/Level2DataType.java | 44 ------ .../ticket/api/asn/omv3/SequenceOfPlaceNum.java | 1 - .../api/asn/omv3/SequenceOfServiceBrands.java | 1 - .../api/asn/omv3/SequenceOfTransportTypes.java | 1 - .../ticket/api/asn/omv3/SequenceOfTravelerId.java | 1 - .../ticket/api/utils/Api2OpenAsnEncoder.java | 16 +- .../ticket/api/utils/Api2OpenAsnEncoderV2.java | 16 +- .../ticket/api/utils/Api2OpenAsnEncoderV3.java | 17 ++- .../ticket/api/utils/OpenAsn2ApiDecoder.java | 2 +- .../ticket/api/utils/OpenAsn2ApiDecoderV2.java | 2 +- .../ticket/api/utils/OpenAsn2ApiDecoderV3.java | 2 +- .../barcode/ticket/api/test/CarCarriageTestV3.java | 168 +++++++++++++++++++++ .../CarCarriageReservationTestTicketV3.java | 5 + 14 files changed, 201 insertions(+), 127 deletions(-) create mode 100644 src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java (limited to 'src') diff --git a/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java b/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java index 30043c0..cb5c37a 100644 --- a/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java +++ b/src/main/java/org/uic/barcode/dynamicFrame/v2/DynamicFrame.java @@ -1,8 +1,5 @@ package org.uic.barcode.dynamicFrame.v2; -import java.security.PrivateKey; -import java.security.Provider; -import java.security.Signature; import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.CharacterRestriction; import org.uic.barcode.asn1.datatypes.FieldOrder; @@ -14,7 +11,6 @@ import org.uic.barcode.dynamicContent.api.DynamicContentCoder; import org.uic.barcode.dynamicContent.api.IUicDynamicContent; import org.uic.barcode.dynamicContent.fdc1.UicDynamicContentDataFDC1; import org.uic.barcode.ticket.EncodingFormatException; -import org.uic.barcode.utils.AlgorithmNameResolver; /** @@ -122,53 +118,5 @@ public class DynamicFrame extends Object{ return UperEncoder.decode(bytes, DynamicFrame.class); } - - - /** - * Adds the dynamic content and encodes it. (API level) - * - * @param content the dynamic content - * @throws EncodingFormatException the encoding format exception - */ - public void addDynamicContent(IUicDynamicContent content) throws EncodingFormatException { - - - this.getLevel2SignedData().setLevel2Data(new DataType()); - - this.getLevel2SignedData().getLevel2Data().setFormat(DynamicContentCoder.dynamicContentDataFDC1); - - this.getLevel2SignedData().getLevel2Data().setByteData(DynamicContentCoder.encode(content, DynamicContentCoder.dynamicContentDataFDC1)); - - } - - /** - * Adds the level 2 dynamic data. (ASN level) - * - * @param dynamicData the dynamic data - */ - public void addLevel2DynamicData(UicDynamicContentDataFDC1 dynamicData) { - DataType dt = new DataType(); - dt.setByteData(dynamicData.getDataType().getByteData()); - dt.setFormat(dynamicData.getDataType().getFormat()); - level2SignedData.setLevel2Data(dt); - } - - /** - * Gets the dynamic content. - * - * @return the dynamic content - */ - public IUicDynamicContent getDynamicContent() { - - if (this.getLevel2SignedData() == null || - this.getLevel2SignedData().getLevel2Data() == null){ - return null; - } - - return DynamicContentCoder.decode(this.getLevel2SignedData().getLevel2Data().getByteData()); - - } - - } diff --git a/src/main/java/org/uic/barcode/dynamicFrame/v2/Level2DataType.java b/src/main/java/org/uic/barcode/dynamicFrame/v2/Level2DataType.java index cd0800e..262fa2f 100644 --- a/src/main/java/org/uic/barcode/dynamicFrame/v2/Level2DataType.java +++ b/src/main/java/org/uic/barcode/dynamicFrame/v2/Level2DataType.java @@ -1,15 +1,10 @@ package org.uic.barcode.dynamicFrame.v2; -import java.security.PrivateKey; -import java.security.Provider; -import java.security.Signature; - import org.uic.barcode.asn1.datatypes.Asn1Optional; import org.uic.barcode.asn1.datatypes.FieldOrder; import org.uic.barcode.asn1.datatypes.Sequence; import org.uic.barcode.asn1.datatypesimpl.OctetString; import org.uic.barcode.asn1.uper.UperEncoder; -import org.uic.barcode.utils.AlgorithmNameResolver; /** * The Class DataType. @@ -76,46 +71,7 @@ public class Level2DataType { return UperEncoder.encode(this); } - /** - * Sign the contained data block. - * - * Note: an appropriate security provider (e.g. BC) must be registered before - * - * @param key the key - * @return - * @return the byte[] - * @throws Exception - */ - public void signLevel1(PrivateKey key) throws Exception { - //find the algorithm name for the signature OID - String algo = AlgorithmNameResolver.getSignatureAlgorithmName(getLevel1Data().level1SigningAlg); - Signature sig = Signature.getInstance(algo); - sig.initSign(key); - byte[] data = level1Data.encode(); - sig.update(data); - this.level1Signature = new OctetString(sig.sign()); - } - /** - * Sign the contained data block. - * - * Note: an appropriate security provider (e.g. BC) must be registered before - * - * @param key the key - * @param security provider - security provider that must be sued to create the signature - * @return - * @return the byte[] - * @throws Exception - */ - public void signLevel1(PrivateKey key, Provider prov) throws Exception { - //find the algorithm name for the signature OID - String algo = AlgorithmNameResolver.getSignatureAlgorithmName(getLevel1Data().level1SigningAlg); - Signature sig = Signature.getInstance(algo, prov); - sig.initSign(key); - byte[] data = level1Data.encode(); - sig.update(data); - this.level1Signature = new OctetString(sig.sign()); - } } diff --git a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfPlaceNum.java b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfPlaceNum.java index 3780dc3..1a6dbfc 100644 --- a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfPlaceNum.java +++ b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfPlaceNum.java @@ -20,7 +20,6 @@ public class SequenceOfPlaceNum extends Asn1SequenceOf { } } - @Deprecated public static SequenceOfPlaceNum getSequence(List numList) { if (numList == null || numList.isEmpty()) return null; return new SequenceOfPlaceNum(numList); diff --git a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfServiceBrands.java b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfServiceBrands.java index 388392b..3048235 100644 --- a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfServiceBrands.java +++ b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfServiceBrands.java @@ -19,7 +19,6 @@ public class SequenceOfServiceBrands extends Asn1SequenceOf { } } - @Deprecated public static SequenceOfServiceBrands getSequence(List numList) { if (numList == null || numList.isEmpty()) return null; return new SequenceOfServiceBrands(numList); diff --git a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTransportTypes.java b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTransportTypes.java index 934b5c9..edec045 100644 --- a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTransportTypes.java +++ b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTransportTypes.java @@ -19,7 +19,6 @@ public class SequenceOfTransportTypes extends Asn1SequenceOf { } } - @Deprecated public static SequenceOfTransportTypes getSequence(List numList) { if (numList == null || numList.isEmpty()) return null; return new SequenceOfTransportTypes(numList); diff --git a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTravelerId.java b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTravelerId.java index b04fcfa..6808104 100644 --- a/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTravelerId.java +++ b/src/main/java/org/uic/barcode/ticket/api/asn/omv3/SequenceOfTravelerId.java @@ -18,7 +18,6 @@ public class SequenceOfTravelerId extends Asn1SequenceOf { } } - @Deprecated public static SequenceOfTravelerId getSequence(List numList) { if (numList == null || numList.isEmpty()) return null; return new SequenceOfTravelerId(numList); diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java index f4b9569..633f2d7 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java @@ -359,6 +359,7 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setCarrierNum(SequenceOfCarrierNum.getSequence(UicEncoderUtils.getNumList(document.getCarriers()))); asnData.setCarrierIA5(UicEncoderUtils.getIA5NonNumList(document.getCarriers())); + asnData.setInfoText(document.getInfoText()); asnData.setExtension(encodeExtension(document.getExtension())); asnData.setCompartmentDetails(encodeCompartmentDetails(document.getCompartmentDetails())); @@ -389,21 +390,20 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setToStationNameUTF8(document.getToStationName()); - asnData.setAttachedBicycles(UicEncoderUtils.getRestrictedInt(document.getAttachedBicycles(),1,5)); - asnData.setAttachedBoats(UicEncoderUtils.getRestrictedInt(document.getAttachedBoats(),1,2)); - asnData.setAttachedSurfboards(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),1,5)); + asnData.setAttachedBicycles(UicEncoderUtils.getRestrictedInt(document.getAttachedBicycles(),0,4)); + asnData.setAttachedBoats(UicEncoderUtils.getRestrictedInt(document.getAttachedBoats(),0,2)); + asnData.setAttachedSurfboards(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),0,5)); if (document.getLoadingDeck() != ILoadingDeckType.upper && document.getLoadingDeck() != null){ asnData.setLoadingDeck(LoadingDeckType.valueOf(document.getLoadingDeck().name())); } - asnData.setLoadingListEntry(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),1,200)); - - asnData.setBoatCategory(UicEncoderUtils.getRestrictedInt(document.getBoatCategory(),1,6)); - asnData.setCarCategory(UicEncoderUtils.getRestrictedInt(document.getCarCategory(),1,9)); + asnData.setLoadingListEntry(UicEncoderUtils.getRestrictedInt(document.getLoadingListEntry(),0,999)); + asnData.setBoatCategory(UicEncoderUtils.getRestrictedInt(document.getBoatCategory(),0,6)); + asnData.setCarCategory(UicEncoderUtils.getRestrictedInt(document.getCarCategory(),0,9)); asnData.setCoach(UicEncoderUtils.getIA5(document.getCoach())); - asnData.setRoofRackHeight(UicEncoderUtils.getRestrictedInt(document.getRoofRackHeight(),1,99)); + asnData.setRoofRackHeight(UicEncoderUtils.getRestrictedInt(document.getRoofRackHeight(),0,99)); if (document.getRoofRackType()!= IRoofRackType.norack && document.getRoofRackType() != null ) { asnData.setRoofRackType(RoofRackType.valueOf(document.getRoofRackType().name())); diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV2.java b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV2.java index 6bffddc..00c0ce3 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV2.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV2.java @@ -386,21 +386,21 @@ public class Api2OpenAsnEncoderV2 implements Api2AsnEncoder { asnData.setToStationNameUTF8(document.getToStationName()); - asnData.setAttachedBicycles(UicEncoderUtils.getRestrictedInt(document.getAttachedBicycles(),1,5)); - asnData.setAttachedBoats(UicEncoderUtils.getRestrictedInt(document.getAttachedBoats(),1,2)); - asnData.setAttachedSurfboards(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),1,5)); - + asnData.setAttachedBicycles(UicEncoderUtils.getRestrictedInt(document.getAttachedBicycles(),0,4)); + asnData.setAttachedBoats(UicEncoderUtils.getRestrictedInt(document.getAttachedBoats(),0,2)); + asnData.setAttachedSurfboards(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),0,5)); + if (document.getLoadingDeck() != ILoadingDeckType.upper && document.getLoadingDeck() != null){ asnData.setLoadingDeck(LoadingDeckType.valueOf(document.getLoadingDeck().name())); } - asnData.setLoadingListEntry(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),1,200)); + asnData.setLoadingListEntry(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),0,999)); - asnData.setBoatCategory(UicEncoderUtils.getRestrictedInt(document.getBoatCategory(),1,6)); - asnData.setCarCategory(UicEncoderUtils.getRestrictedInt(document.getCarCategory(),1,9)); + asnData.setBoatCategory(UicEncoderUtils.getRestrictedInt(document.getBoatCategory(),0,6)); + asnData.setCarCategory(UicEncoderUtils.getRestrictedInt(document.getCarCategory(),0,9)); asnData.setCoach(UicEncoderUtils.getIA5(document.getCoach())); - asnData.setRoofRackHeight(UicEncoderUtils.getRestrictedInt(document.getRoofRackHeight(),1,99)); + asnData.setRoofRackHeight(UicEncoderUtils.getRestrictedInt(document.getRoofRackHeight(),0,99)); if (document.getRoofRackType()!= IRoofRackType.norack && document.getRoofRackType() != null) { asnData.setRoofRackType(RoofRackType.valueOf(document.getRoofRackType().name())); diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java index 0ead754..c586da0 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java @@ -360,6 +360,7 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setCarrierNum(SequenceOfCarrierNum.getSequence(UicEncoderUtils.getNumList(document.getCarriers()))); asnData.setCarrierIA5(UicEncoderUtils.getIA5NonNumList(document.getCarriers())); + asnData.setInfoText(document.getInfoText()); asnData.setExtension(encodeExtension(document.getExtension())); asnData.setCompartmentDetails(encodeCompartmentDetails(document.getCompartmentDetails())); @@ -390,21 +391,21 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setToStationNameUTF8(document.getToStationName()); - asnData.setAttachedBicycles(UicEncoderUtils.getRestrictedInt(document.getAttachedBicycles(),1,5)); - asnData.setAttachedBoats(UicEncoderUtils.getRestrictedInt(document.getAttachedBoats(),1,2)); - asnData.setAttachedSurfboards(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),1,5)); + asnData.setAttachedBicycles(UicEncoderUtils.getRestrictedInt(document.getAttachedBicycles(),0,4)); + asnData.setAttachedBoats(UicEncoderUtils.getRestrictedInt(document.getAttachedBoats(),0,2)); + asnData.setAttachedSurfboards(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),0,5)); if (document.getLoadingDeck() != ILoadingDeckType.upper && document.getLoadingDeck() != null){ asnData.setLoadingDeck(LoadingDeckType.valueOf(document.getLoadingDeck().name())); } - asnData.setLoadingListEntry(UicEncoderUtils.getRestrictedInt(document.getAttachedSurfboards(),1,200)); - - asnData.setBoatCategory(UicEncoderUtils.getRestrictedInt(document.getBoatCategory(),1,6)); - asnData.setCarCategory(UicEncoderUtils.getRestrictedInt(document.getCarCategory(),1,9)); + asnData.setLoadingListEntry(UicEncoderUtils.getRestrictedInt(document.getLoadingListEntry(),0,999)); + asnData.setBoatCategory(UicEncoderUtils.getRestrictedInt(document.getBoatCategory(),0,6)); + asnData.setCarCategory(UicEncoderUtils.getRestrictedInt(document.getCarCategory(),0,9)); + asnData.setRoofRackHeight(UicEncoderUtils.getRestrictedInt(document.getRoofRackHeight(),0,99)); + asnData.setCoach(UicEncoderUtils.getIA5(document.getCoach())); - asnData.setRoofRackHeight(UicEncoderUtils.getRestrictedInt(document.getRoofRackHeight(),1,99)); if (document.getRoofRackType()!= IRoofRackType.norack && document.getRoofRackType() != null) { asnData.setRoofRackType(RoofRackType.valueOf(document.getRoofRackType().name())); diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java index f4e041f..f62e1f9 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java @@ -648,7 +648,7 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { } } - return null; + return document; } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java index 57d2366..1f8e25b 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV2.java @@ -650,7 +650,7 @@ public class OpenAsn2ApiDecoderV2 implements Asn2ApiDecoder { } } - return null; + return document; } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java index 9521858..b656d3c 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java @@ -653,7 +653,7 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { } } - return null; + return document; } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java new file mode 100644 index 0000000..b711c84 --- /dev/null +++ b/src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java @@ -0,0 +1,168 @@ +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.spec.ICarCarriageReservation; +import org.uic.barcode.ticket.api.spec.IDocumentData; +import org.uic.barcode.ticket.api.spec.ILoadingDeckType; +import org.uic.barcode.ticket.api.spec.IPriceTypeType; +import org.uic.barcode.ticket.api.spec.IRoofRackType; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.test.testtickets.CarCarriageReservationTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class CarCarriageTestV1. + * + * + * + */ +public class CarCarriageTestV3 { + + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + /** The API ticket low level encoded for case 1. */ + IUicRailTicket iTicketDecodedFromAsn1Case1 = null; + + + /** The ticket decoded 1. */ + IUicRailTicket iTicketDecodedCase1 = null; + + byte[] encodedInTimeZone1 = null; + + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testDelayConfirmation() throws IllegalArgumentException, IllegalAccessException, ParseException { + + //get tickets + + defaulttimeZone = TimeZone.getDefault(); + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + IUicRailTicket ticketDecoded = null; + try { + ticketDecoded = decoder.decodeFromAsn(CarCarriageReservationTestTicketV3.getEncodingBytes()); + } catch (IOException e) { + assert(false); + } + + IDocumentData document = ticketDecoded.getDocumentData().iterator().next(); + assert(document != null); + assert(document instanceof ICarCarriageReservation); + + ICarCarriageReservation c = (ICarCarriageReservation) document; + + assert(c.getAttachedBicycles() == 1L); + assert(c.getAttachedSurfboards() == 2L); + + assert(c.getCarCategory() == 3L); + assert(c.getCoach().equals("21")); + assert(c.getPlace().equals("41")); + assert(c.getFromStation().equals("8100001")); + assert(c.getToStation().equals("800001")); + assert(c.getInfoText().equals("car carriage")); + assert(c.getLoadingDeck().equals(ILoadingDeckType.upper)); + assert(c.getLoadingListEntry() == 421L); + assert(c.getTrain().equals("123")); + assert(c.getNumberPlate().equals("AD-DE-123")); + assert(c.getTrailerPlate().equals("DX-AB-123")); + assert(c.isTextileRoof() == false); + assert(c.getServiceBrand().getServiceBrandAbbreviation().equals("AZ")); + assert(c.getServiceBrand().getServiceBrandDescription().equals("special train")); + assert(c.getServiceBrand().getServiceBrand() == 100L); + assert(c.getRoofRackType().equals(IRoofRackType.bicycleRack)); + assert(c.getTariff() != null); + assert(c.getRoofRackHeight() == 20L); + assert(c.getPriceType().equals(IPriceTypeType.travelPrice)); + assert(c.getReference().equals("810123456789")); + assert(c.getVatDetails() != null); + assert(c.getCarriers().contains("1080")); + assert(c.getCarriers().contains("1181")); + assert(c.getPrice() == 12345L); + + DateFormat dateFormat = new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ); + String pdb = dateFormat.format(c.getBeginLoading()); + assert(pdb.equals("2018.01.11-00:00")); + + String pde = dateFormat.format(c.getEndLoading()); + assert(pde.equals("2018.01.11-08:20")); + + + byte[] encoded = null; + try { + encoded = encoder.encode(ticketDecoded); + } catch (EncodingFormatException e) { + assert(false); + } + + + IUicRailTicket ticketDecoded2 = null; + try { + ticketDecoded2 = decoder.decodeFromAsn(encoded); + } catch (IOException e) { + assert(false); + } + + assert (ticketDecoded2 != null); + + String hex1 = UperEncoder.hexStringFromBytes(encoded); + String hex2 = CarCarriageReservationTestTicketV3.getEncodingHex(); + assert(hex1.equals(hex2)); + + + + + TimeZone.setDefault(defaulttimeZone); + } + + + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/testtickets/CarCarriageReservationTestTicketV3.java b/src/test/java/org/uic/barcode/ticket/api/test/testtickets/CarCarriageReservationTestTicketV3.java index 157c6db..0095239 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/testtickets/CarCarriageReservationTestTicketV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/testtickets/CarCarriageReservationTestTicketV3.java @@ -9,6 +9,7 @@ import org.uic.barcode.ticket.api.asn.omv3.IssuingData; import org.uic.barcode.ticket.api.asn.omv3.LoadingDeckType; import org.uic.barcode.ticket.api.asn.omv3.PriceTypeType; import org.uic.barcode.ticket.api.asn.omv3.RoofRackType; +import org.uic.barcode.asn1.uper.UperEncoder; import org.uic.barcode.ticket.api.asn.omv3.CarCarriageReservationData; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfCardReferenceType; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfCarrierNum; @@ -320,6 +321,10 @@ import org.uic.barcode.ticket.api.asn.omv3.VatDetailType; return cr; } + public static byte[] getEncodingBytes() { + return UperEncoder.bytesFromHexString(getEncodingHex()); + } + } -- cgit v1.2.3 From 85595c7fa17e056f4dd664fb7e01d6940e1c5d8e Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Wed, 13 Apr 2022 16:17:52 +0200 Subject: complete test for v3 fcb elements fixes on high level data mappings --- .../ticket/api/impl/SimpleIncludedOpenTicket.java | 35 +- .../ticket/api/impl/SimpleIssuingDetail.java | 24 + .../ticket/api/spec/IIncludedOpenTicket.java | 5 + .../barcode/ticket/api/spec/IIssuingDetail.java | 7 + .../ticket/api/utils/Api2OpenAsnEncoder.java | 76 +- .../ticket/api/utils/Api2OpenAsnEncoderV3.java | 198 ++-- .../ticket/api/utils/OpenAsn2ApiDecoder.java | 104 +- .../ticket/api/utils/OpenAsn2ApiDecoderV3.java | 145 ++- .../barcode/ticket/api/utils/UicEncoderUtils.java | 45 + .../barcode/ticket/api/test/AllElementsTestV3.java | 1141 ++++++++++++++++++++ 10 files changed, 1663 insertions(+), 117 deletions(-) create mode 100644 src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java (limited to 'src') diff --git a/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIncludedOpenTicket.java b/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIncludedOpenTicket.java index 765b992..3dcf641 100644 --- a/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIncludedOpenTicket.java +++ b/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIncludedOpenTicket.java @@ -81,10 +81,18 @@ public class SimpleIncludedOpenTicket implements IIncludedOpenTicket { /** The info text. */ - protected String infoText; + protected String infoText; /** The extension. */ - protected IExtension extension; + protected IExtension extension; + + protected String serviceLevel; + + /** The included service brands. */ + protected CollectionincludedTransportTypes = new LinkedHashSet(); + + /** The excluded service brands. */ + protected CollectionexcludedTransportTypes = new LinkedHashSet(); /* (nicht-Javadoc) * @see org.uic.ticket.api.spec.IIncludedOpenTicket#getDepartureDate() @@ -435,28 +443,35 @@ public class SimpleIncludedOpenTicket implements IIncludedOpenTicket { this.validUntil = date; } + @Override public Collection getExcludedTransportTypes() { - // TODO Auto-generated method stub - return null; + return excludedTransportTypes; } @Override public void addExcludedTransportType(Integer excludedTransportType) { - // TODO Auto-generated method stub - + excludedTransportTypes.add(excludedTransportType); } @Override public Collection getIncludedTransportTypes() { - // TODO Auto-generated method stub - return null; + return includedTransportTypes; } @Override public void addInludedTransportType(Integer includedTransportType) { - // TODO Auto-generated method stub - + includedTransportTypes.add(includedTransportType); + } + + @Override + public String getServiceLevel() { + return serviceLevel; + } + + @Override + public void setServiceLevel(String serviceLevel) { + this.serviceLevel = serviceLevel; } } diff --git a/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIssuingDetail.java b/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIssuingDetail.java index 34a1ef2..dad50c2 100644 --- a/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIssuingDetail.java +++ b/src/main/java/org/uic/barcode/ticket/api/impl/SimpleIssuingDetail.java @@ -51,6 +51,10 @@ public class SimpleIssuingDetail implements IIssuingDetail{ /** The secure paper ticket. */ protected boolean securePaperTicket; + + protected String currency; + + protected Integer currencyFraction; /* (nicht-Javadoc) * @see org.uic.ticket.api.IIssuingDetail#getIssuer() @@ -224,6 +228,26 @@ public class SimpleIssuingDetail implements IIssuingDetail{ public void setSecurePaperTicket(boolean securePaperTicket) { this.securePaperTicket = securePaperTicket; } + + @Override + public String getCurrency() { + return currency; + } + + @Override + public void setCurrency(String currency) { + this.currency = currency; + } + + @Override + public Integer getCurrencyFraction() { + return currencyFraction; + } + + @Override + public void setCurrencyFraction(Integer fraction) { + this.currencyFraction = fraction; + } diff --git a/src/main/java/org/uic/barcode/ticket/api/spec/IIncludedOpenTicket.java b/src/main/java/org/uic/barcode/ticket/api/spec/IIncludedOpenTicket.java index f64d374..24645f1 100644 --- a/src/main/java/org/uic/barcode/ticket/api/spec/IIncludedOpenTicket.java +++ b/src/main/java/org/uic/barcode/ticket/api/spec/IIncludedOpenTicket.java @@ -429,5 +429,10 @@ public interface IIncludedOpenTicket { * @param validUntilDateTime the new validUntil date time */ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ; + + + public String getServiceLevel(); + + public void setServiceLevel(String serviceLevel); } diff --git a/src/main/java/org/uic/barcode/ticket/api/spec/IIssuingDetail.java b/src/main/java/org/uic/barcode/ticket/api/spec/IIssuingDetail.java index ecaf9c7..d09b226 100644 --- a/src/main/java/org/uic/barcode/ticket/api/spec/IIssuingDetail.java +++ b/src/main/java/org/uic/barcode/ticket/api/spec/IIssuingDetail.java @@ -185,5 +185,12 @@ public interface IIssuingDetail { public boolean isSecurePaperTicket(); public void setSecurePaperTicket(boolean securePaperTicket); + + public String getCurrency(); + public void setCurrency(String currency); + + public Integer getCurrencyFraction(); + public void setCurrencyFraction(Integer fraction); + } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java index 633f2d7..835a324 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java @@ -18,6 +18,7 @@ import org.uic.barcode.ticket.api.asn.omv1.CardReferenceType; import org.uic.barcode.ticket.api.asn.omv1.CodeTableType; import org.uic.barcode.ticket.api.asn.omv1.CompartmentDetailsType; import org.uic.barcode.ticket.api.asn.omv1.CompartmentGenderType; +import org.uic.barcode.ticket.api.asn.omv1.CompartmentPositionType; import org.uic.barcode.ticket.api.asn.omv1.ConfirmationTypeType; import org.uic.barcode.ticket.api.asn.omv1.ControlData; import org.uic.barcode.ticket.api.asn.omv1.CountermarkData; @@ -91,11 +92,14 @@ import org.uic.barcode.ticket.api.asn.omv1.VatDetailType; import org.uic.barcode.ticket.api.asn.omv1.ViaStationType; import org.uic.barcode.ticket.api.asn.omv1.VoucherData; import org.uic.barcode.ticket.api.asn.omv1.ZoneType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfValidityPeriodType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfTimeRangeType; import org.uic.barcode.ticket.api.spec.IBerth; import org.uic.barcode.ticket.api.spec.ICarCarriageReservation; import org.uic.barcode.ticket.api.spec.ICardReference; import org.uic.barcode.ticket.api.spec.ICompartmentDetails; import org.uic.barcode.ticket.api.spec.ICompartmentGenderType; +import org.uic.barcode.ticket.api.spec.ICompartmentPositionType; import org.uic.barcode.ticket.api.spec.IControlDetail; import org.uic.barcode.ticket.api.spec.ICounterMark; import org.uic.barcode.ticket.api.spec.ICustomerCard; @@ -486,9 +490,25 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setSpecialAllocation(UicEncoderUtils.getRestrictedInt(compartmentDetails.getSpecialAllocation(), 1,99)); asnData.setSpecialAllocationDescr(compartmentDetails.getSpecialAllocationDescr()); + asnData.setPosition(convert(compartmentDetails.getPosition())); return asnData; } + private CompartmentPositionType convert(ICompartmentPositionType position) { + if (position == null) { + return null; + } else if (position.equals(ICompartmentPositionType.lowerLevel)) { + return CompartmentPositionType.lowerLevel; + } else if (position.equals(ICompartmentPositionType.upperLevel)) { + return CompartmentPositionType.upperLevel; + } else if (position.equals(ICompartmentPositionType.unspecified)) { + return CompartmentPositionType.unspecified; + } + return null; + } + + + /** * Encode berths. * @@ -602,6 +622,10 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setTypeOfSupplement(UicEncoderUtils.getRestrictedInt(document.getTypeOfSupplement(), 1, 9)); asnData.setPlaces(encodePlaces(document.getPlaces())); + + if (document.getAdditionalPlaces() != null) { + asnData.setAdditionalPlaces(encodePlaces(document.getAdditionalPlaces())); + } asnData.setBicyclePlaces(encodePlaces(document.getBicyclePlaces())); @@ -715,6 +739,11 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { if (document.getClassCode() != classCode){ asnData.setClassCode(convertTravelClass(document.getClassCode())); } + + if (document.getServiceLevel() != null && document.getServiceLevel().length() > 0) { + asnData.setServiceLevel(document.getServiceLevel()); + } + if (document.getExternalIssuer() > 0) { asnData.setExternalIssuerId(new Long(document.getExternalIssuer())); } @@ -886,6 +915,11 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { if (document.getClassCode() != ITravelClassType.second){ asnData.setClassCode(convertTravelClass(document.getClassCode())); } + + if (document.getServiceLevel() != null && document.getServiceLevel().length() > 0) { + asnData.setServiceLevel(document.getServiceLevel()); + } + if (document.getExternalIssuer()>0) { asnData.setExtIssuerId(new Long(document.getExternalIssuer())); } @@ -906,10 +940,13 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { if (document.getLuggageRestriction() != null) { asnData.setLuggage(encodeLuggage(document.getLuggageRestriction())); } + + if (document.getReturnDescription() != null) { + asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); + } if (document.isReturnIncluded()) { asnData.setReturnIncluded(true); - asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); } else { asnData.setReturnIncluded(false); } @@ -1013,12 +1050,11 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setClassCode(convertTravelClass(document.getClassCode())); } - + if (document.getReturnDescription()!= null) { + asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); + } if (document.isReturnIncluded()) { asnData.setReturnIncluded(true); - if (document.getReturnDescription()!= null) { - asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); - } } else { asnData.setReturnIncluded(false); } @@ -1089,8 +1125,13 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setRoute(encodeViaStationCollection(document.getRoute())); if (document.getRouteId() > 0){ - asnData.setSeriesId(new Long(document.getRouteId())); + asnData.setRouteId(new Long(document.getRouteId())); + } + + if (document.getSeriesId() > 0) { + asnData.setSeriesId(new Long(document.getSeriesId())); } + return asnData; } @@ -1194,7 +1235,8 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { } else { DeltaCoordinates delta = new DeltaCoordinates(); delta.setLatitude(Asn1BigInteger.toAsn1(asnData.getFirstEdge().getLatitude() - edge.getLatitude())); - delta.setLatitude(Asn1BigInteger.toAsn1(asnData.getFirstEdge().getLongitude() - edge.getLongitude())); + delta.setLongitude(Asn1BigInteger.toAsn1(asnData.getFirstEdge().getLongitude() - edge.getLongitude())); + asnList.add(delta); } } @@ -1475,7 +1517,7 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { details.setSeries(UicEncoderUtils.getRestrictedInt(seriesDataDetails.getSeries(), 1, 99999)); details.setSupplyingCarrier(UicEncoderUtils.getRestrictedInt(seriesDataDetails.getSupplyingCarrier(), 1, 9999)); details.setOfferIdentification(UicEncoderUtils.getRestrictedInt(seriesDataDetails.getOfferIdentification(), 1, 99)); - return null; + return details; } /** @@ -1505,6 +1547,7 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); asnData.setInfoText(document.getInfoText()); + asnData.setExtension(encodeExtension(document.getExtension())); asnData.setValidity(document.getValidFrom(), document.getValidUntil()); @@ -1620,7 +1663,10 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { ValidityPeriodDetailType asnData = new ValidityPeriodDetailType(); - if (validityDetails.getTimeRanges() != null) { + if (validityDetails.getTimeRanges() != null && !validityDetails.getTimeRanges().isEmpty()) { + + asnData.setExcludedTimeRange(new SequenceOfTimeRangeType()); + for (ITimeRange range : validityDetails.getTimeRanges()) { if (range.getFromTime() == range.getUntilTime()){ @@ -1635,8 +1681,11 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { } } - if (validityDetails.getValidityRanges() != null) { - for (IValidityRange range : validityDetails.getValidityRanges()) { + if (validityDetails.getValidityRanges() != null && !validityDetails.getValidityRanges().isEmpty()) { + + asnData.setValidityPeriod(new SequenceOfValidityPeriodType()); + + for (IValidityRange range : validityDetails.getValidityRanges()) { ValidityPeriodType asnRange = new ValidityPeriodType(); @@ -1689,9 +1738,8 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setClassCode(convertTravelClass(document.getClassCode())); - if (!document.isIncludesSupplements()){ - asnData.setIncludesSupplements(false); - } + asnData.setIncludesSupplements(document.isIncludesSupplements()); + asnData.setNumberOfTravelDays(UicEncoderUtils.getRestrictedInt(document.getNumberOfTravelDates(), 1, 8)); asnData.setValidityDates(document.getValidFrom(), document.getValidUntil(), issuingDate); diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java index c586da0..fd9995f 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoderV3.java @@ -11,6 +11,7 @@ import org.uic.barcode.asn1.datatypesimpl.SequenceOfStringIA5; import org.uic.barcode.asn1.datatypesimpl.SequenceOfStringUTF8; import org.uic.barcode.asn1.datatypesimpl.SequenceOfUnrestrictedLong; import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv3.CompartmentPositionType; import org.uic.barcode.ticket.api.asn.omv3.BerthDetailData; import org.uic.barcode.ticket.api.asn.omv3.BerthTypeType; import org.uic.barcode.ticket.api.asn.omv3.BoardingOrArrivalType; @@ -69,9 +70,11 @@ import org.uic.barcode.ticket.api.asn.omv3.SequenceOfRegisteredLuggageType; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfServiceBrands; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfTariffType; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfTicketLinkType; +import org.uic.barcode.ticket.api.asn.omv3.SequenceOfTimeRangeType; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfTransportTypes; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfTravelerId; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfTravelerType; +import org.uic.barcode.ticket.api.asn.omv3.SequenceOfValidityPeriodType; import org.uic.barcode.ticket.api.asn.omv3.SequenceOfViaStationType; import org.uic.barcode.ticket.api.asn.omv3.SeriesDetailType; import org.uic.barcode.ticket.api.asn.omv3.ServiceType; @@ -99,6 +102,7 @@ import org.uic.barcode.ticket.api.spec.ICarCarriageReservation; import org.uic.barcode.ticket.api.spec.ICardReference; import org.uic.barcode.ticket.api.spec.ICompartmentDetails; import org.uic.barcode.ticket.api.spec.ICompartmentGenderType; +import org.uic.barcode.ticket.api.spec.ICompartmentPositionType; import org.uic.barcode.ticket.api.spec.IControlDetail; import org.uic.barcode.ticket.api.spec.ICounterMark; import org.uic.barcode.ticket.api.spec.ICustomerCard; @@ -347,8 +351,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setTrainIA5(UicEncoderUtils.getIA5NonNum(document.getTrain())); asnData.setTrainNum(UicEncoderUtils.getNum(document.getTrain())); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(UicEncoderUtils.getNum(document.getReference())); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -488,9 +495,23 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setSpecialAllocation(UicEncoderUtils.getRestrictedInt(compartmentDetails.getSpecialAllocation(), 1,99)); asnData.setSpecialAllocationDescr(compartmentDetails.getSpecialAllocationDescr()); + asnData.setPosition(convert(compartmentDetails.getPosition())); return asnData; } + private CompartmentPositionType convert(ICompartmentPositionType position) { + if (position == null) { + return null; + } else if (position.equals(ICompartmentPositionType.lowerLevel)) { + return CompartmentPositionType.lowerLevel; + } else if (position.equals(ICompartmentPositionType.upperLevel)) { + return CompartmentPositionType.upperLevel; + } else if (position.equals(ICompartmentPositionType.unspecified)) { + return CompartmentPositionType.unspecified; + } + return null; + } + /** * Encode berths. * @@ -544,8 +565,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { ReservationData asnData = new ReservationData(); asnDocument.getTicket().setReservation(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(UicEncoderUtils.getNum(document.getReference())); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -604,6 +628,10 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setTypeOfSupplement(UicEncoderUtils.getRestrictedInt(document.getTypeOfSupplement(), 1, 9)); asnData.setPlaces(encodePlaces(document.getPlaces())); + + if (document.getAdditionalPlaces() != null) { + asnData.setAdditionalPlaces(encodePlaces(document.getAdditionalPlaces())); + } asnData.setBicyclePlaces(encodePlaces(document.getBicyclePlaces())); @@ -680,11 +708,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { IncludedOpenTicketType asnData = new IncludedOpenTicketType(); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); - asnData.setProductIdNum(UicEncoderUtils.getNum(document.getProductId())); - asnData.setProductIdIA5(UicEncoderUtils.getIA5NonNum(document.getProductId())); + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setInfoText(document.getInfoText()); @@ -721,6 +749,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { if (document.getClassCode() != classCode && document.getClassCode() != null){ asnData.setClassCode(TravelClassType.valueOf(document.getClassCode().name())); } + + if (document.getServiceLevel() != null && document.getServiceLevel().length() > 0) { + asnData.setServiceLevel(document.getServiceLevel()); + } + if (document.getExternalIssuer() > 0) { asnData.setExternalIssuerId(new Long(document.getExternalIssuer())); } @@ -732,6 +765,8 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { if (document.getValidRegionList()!= null && document.getValidRegionList().size() > 0) { asnData.setValidRegion(encodeRegionCollection(document.getValidRegionList(), issuingDate)); } + + return asnData; } @@ -842,11 +877,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnDocument.setTicket(asnTicket); asnTicket.setOpenTicket(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); - asnData.setProductIdNum(UicEncoderUtils.getNum(document.getProductId())); - asnData.setProductIdIA5(UicEncoderUtils.getIA5NonNum(document.getProductId())); + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(UicEncoderUtils.getNum(document.getReference())); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -895,6 +930,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { if (document.getClassCode() != ITravelClassType.second && document.getClassCode() != null){ asnData.setClassCode(TravelClassType.valueOf(document.getClassCode().name())); } + + if (document.getServiceLevel() != null && document.getServiceLevel().length() > 0) { + asnData.setServiceLevel(document.getServiceLevel()); + } + if (document.getExternalIssuer()>0) { asnData.setExtIssuerId(new Long(document.getExternalIssuer())); } @@ -916,9 +956,12 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setLuggage(encodeLuggage(document.getLuggageRestriction())); } + if (document.getReturnDescription() != null) { + asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); + } + if (document.isReturnIncluded()) { asnData.setReturnIncluded(true); - asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); } else { asnData.setReturnIncluded(false); } @@ -952,8 +995,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { CountermarkData asnData = new CountermarkData(); asnDocument.getTicket().setCounterMark(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setTicketReferenceNum(UicEncoderUtils.getNum(document.getTicketReference())); @@ -1023,12 +1069,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setClassCode(TravelClassType.valueOf(document.getClassCode().name())); } - + if (document.getReturnDescription()!= null) { + asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); + } if (document.isReturnIncluded()) { asnData.setReturnIncluded(true); - if (document.getReturnDescription()!= null) { - asnData.setReturnDescription(encodeReturnDescription(document.getReturnDescription(),issuingDate)); - } } else { asnData.setReturnIncluded(false); } @@ -1102,8 +1147,13 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setRoute(encodeViaStationCollection(document.getRoute())); if (document.getRouteId() > 0){ - asnData.setSeriesId(new Long(document.getRouteId())); + asnData.setRouteId(new Long(document.getRouteId())); + } + + if (document.getSeriesId() > 0) { + asnData.setSeriesId(new Long(document.getSeriesId())); } + return asnData; } @@ -1207,7 +1257,8 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { } else { DeltaCoordinates delta = new DeltaCoordinates(); delta.setLatitude(Asn1BigInteger.toAsn1(asnData.getFirstEdge().getLatitude() - edge.getLatitude())); - delta.setLatitude(Asn1BigInteger.toAsn1(asnData.getFirstEdge().getLongitude() - edge.getLongitude())); + delta.setLongitude(Asn1BigInteger.toAsn1(asnData.getFirstEdge().getLongitude() - edge.getLongitude())); + asnList.add(delta); } } @@ -1333,8 +1384,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { ParkingGroundData asnData = new ParkingGroundData(); asnDocument.getTicket().setParkingGround(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(Asn1BigInteger.toAsn1(UicEncoderUtils.getNum(document.getReference()))); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -1449,8 +1503,8 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { TariffType asnTariff = new TariffType(); - asnTariff.setAgeAbove(UicEncoderUtils.getRestrictedInt(tariff.getAgeAbove(),2,120)); - asnTariff.setAgeBelow(UicEncoderUtils.getRestrictedInt(tariff.getAgeBelow(),1,40)); + asnTariff.setAgeAbove(UicEncoderUtils.getRestrictedInt(tariff.getAgeAbove(),2,128)); + asnTariff.setAgeBelow(UicEncoderUtils.getRestrictedInt(tariff.getAgeBelow(),1,64)); asnTariff.setNumberOfPassengers(UicEncoderUtils.getRestrictedIntWithDefault(tariff.getNumberOfPassengers(),1,200,1)); @@ -1485,9 +1539,9 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { private SeriesDetailType encodeSeriesDataDetails( ISeriesDataDetails seriesDataDetails) throws EncodingFormatException { SeriesDetailType details = new SeriesDetailType(); details.setSeries(UicEncoderUtils.getRestrictedInt(seriesDataDetails.getSeries(), 1, 99999)); - details.setSupplyingCarrier(UicEncoderUtils.getRestrictedInt(seriesDataDetails.getSupplyingCarrier(), 1, 9999)); + details.setSupplyingCarrier(UicEncoderUtils.getRestrictedInt(seriesDataDetails.getSupplyingCarrier(), 1, 32000)); details.setOfferIdentification(UicEncoderUtils.getRestrictedInt(seriesDataDetails.getOfferIdentification(), 1, 99)); - return null; + return details; } /** @@ -1506,16 +1560,17 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { VoucherData asnData = new VoucherData(); asnDocument.getTicket().setVoucher(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); - asnData.setProductIdNum(UicEncoderUtils.getNum(document.getProductId())); - asnData.setProductIdIA5(UicEncoderUtils.getIA5NonNum(document.getProductId())); + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(Asn1BigInteger.toAsn1(UicEncoderUtils.getNum(document.getReference()))); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); asnData.setInfoText(document.getInfoText()); + asnData.setExtension(encodeExtension(document.getExtension())); asnData.setValidity(document.getValidFrom(), document.getValidUntil()); @@ -1547,11 +1602,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { PassData asnData = new PassData(); asnDocument.getTicket().setPass(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); - - asnData.setProductIdNum(UicEncoderUtils.getNum(document.getProductId())); - asnData.setProductIdIA5(UicEncoderUtils.getIA5NonNum(document.getProductId())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(Asn1BigInteger.toAsn1(UicEncoderUtils.getNum(document.getReference()))); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -1587,8 +1642,8 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setExcludedServiceBrands(SequenceOfServiceBrands.getSequence(UicEncoderUtils.encodeRestrictedIntegerCollection(document.getExcludedServiceBrands(),1,32000))); asnData.setIncludedServiceBrands(SequenceOfServiceBrands.getSequence(UicEncoderUtils.encodeRestrictedIntegerCollection(document.getIncludedServiceBrands(),1,32000))); - asnData.setNumberOfDaysOfTravel(UicEncoderUtils.getRestrictedInt(document.getNumberOfDaysOfTravel(), 1, 93)); - asnData.setNumberOfPossibleTrips(UicEncoderUtils.getRestrictedInt(document.getNumberOfPossibleTrips(), 1, 30)); + asnData.setNumberOfDaysOfTravel(UicEncoderUtils.getRestrictedInt(document.getNumberOfDaysOfTravel(), 1, 250)); + asnData.setNumberOfPossibleTrips(UicEncoderUtils.getRestrictedInt(document.getNumberOfPossibleTrips(), 1, 250)); asnData.setNumberOfValidityDays(UicEncoderUtils.getRestrictedInt(document.getNumberOfValidityDays(), 1, 370)); asnData.setPassDescription(document.getPassDescription()); if (document.getPassType() > 0 ){ @@ -1667,7 +1722,9 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { ValidityPeriodDetailType asnData = new ValidityPeriodDetailType(); - if (validityDetails.getTimeRanges() != null) { + if (validityDetails.getTimeRanges() != null && !validityDetails.getTimeRanges().isEmpty()) { + asnData.setExcludedTimeRange(new SequenceOfTimeRangeType()); + for (ITimeRange range : validityDetails.getTimeRanges()) { if (range.getFromTime() == range.getUntilTime()){ @@ -1682,7 +1739,10 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { } } - if (validityDetails.getValidityRanges() != null) { + if (validityDetails.getValidityRanges() != null && !validityDetails.getValidityRanges().isEmpty()) { + + asnData.setValidityPeriod(new SequenceOfValidityPeriodType()); + for (IValidityRange range : validityDetails.getValidityRanges()) { ValidityPeriodType asnRange = new ValidityPeriodType(); @@ -1722,11 +1782,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { FIPTicketData asnData = new FIPTicketData(); asnDocument.getTicket().setFipTicket(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); - asnData.setProductIdNum(UicEncoderUtils.getNum(document.getProductId())); - asnData.setProductIdIA5(UicEncoderUtils.getIA5NonNum(document.getProductId())); + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(Asn1BigInteger.toAsn1(UicEncoderUtils.getNum(document.getReference()))); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -1737,9 +1797,9 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { if (document.getClassCode() != null) { asnData.setClassCode(TravelClassType.valueOf(document.getClassCode().name())); } - if (!document.isIncludesSupplements()){ - asnData.setIncludesSupplements(false); - } + + asnData.setIncludesSupplements(document.isIncludesSupplements()); + asnData.setNumberOfTravelDays(UicEncoderUtils.getRestrictedInt(document.getNumberOfTravelDates(), 1, 8)); asnData.setValidityDates(document.getValidFrom(), document.getValidUntil(), issuingDate); @@ -1769,11 +1829,11 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { StationPassageData asnData = new StationPassageData(); asnDocument.getTicket().setStationPassage(asnData); - asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); - asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); - - asnData.setProductIdNum(UicEncoderUtils.getNum(document.getProductId())); - asnData.setProductIdIA5(UicEncoderUtils.getIA5NonNum(document.getProductId())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(Asn1BigInteger.toAsn1(UicEncoderUtils.getNum(document.getReference()))); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -1976,29 +2036,29 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { SequenceOfTicketLinkType asnList = new SequenceOfTicketLinkType(); - for (ITicketLink ticket : linkedTickets){ + for (ITicketLink document : linkedTickets){ - TicketLinkType asnTicket = new TicketLinkType(); + TicketLinkType asnData = new TicketLinkType(); - asnTicket.setIssuerName(ticket.getIssuer()); + asnData.setIssuerName(document.getIssuer()); - asnTicket.setIssuerPNR(ticket.getIssuerPNR()); + asnData.setIssuerPNR(document.getIssuerPNR()); - asnTicket.setProductOwnerNum(UicEncoderUtils.getNum(ticket.getProductOwner())); - asnTicket.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(ticket.getProductOwner())); - - asnTicket.setReferenceNum(UicEncoderUtils.getNum(ticket.getReference())); - asnTicket.setReferenceIA5(UicEncoderUtils.getIA5NonNum(ticket.getReference())); + asnData.setProductOwnerNum(UicEncoderUtils.getRestrictedNum(document.getProductOwner(),1,32000)); + asnData.setProductOwnerIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductOwner(),1,32000)); + + asnData.setReferenceNum(UicEncoderUtils.getNum(document.getReference())); + asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); - if (ticket.getTicketType() != ITicketType.openTicket && ticket.getTicketType() != null){ - asnTicket.setTicketType(TicketType.valueOf(ticket.getTicketType().name())); + if (document.getTicketType() != ITicketType.openTicket && document.getTicketType() != null){ + asnData.setTicketType(TicketType.valueOf(document.getTicketType().name())); } - if (ticket.getLinkMode() != ILinkMode.issuedTogether && ticket.getLinkMode() != null){ - asnTicket.setLinkMode(LinkMode.valueOf(ticket.getLinkMode().name())); + if (document.getLinkMode() != ILinkMode.issuedTogether && document.getLinkMode() != null){ + asnData.setLinkMode(LinkMode.valueOf(document.getLinkMode().name())); } - asnList.add(asnTicket); + asnList.add(asnData); } if (asnList.isEmpty()) return null; @@ -2106,6 +2166,12 @@ public class Api2OpenAsnEncoderV3 implements Api2AsnEncoder { asnData.setPointOfSale(encodeGeoCoordinate(data.getPointOfSale())); } + asnData.setCurrency(data.getCurrency()); + + if (data.getCurrencyFraction() != null) { + asnData.setCurrencyFract(data.getCurrencyFraction().longValue()); + } + return asnData; } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java index f62e1f9..5f5ce4d 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java @@ -5,12 +5,14 @@ package org.uic.barcode.ticket.api.utils; import java.io.IOException; import java.util.Date; +import java.util.Iterator; import java.util.List; import org.uic.barcode.ticket.api.asn.omv1.BerthDetailData; import org.uic.barcode.ticket.api.asn.omv1.CarCarriageReservationData; import org.uic.barcode.ticket.api.asn.omv1.CardReferenceType; import org.uic.barcode.ticket.api.asn.omv1.CompartmentDetailsType; +import org.uic.barcode.ticket.api.asn.omv1.CompartmentPositionType; import org.uic.barcode.ticket.api.asn.omv1.ControlData; import org.uic.barcode.ticket.api.asn.omv1.CountermarkData; import org.uic.barcode.ticket.api.asn.omv1.CustomerCardData; @@ -51,6 +53,7 @@ import org.uic.barcode.ticket.api.asn.omv1.VatDetailType; import org.uic.barcode.ticket.api.asn.omv1.ViaStationType; import org.uic.barcode.ticket.api.asn.omv1.VoucherData; import org.uic.barcode.ticket.api.asn.omv1.ZoneType; +import org.uic.barcode.ticket.api.asn.omv1.ServiceType; import org.uic.barcode.ticket.api.impl.SimpleUicTicketObjectFactory; import org.uic.barcode.ticket.api.spec.IBerth; import org.uic.barcode.ticket.api.spec.IBerthTypeType; @@ -94,6 +97,7 @@ import org.uic.barcode.ticket.api.spec.IRoofRackType; import org.uic.barcode.ticket.api.spec.IRouteSection; import org.uic.barcode.ticket.api.spec.ISeriesDataDetails; import org.uic.barcode.ticket.api.spec.IServiceBrand; +import org.uic.barcode.ticket.api.spec.IServiceType; import org.uic.barcode.ticket.api.spec.IStationCodeTable; import org.uic.barcode.ticket.api.spec.IStationPassage; import org.uic.barcode.ticket.api.spec.ITariff; @@ -436,6 +440,10 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { document.setArrivalUTCoffset(asnDocument.getDepartureUTCOffset()); } + if (asnDocument.getService() != null) { + document.setService(convert(asnDocument.getService())); + } + if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } @@ -455,6 +463,10 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { if (asnDocument.getPlaces()!=null) { document.setPlaces(convertPlaces(asnDocument.getPlaces())); } + + if (asnDocument.getAdditionalPlaces()!=null) { + document.setAdditionalPlaces(convertPlaces(asnDocument.getAdditionalPlaces())); + } if (asnDocument.getBicyclePlaces()!=null) { document.setBicyclePlaces(convertPlaces(asnDocument.getBicyclePlaces())); @@ -517,6 +529,20 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { } + private IServiceType convert(ServiceType service) { + + if (service == null) { + return null; + } else if (service.equals(ServiceType.seat)) { + return IServiceType.seat; + } else if (service.equals(ServiceType.couchette)) { + return IServiceType.couchette; + } else if (service.equals(ServiceType.berth)) { + return IServiceType.berth; + } + + return null; + } @@ -701,11 +727,24 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { details.setCompartmentTypeDescr(asnDetails.getCompartmentTypeDescr()); details.setSpecialAllocationDescr(asnDetails.getSpecialAllocationDescr()); - details.setPosition(ICompartmentPositionType.valueOf(asnDetails.getPosition().name())); + details.setPosition(convert(asnDetails.getPosition())); return details; } + private ICompartmentPositionType convert(CompartmentPositionType position) { + if (position == null) { + return null; + } else if (position.equals(CompartmentPositionType.lowerLevel)) { + return ICompartmentPositionType.lowerLevel; + } else if (position.equals(CompartmentPositionType.upperLevel)) { + return ICompartmentPositionType.upperLevel; + } else if (position.equals(CompartmentPositionType.unspecified)) { + return ICompartmentPositionType.unspecified; + } + return null; + } + /** * Convert places. * @@ -796,7 +835,10 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setTicketReference(UicEncoderUtils.mapToString(asnDocument.getTicketReferenceNum(),asnDocument.getTicketReferenceIA5())); - + + if (asnDocument.getStationCodeTable()!=null){ + document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); + } document.setFromStation(UicEncoderUtils.mapToString(asnDocument.getFromStationNum(),asnDocument.getFromStationIA5())); document.setToStation(UicEncoderUtils.mapToString(asnDocument.getToStationNum(),asnDocument.getToStationIA5())); @@ -811,7 +853,6 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { } document.setReturnDescription(convertReturnDescription(asnDocument.getReturnDescription(), issuingDate)); - if(asnDocument.getReturnIncluded()!=null){ document.setReturnIncluded(asnDocument.getReturnIncluded()); @@ -819,7 +860,29 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { document.setReturnIncluded(false); } - + + if (asnDocument.getCarriersNum()!=null && !asnDocument.getCarriersNum().isEmpty()){ + for(Long carrier :asnDocument.getCarriersNum()){ + document.addIncludedCarrier(carrier.toString()); + } + } + if (asnDocument.getCarriersIA5()!=null && !asnDocument.getCarriersIA5().isEmpty()){ + for(String carrier :asnDocument.getCarriersIA5()){ + document.addIncludedCarrier(carrier); + } + } + + if (asnDocument.getIncludedServiceBrands()!=null && !asnDocument.getIncludedServiceBrands().isEmpty()){ + for(Long number :asnDocument.getIncludedServiceBrands()){ + document.addIncludedServiceBrand(number.intValue()); + } + } + + if (asnDocument.getExcludedServiceBrands()!=null && !asnDocument.getExcludedServiceBrands().isEmpty()){ + for(Long number :asnDocument.getExcludedServiceBrands()){ + document.addExcludedServiceBrand(number.intValue()); + } + } document.setGroupName(asnDocument.getGroupName()); @@ -932,6 +995,10 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } + if (asnDocument.getServiceLevel() != null && asnDocument.getServiceLevel().length() > 0) { + document.setServiceLevel(asnDocument.getServiceLevel()); + } + document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); @@ -1058,6 +1125,10 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { document.setClassCode(classCode); } + if (asnDocument.getServiceLevel() != null && asnDocument.getServiceLevel().length() > 0) { + document.setServiceLevel(asnDocument.getServiceLevel()); + } + document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); @@ -1173,9 +1244,9 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { document.setProductName(asnDocument.getProductName()); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); - if (asnDocument.getStationNameUTF8()!= null && asnDocument.getStationNameUTF8().isEmpty() ) { + if (asnDocument.getStationNameUTF8()!= null && !asnDocument.getStationNameUTF8().isEmpty() ) { for (String name : asnDocument.getStationNameUTF8()) { - document.addStation(name); + document.addStationName(name); } } @@ -1338,9 +1409,13 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { } if (asnDocument.getAlternativeRoutes()!= null && !asnDocument.getAlternativeRoutes().isEmpty()) { for ( ViaStationType routeVia: asnDocument.getAlternativeRoutes()) { - via.addRouteStation(convertViaStation(routeVia)); + via.getAlternativeRoutes().add(convertViaStation(routeVia)); } } + + if (asnDocument.getSeriesId() != null) { + via.setSeriesId(asnDocument.getSeriesId().intValue()); + } return via; @@ -1395,6 +1470,13 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { zone.setNUTScode(asnDocument.getNutsCode()); + if (asnDocument.getZoneId() != null && !asnDocument.getZoneId().isEmpty()) { + Iterator it = asnDocument.getZoneId().iterator(); + while (it.hasNext()) { + zone.addZoneId(it.next().intValue()); + } + } + return zone; } @@ -1413,6 +1495,8 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { IGeoCoordinate firstEdge = convertGeoCoordinate(asnPolygone.getFirstEdge()); if (firstEdge == null) return null; + + polygone.addEdge(firstEdge); if (asnPolygone.getEdges()!=null && !asnPolygone.getEdges().isEmpty()) { for (DeltaCoordinates asnEdge :asnPolygone.getEdges()){ @@ -1645,6 +1729,9 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { if (asnDocument.getNumberOfDaysOfTravel() != null) { document.setNumberOfDaysOfTravel(asnDocument.getNumberOfDaysOfTravel().intValue()); } + if (asnDocument.getNumberOfValidityDays() != null) { + document.setNumberOfValidityDays(asnDocument.getNumberOfValidityDays().intValue()); + } if (asnDocument.getNumberOfPossibleTrips() != null) { document.setNumberOfPossibleTrips(asnDocument.getNumberOfPossibleTrips().intValue()); } @@ -1856,6 +1943,9 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { card.addIncludedService(new Integer(service.intValue())); } } + + card.setExtension(convertExtension(asnDocument.getExtension())); + return card; } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java index b656d3c..a9cc0d3 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoderV3.java @@ -5,8 +5,10 @@ package org.uic.barcode.ticket.api.utils; import java.io.IOException; import java.util.Date; +import java.util.Iterator; import java.util.List; +import org.uic.barcode.ticket.api.asn.omv3.CompartmentPositionType; import org.uic.barcode.ticket.api.asn.omv3.BerthDetailData; import org.uic.barcode.ticket.api.asn.omv3.CarCarriageReservationData; import org.uic.barcode.ticket.api.asn.omv3.CardReferenceType; @@ -36,6 +38,7 @@ import org.uic.barcode.ticket.api.asn.omv3.ReservationData; import org.uic.barcode.ticket.api.asn.omv3.ReturnRouteDescriptionType; import org.uic.barcode.ticket.api.asn.omv3.RouteSectionType; import org.uic.barcode.ticket.api.asn.omv3.SeriesDetailType; +import org.uic.barcode.ticket.api.asn.omv3.ServiceType; import org.uic.barcode.ticket.api.asn.omv3.StationPassageData; import org.uic.barcode.ticket.api.asn.omv3.TariffType; import org.uic.barcode.ticket.api.asn.omv3.TicketLinkType; @@ -96,6 +99,7 @@ import org.uic.barcode.ticket.api.spec.IRoofRackType; import org.uic.barcode.ticket.api.spec.IRouteSection; import org.uic.barcode.ticket.api.spec.ISeriesDataDetails; import org.uic.barcode.ticket.api.spec.IServiceBrand; +import org.uic.barcode.ticket.api.spec.IServiceType; import org.uic.barcode.ticket.api.spec.IStationCodeTable; import org.uic.barcode.ticket.api.spec.IStationPassage; import org.uic.barcode.ticket.api.spec.ITariff; @@ -441,6 +445,10 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { document.setArrivalUTCoffset(asnDocument.getDepartureUTCOffset()); } + if (asnDocument.getService() != null) { + document.setService(convert(asnDocument.getService())); + } + if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } @@ -460,6 +468,11 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { if (asnDocument.getPlaces()!=null) { document.setPlaces(convertPlaces(asnDocument.getPlaces())); } + + if (asnDocument.getAdditionalPlaces()!=null) { + document.setAdditionalPlaces(convertPlaces(asnDocument.getAdditionalPlaces())); + } + if (asnDocument.getBicyclePlaces()!=null) { document.setBicyclePlaces(convertPlaces(asnDocument.getBicyclePlaces())); @@ -522,12 +535,20 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { } - - - - - - + private IServiceType convert(ServiceType service) { + + if (service == null) { + return null; + } else if (service.equals(ServiceType.seat)) { + return IServiceType.seat; + } else if (service.equals(ServiceType.couchette)) { + return IServiceType.couchette; + } else if (service.equals(ServiceType.berth)) { + return IServiceType.berth; + } + + return null; + } /** * Convert car carriage. @@ -706,11 +727,24 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { details.setCompartmentTypeDescr(asnDetails.getCompartmentTypeDescr()); details.setSpecialAllocationDescr(asnDetails.getSpecialAllocationDescr()); - details.setPosition(ICompartmentPositionType.valueOf(asnDetails.getPosition().name())); + details.setPosition(convert(asnDetails.getPosition())); return details; } + private ICompartmentPositionType convert(CompartmentPositionType position) { + if (position == null) { + return null; + } else if (position.equals(CompartmentPositionType.lowerLevel)) { + return ICompartmentPositionType.lowerLevel; + } else if (position.equals(CompartmentPositionType.upperLevel)) { + return ICompartmentPositionType.upperLevel; + } else if (position.equals(CompartmentPositionType.unspecified)) { + return ICompartmentPositionType.unspecified; + } + return null; + } + /** * Convert places. * @@ -802,6 +836,9 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); document.setTicketReference(UicEncoderUtils.mapToString(asnDocument.getTicketReferenceNum(),asnDocument.getTicketReferenceIA5())); + if (asnDocument.getStationCodeTable()!=null){ + document.setStationCodeTable(IStationCodeTable.valueOf(asnDocument.getStationCodeTable().name())); + } document.setFromStation(UicEncoderUtils.mapToString(asnDocument.getFromStationNum(),asnDocument.getFromStationIA5())); document.setToStation(UicEncoderUtils.mapToString(asnDocument.getToStationNum(),asnDocument.getToStationIA5())); @@ -825,6 +862,28 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { } + if (asnDocument.getCarriersNum()!=null && !asnDocument.getCarriersNum().isEmpty()){ + for(Long carrier :asnDocument.getCarriersNum()){ + document.addIncludedCarrier(carrier.toString()); + } + } + if (asnDocument.getCarriersIA5()!=null && !asnDocument.getCarriersIA5().isEmpty()){ + for(String carrier :asnDocument.getCarriersIA5()){ + document.addIncludedCarrier(carrier); + } + } + + if (asnDocument.getIncludedServiceBrands()!=null && !asnDocument.getIncludedServiceBrands().isEmpty()){ + for(Long number :asnDocument.getIncludedServiceBrands()){ + document.addIncludedServiceBrand(number.intValue()); + } + } + + if (asnDocument.getExcludedServiceBrands()!=null && !asnDocument.getExcludedServiceBrands().isEmpty()){ + for(Long number :asnDocument.getExcludedServiceBrands()){ + document.addExcludedServiceBrand(number.intValue()); + } + } document.setGroupName(asnDocument.getGroupName()); @@ -937,6 +996,10 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } + if (asnDocument.getServiceLevel() != null && asnDocument.getServiceLevel().length() > 0) { + document.setServiceLevel(asnDocument.getServiceLevel()); + } + document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); @@ -954,12 +1017,6 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); - if (asnDocument.getExcludedServiceBrands()!=null && !asnDocument.getExcludedServiceBrands().isEmpty()){ - for(Long number :asnDocument.getExcludedServiceBrands()){ - document.addExcludedServiceBrand(number.intValue()); - } - } - if (asnDocument.getCarriersNum()!=null && !asnDocument.getCarriersNum().isEmpty()){ for(Long carrier :asnDocument.getCarriersNum()){ document.addIncludedCarrier(carrier.toString()); @@ -978,6 +1035,12 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { } } + if (asnDocument.getExcludedServiceBrands()!=null && !asnDocument.getExcludedServiceBrands().isEmpty()){ + for(Long number :asnDocument.getExcludedServiceBrands()){ + document.addExcludedServiceBrand(number.intValue()); + } + } + if (asnDocument.getIncludedTransportTypes()!=null && !asnDocument.getIncludedTransportTypes().isEmpty()){ for(Long number :asnDocument.getIncludedTransportTypes()){ document.addInludedTransportType(number.intValue()); @@ -1012,6 +1075,8 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { } } + document.setReturnDescription(convertReturnDescription(asnDocument.getReturnDescription(), issuingDate)); + if (asnDocument.getIssuerAutorizationId() != null) { document.setAuthorizationCode(asnDocument.getIssuerAutorizationId().intValue()); } @@ -1077,6 +1142,10 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { document.setClassCode(classCode); } + if (asnDocument.getServiceLevel() != null && asnDocument.getServiceLevel().length() > 0) { + document.setServiceLevel(asnDocument.getServiceLevel()); + } + document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); @@ -1149,6 +1218,8 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { if (asnDocument.getExternalIssuerId()!=null){ document.setExternalIssuer(asnDocument.getExternalIssuerId().intValue()); } + + return document; } @@ -1204,9 +1275,9 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { document.setProductName(asnDocument.getProductName()); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); - if (asnDocument.getStationNameUTF8()!= null && asnDocument.getStationNameUTF8().isEmpty() ) { + if (asnDocument.getStationNameUTF8()!= null && !asnDocument.getStationNameUTF8().isEmpty() ) { for (String name : asnDocument.getStationNameUTF8()) { - document.addStation(name); + document.addStationName(name); } } @@ -1381,10 +1452,13 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { } if (asnDocument.getAlternativeRoutes()!= null && !asnDocument.getAlternativeRoutes().isEmpty()) { for ( ViaStationType routeVia: asnDocument.getAlternativeRoutes()) { - via.addRouteStation(convertViaStation(routeVia)); + via.getAlternativeRoutes().add(convertViaStation(routeVia)); } } - + + if (asnDocument.getSeriesId() != null) { + via.setSeriesId(asnDocument.getSeriesId().intValue()); + } return via; } @@ -1438,6 +1512,14 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { zone.setNUTScode(asnDocument.getNutsCode()); + if (asnDocument.getZoneId() != null && !asnDocument.getZoneId().isEmpty()) { + Iterator it = asnDocument.getZoneId().iterator(); + while (it.hasNext()) { + zone.addZoneId(it.next().intValue()); + } + } + + return zone; } @@ -1456,6 +1538,8 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { IGeoCoordinate firstEdge = convertGeoCoordinate(asnPolygone.getFirstEdge()); if (firstEdge == null) return null; + + polygone.addEdge(firstEdge); if (asnPolygone.getEdges()!=null && !asnPolygone.getEdges().isEmpty()) { for (DeltaCoordinates asnEdge :asnPolygone.getEdges()){ @@ -1630,17 +1714,26 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); - - document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); document.setReference(UicEncoderUtils.mapToString(asnDocument.getReferenceNum(),asnDocument.getReferenceIA5())); + if (asnDocument.getCarrierNum()!=null && !asnDocument.getCarrierNum().isEmpty()){ + for(Long carrier :asnDocument.getCarrierNum()){ + document.addCarrier(carrier.toString()); + } + } + if (asnDocument.getCarrierIA5()!=null && !asnDocument.getCarrierIA5().isEmpty()){ + for(String carrier :asnDocument.getCarrierIA5()){ + document.addCarrier(carrier); + } + } + if (asnDocument.getActivatedDay() != null && !asnDocument.getActivatedDay().isEmpty()) { document.getActivatedDays().addAll(asnDocument.getActivatedDays(issuingDate)); } - if(asnDocument.getIncludesSupplements()!=null) { + if(asnDocument.getIncludesSupplements()!= null) { document.setIncludesSupplements(asnDocument.getIncludesSupplements()); } if(asnDocument.getNumberOfTravelDays()!=null){ @@ -1688,6 +1781,9 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { if (asnDocument.getNumberOfDaysOfTravel() != null) { document.setNumberOfDaysOfTravel(asnDocument.getNumberOfDaysOfTravel().intValue()); } + if (asnDocument.getNumberOfValidityDays() != null) { + document.setNumberOfValidityDays(asnDocument.getNumberOfValidityDays().intValue()); + } if (asnDocument.getNumberOfPossibleTrips() != null) { document.setNumberOfPossibleTrips(asnDocument.getNumberOfPossibleTrips().intValue()); } @@ -1958,6 +2054,9 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { card.addIncludedService(new Integer(service.intValue())); } } + + card.setExtension(convertExtension(asnDocument.getExtension())); + return card; } @@ -2212,6 +2311,12 @@ public class OpenAsn2ApiDecoderV3 implements Asn2ApiDecoder { issuingDetail.setPointOfSale(convertGeoCoordinate(asnIssuingDetail.getPointOfSale())); } + issuingDetail.setCurrency(asnIssuingDetail.getCurrency()); + + if (asnIssuingDetail.getCurrencyFract() != null) { + issuingDetail.setCurrencyFraction(asnIssuingDetail.getCurrencyFract().intValue()); + } + } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/UicEncoderUtils.java b/src/main/java/org/uic/barcode/ticket/api/utils/UicEncoderUtils.java index 73f96f1..f5eb15c 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/UicEncoderUtils.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/UicEncoderUtils.java @@ -329,6 +329,49 @@ public class UicEncoderUtils { } } + + public static Long getRestrictedNum(String text, int min, int max) { + + if (text == null || text.length() == 0) { + return null; + } + + Long i; + try { + i = Long.parseLong(text); + } catch (NumberFormatException e) { + return null; + } + if (i < min || i > max) { + return null; + } + return i; + + } + + public static String getIA5RestrictedNonNum(String text, int min, int max) throws EncodingFormatException { + if (text == null || text.length() == 0) { + return null; + } + + for (int i = 0; i < text.length(); i++){ + int index = text.charAt(i); + if (index < 0 || index > 127) { + throw new EncodingFormatException("Wrong Characters in IA5 String encoding"); + } + } + + try { + long l = Long.parseLong(text); + if (l < min || l > max) { + return text; + } else { + return null; + } + } catch (NumberFormatException e) { + return text; + } + } /** * Gets the restricted int. @@ -511,4 +554,6 @@ public class UicEncoderUtils { } + + } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java new file mode 100644 index 0000000..0b426f2 --- /dev/null +++ b/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java @@ -0,0 +1,1141 @@ +package org.uic.barcode.ticket.api.test; + +import java.io.IOException; +import java.text.ParseException; +import java.util.Date; +import java.util.Iterator; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv3.ConfirmationTypeType; +import org.uic.barcode.ticket.api.spec.IBerth; +import org.uic.barcode.ticket.api.spec.IBerthTypeType; +import org.uic.barcode.ticket.api.spec.IBoardingOrArrivalType; +import org.uic.barcode.ticket.api.spec.ICarCarriageReservation; +import org.uic.barcode.ticket.api.spec.ICardReference; +import org.uic.barcode.ticket.api.spec.ICompartmentGenderType; +import org.uic.barcode.ticket.api.spec.ICompartmentPositionType; +import org.uic.barcode.ticket.api.spec.ICounterMark; +import org.uic.barcode.ticket.api.spec.ICustomerCard; +import org.uic.barcode.ticket.api.spec.ICustomerStatusDescription; +import org.uic.barcode.ticket.api.spec.IDelayConfirmation; +import org.uic.barcode.ticket.api.spec.IDocumentData; +import org.uic.barcode.ticket.api.spec.IDocumentExtension; +import org.uic.barcode.ticket.api.spec.IExtension; +import org.uic.barcode.ticket.api.spec.IFipTicket; +import org.uic.barcode.ticket.api.spec.IGenderType; +import org.uic.barcode.ticket.api.spec.IGeoCoordinateSystemType; +import org.uic.barcode.ticket.api.spec.IGeoUnitType; +import org.uic.barcode.ticket.api.spec.IHemisphereLatitudeType; +import org.uic.barcode.ticket.api.spec.IHemisphereLongitudeType; +import org.uic.barcode.ticket.api.spec.IIncludedOpenTicket; +import org.uic.barcode.ticket.api.spec.ILine; +import org.uic.barcode.ticket.api.spec.ILinkMode; +import org.uic.barcode.ticket.api.spec.ILoadingDeckType; +import org.uic.barcode.ticket.api.spec.IOpenTicket; +import org.uic.barcode.ticket.api.spec.IParkingGround; +import org.uic.barcode.ticket.api.spec.IPass; +import org.uic.barcode.ticket.api.spec.IPassengerType; +import org.uic.barcode.ticket.api.spec.IPolygone; +import org.uic.barcode.ticket.api.spec.IPriceTypeType; +import org.uic.barcode.ticket.api.spec.IRegionalValidity; +import org.uic.barcode.ticket.api.spec.IRegisteredLuggage; +import org.uic.barcode.ticket.api.spec.IReservation; +import org.uic.barcode.ticket.api.spec.IRoofRackType; +import org.uic.barcode.ticket.api.spec.IServiceType; +import org.uic.barcode.ticket.api.spec.IStationCodeTable; +import org.uic.barcode.ticket.api.spec.IStationPassage; +import org.uic.barcode.ticket.api.spec.ITariff; +import org.uic.barcode.ticket.api.spec.ITicketLink; +import org.uic.barcode.ticket.api.spec.ITicketType; +import org.uic.barcode.ticket.api.spec.ITimeRange; +import org.uic.barcode.ticket.api.spec.ITrainLink; +import org.uic.barcode.ticket.api.spec.ITravelClassType; +import org.uic.barcode.ticket.api.spec.ITraveler; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.spec.IValidityRange; +import org.uic.barcode.ticket.api.spec.IVatDetail; +import org.uic.barcode.ticket.api.spec.IViaStation; +import org.uic.barcode.ticket.api.spec.IVoucher; +import org.uic.barcode.ticket.api.spec.IZone; +import org.uic.barcode.ticket.api.test.testtickets.AllElementsTestTicketV3; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoderV3; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoderV3; + + +/** + * The Class CarCarriageTestV1. + * + * + * + */ +public class AllElementsTestV3 { + + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoderV3(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoderV3(); + + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testDelayConfirmation() throws IllegalArgumentException, IllegalAccessException, ParseException { + + + defaulttimeZone = TimeZone.getDefault(); + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + IUicRailTicket ticketDecoded = null; + try { + String hex = AllElementsTestTicketV3.getEncodingHex(); + byte[] content = UperEncoder.bytesFromHexString(hex); + ticketDecoded = decoder.decodeFromAsn(content); + } catch (IOException e) { + assert(false); + } + + + + + byte[] encoded = null; + try { + encoded = encoder.encode(ticketDecoded); + } catch (EncodingFormatException e) { + assert(false); + } + + //decode ticket again + IUicRailTicket ticketDecoded2 = null; + try { + ticketDecoded2 = decoder.decodeFromAsn(encoded); + } catch (IOException e) { + assert(false); + } + + assert (ticketDecoded2 != null); + + //validate content + validateTicketContent(ticketDecoded2); + + + + + TimeZone.setDefault(defaulttimeZone); + } + + + + + + + private void validateTicketContent(IUicRailTicket ticket) { + assert (ticket != null); + + assert(ticket.getControlDetails() != null); + assert(ticket.getControlDetails().isAgeCheckRequired() == false); + assert(ticket.getControlDetails().isIdentificationByPassportId() == false); + assert(ticket.getControlDetails().isIdentificationByIdCard() == false); + assert(ticket.getControlDetails().isOnlineValidationRequired() == false); + assert(ticket.getControlDetails().getIdentificationItem() == 12); + assert(ticket.getControlDetails().isPassportValidationRequired() == false); + assert(ticket.getControlDetails().getRandomDetailedValidationRequired() == 50); + assert(ticket.getControlDetails().getExtension() != null); + assert(ticket.getControlDetails().isReductionCardCheckRequired() == false); + assert(ticket.getControlDetails().getInfoText().equals("control")); + assert(ticket.getControlDetails().getIdentificationByCardReference() != null); + + assert(ticket.getControlDetails().getIdentificationByCardReference().size() == 1); + ICardReference cr = ticket.getControlDetails().getIdentificationByCardReference().iterator().next(); + assert(cr != null); + assert(cr.getCardId().equals("5678")); + assert(cr.getCardIssuer().equals("1234")); + assert(cr.getCardName().equals("testcard")); + assert(cr.getCardType() == 123); + assert(cr.getLeadingCardId().equals("3456")); + assert(cr.getTrailingCardId().equals("100")); + + + assert(ticket.getControlDetails().getLinkedTickets() != null); + + ITicketLink tl = ticket.getControlDetails().getLinkedTickets().iterator().next(); + + assert(tl.getIssuer().equals("XYZ")); + assert(tl.getIssuerPNR().equals("LDWDUR45")); + assert(tl.getProductOwner().equals("IEFHU")); + assert(tl.getLinkMode().equals(ILinkMode.issuedTogether)); + assert(tl.getReference().equals("KDJET")); + assert(tl.getTicketType().equals(ITicketType.openTicket)); + + assert(ticket.getExtensions() != null); + assert(ticket.getExtensions().size() == 2); + Iterator it = ticket.getExtensions().iterator(); + IExtension e0 = it.next(); + IExtension e1 = it.next(); + assert(e0.getId().equals("1")); + assert(UperEncoder.hexStringFromBytes(e0.getBinarydata()).equals("82DA")); + assert(e1.getId().equals("2")); + assert(UperEncoder.hexStringFromBytes(e1.getBinarydata()).equals("83DA")); + + + assert(ticket.getIssuerDetails() != null); + + assert(ticket.getIssuerDetails().isActivated() == true); + assert(ticket.getIssuerDetails().getCurrency().equals("SRF")); + assert(ticket.getIssuerDetails().getCurrencyFraction() == 3L); + assert(ticket.getIssuerDetails().getExtension() != null); + assert(ticket.getIssuerDetails().getIssuedOnLine() == 12); + assert(ticket.getIssuerDetails().getIssuedOnTrain().equals("123")); + assert(ticket.getIssuerDetails().getIssuerName().equals("name")); + assert(ticket.getIssuerDetails().getIssuer().equals("1")); + assert(ticket.getIssuerDetails().getIssuerPNR().equals("issuerTestPNR")); + assert(ticket.getIssuerDetails().getIssuingDate() != null); + assert(ticket.getIssuerDetails().isSecurePaperTicket() == false); + assert(ticket.getIssuerDetails().getSecurityProvider().equals("1")); + assert(ticket.getIssuerDetails().isSpecimen() == true); + assert(ticket.getIssuerDetails().getPointOfSale() != null); + assert(ticket.getIssuerDetails().getPointOfSale().getUnit().equals(IGeoUnitType.microDegree)); + assert(ticket.getIssuerDetails().getPointOfSale().getSystem().equals(IGeoCoordinateSystemType.wgs84)); + assert(ticket.getIssuerDetails().getPointOfSale().getAccuracy().equals(IGeoUnitType.microDegree)); + assert(ticket.getIssuerDetails().getPointOfSale().getHemisphereLatitude().equals(IHemisphereLatitudeType.east)); + assert(ticket.getIssuerDetails().getPointOfSale().getHemisphereLongitude().equals(IHemisphereLongitudeType.north)); + assert(ticket.getIssuerDetails().getPointOfSale().getLatitude() == 269); + assert(ticket.getIssuerDetails().getPointOfSale().getLongitude() == 105); + + assert(ticket.getDocumentData() != null); + assert(!ticket.getDocumentData().isEmpty()); + + Iterator i2 = ticket.getDocumentData().iterator(); + + int numberOfDocuments = 0; + while (i2.hasNext()) { + numberOfDocuments++; + IDocumentData d1 = i2.next(); + if (d1 instanceof IReservation) { + validate((IReservation) d1); + } else if (d1 instanceof ICarCarriageReservation) { + validate((ICarCarriageReservation) d1); + } else if (d1 instanceof IPass) { + validate((IPass) d1); + } else if (d1 instanceof IOpenTicket) { + validate((IOpenTicket) d1); + } else if (d1 instanceof ICounterMark) { + validate((ICounterMark) d1); + } else if (d1 instanceof IStationPassage) { + validate((IStationPassage) d1); + } else if (d1 instanceof ICustomerCard) { + validate((ICustomerCard) d1); + } else if (d1 instanceof IDelayConfirmation) { + validate((IDelayConfirmation) d1); + } else if (d1 instanceof IParkingGround) { + validate((IParkingGround) d1); + } else if (d1 instanceof IFipTicket) { + validate((IFipTicket) d1); + } else if (d1 instanceof IVoucher) { + validate((IVoucher) d1); + } else if (d1 instanceof IDocumentExtension) { + assert(((IDocumentExtension) d1).getId() != null); + } + } + assert(numberOfDocuments == 11); + + + assert(ticket.getTravelerDetails() != null); + assert(ticket.getTravelerDetails().getGroupName().equals("myGroup")); + assert(ticket.getTravelerDetails().getPreferredLanguage().equals("EN")); + assert(ticket.getTravelerDetails().getTravelers() != null); + assert(ticket.getTravelerDetails().getTravelers().size() == 1); + + ITraveler tr = ticket.getTravelerDetails().getTravelers().iterator().next(); + + assert(tr.getIDCardCountry() == 103); + assert(tr.getPassportCountry() == 102); + assert(tr.getCountryOfResidence() == 101); + assert(tr.getCustomerId().equals("DZE5gT")); + assert(tr.getDateOfBirth() != null); + assert(tr.getFirstName().equals("John")); + assert(tr.getGender().equals(IGenderType.male)); + assert(tr.getIdCard().equals("12345")); + assert(tr.getLastName().equals("Dow")); + assert(tr.getPassengerType().equals(IPassengerType.senior)); + assert(tr.isPassengerWithReducedMobility() == false); + assert(tr.getPassportId().equals("JDTS")); + assert(tr.getSecondName().equals("Little")); + assert(tr.getTitle().equals("PhD")); + assert(tr.isTicketHolder() == true); + assert(tr.getStatusCollection() != null); + assert(tr.getStatusCollection().size() == 1); + ICustomerStatusDescription csd = tr.getStatusCollection().iterator().next(); + assert(csd.getStatus() == 1); + assert(csd.getDescription().equals("senior")); + + } + + + private void validate(ICounterMark t) { + + assert(t != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals( "23456")); + assert(t.getProductId().equals( "123456")); + assert(t.getTicketReference().equals( "810123456789")); + assert(t.getNumberOfCountermark() == 12L); + assert(t.getTotalOfCountermarks() == 24L); + assert(t.getGroupName().equals( "groupName")); + assert(t.isReturnIncluded() == false); + + assert(t.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(t.getFromStation().equals("8100001")); + assert(t.getToStation().equals( "8100002")); + assert(t.getFromStationName().equals( "A-STATION")); + assert(t.getToStationName().equals( "B-STATION")); + + assert(t.getValidRegionDesc().equals("From A to B via C")); + + assert(t.getValidRegionList() != null); + assert(t.getValidRegionList().size() == 1); + + + assert(t.getReturnDescription() != null); + assert(t.getReturnDescription().getFromStation().equals("8100001")); + assert(t.getReturnDescription().getToStation().equals( "8100002")); + assert(t.getReturnDescription().getFromStationName().equals( "A-STATION")); + assert(t.getReturnDescription().getToStationName().equals( "B-STATION")); + assert(t.getReturnDescription().getValidRegionDesc().equals( "return")); + assert(t.getReturnDescription().getValidRegionList() != null); + assert(t.getReturnDescription().getValidRegionList().size() == 1); + + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + + assert(t.getClassCode().equals(ITravelClassType.first)); + + assert(t.getIncludedCarriers() != null); + assert(t.getIncludedCarriers().size() == 2); + assert(t.getIncludedCarriers().contains("1080")); + assert(t.getIncludedCarriers().contains("1181")); + + + assert(t.getIncludedServiceBrands() != null); + assert(t.getIncludedServiceBrands().size() == 2); + Iterator i4 = t.getIncludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + assert(t.getExcludedServiceBrands() != null); + assert(t.getExcludedServiceBrands().size() == 2); + i4 = t.getExcludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + + assert (t.getInfoText().equals("counterMark")); + + assert(t.getExtension() != null); + + + } + + private void validate(IDelayConfirmation t) { + assert(t != null); + + assert(t.getTrain().equals("100")); + assert(t.getArrivalDate() != null); + assert(t.getReference().equals("ABDJ12345")); + assert(t.getStation().equals("DJE")); + assert(t.getDelay() == 31); + assert(t.isTrainCancelled() == false); + assert(t.getConfirmationType() == ConfirmationTypeType.travelerDelayConfirmation.ordinal()); + assert(t.getLinkedTickets() != null); + assert(t.getLinkedTickets().size() == 1); + ITicketLink tl = t.getLinkedTickets().iterator().next(); + assert(tl.getReference().equals("KDJET")); + assert(tl.getIssuer().equals( "XYZ")); + assert(tl.getIssuerPNR().equals( "LDWDUR45")); + assert(tl.getProductOwner().equals( "IEFHU")); + assert(tl.getTicketType().equals(ITicketType.openTicket)); + assert(tl.getLinkMode().equals( ILinkMode.issuedTogether)); + + assert(t.getInfoText().equals( "delay confirmation")); + assert(t.getExtension() != null); + + } + + private void validate(ICustomerCard c) { + assert(c != null); + assert (c.getExtension() != null); + assert (c.getCustomer() != null); + assert (c.getCustomer() != null); + + assert (c.getCardId().equals("2345")); + assert (c.getValidFrom() != null); + assert (c.getValidUntil() != null); + assert (c.getClassCode().equals(ITravelClassType.second)); + assert (c.getCardType() == 15); + assert (c.getCardTypeDescr().equals( "RAILPLUS")); + assert (c.getCustomerStatus() == 1); + assert (c.getCustomerStatusDescr().equals( "gold")); + assert (c.getIncludedServices() != null); + assert (c.getIncludedServices().size() == 2); + Iterator i3 = c.getIncludedServices().iterator(); + assert(i3.next() == 1); + assert(i3.next() == 2); + + } + + private void validate(IVoucher v) { + assert(v != null); + assert (v.getExtension() != null); + + assert(v.getReference().equals("810123456789")); + assert(v.getProductOwner().equals("COFFEEMACHINE")); + assert(v.getProductId().equals("123456")); + + assert(v.getValidFrom() != null); + assert(v.getValidUntil() != null); + assert(v.getAmount() == 500); + assert(v.getType() == 123); + assert(v.getInfoText().equals("coffee voucher")); + + } + + private void validate(IStationPassage t) { + assert(t != null); + assert(t.getExtension() != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals("23456")); + assert(t.getProductId().equals("123456")); + + assert(t.getProductName().equals("passage")); + assert(t.getStationCodeTable().equals(IStationCodeTable.stationUIC)); + assert(t.getStations() != null); + assert(t.getStations().size() == 2); + assert(t.getStations().contains("8200001")); + assert(t.getStations().contains("AMS")); + assert(t.getStationNames() != null); + assert(t.getStationNames().size() == 1); + assert(t.getStationNames().iterator().next().equals("Amsterdam")); + assert(t.getAreaCodes() != null); + assert(t.getAreaCodes().size() == 2); + assert(t.getAreaCodes().contains("AMS")); + assert(t.getAreaCodes().contains("8200001")); + assert(t.getAreaNames() != null); + assert(t.getAreaNames().size() == 1); + assert(t.getAreaNames().contains("Amsterdam")); + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + assert(t.getNumberOfdaysAllowed() == 5); + + } + + private void validate(IParkingGround t) { + assert(t != null); + assert(t.getExtension() != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals("23456")); + assert(t.getProductId().equals("123456")); + + + assert(t.getParkingGroundId().equals( "IA5")); + assert(t.getFromParkingDate() != null); + assert(t.getToParkingDate() != null); + + + assert(t.getAccessCode().equals( "4ga")); + assert(t.getLocation().equals( "Parking Frankfurt Main West")); + assert(t.getStationCodeTable().equals(IStationCodeTable.stationUIC)); + assert(t.getStation().equals( "8000001")); + assert(t.getSpecialInformation().equals( "outdoor parking")); + assert(t.getEntryTrack().equals( "left")); + assert(t.getNumberPlate().equals( "AA-DE-12345")); + assert(t.getPrice() == 500); + assert(t.getVatDetails() != null); + assert(t.getVatDetails().size() == 1); + + + } + + private void validate(IFipTicket t) { + assert(t != null); + assert(t.getExtension() != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals("23456")); + assert(t.getProductId().equals("123456")); + + + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + assert(t.getActivatedDays() != null); + assert(t.getActivatedDays().size() == 4); + Iterator i5 = t.getActivatedDays().iterator(); + assert(i5.next() != null); + assert(i5.next() != null); + assert(i5.next() != null); + assert(i5.next() != null); + + + + assert(t.getCarriers()!= null); + assert(t.getCarriers().size() == 2); + assert(t.getCarriers().contains("1080")); + assert(t.getCarriers().contains("1181")); + + + assert(t.getNumberOfTravelDates() == 8); + assert(t.isIncludesSupplements() == true); + assert(t.getClassCode().equals(ITravelClassType.first)); + + } + + private void validate(IOpenTicket t) { + + assert (t != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals( "23456")); + assert(t.getProductId().equals( "123456")); + assert(t.getExternalIssuer() == 12); + assert(t.getAuthorizationCode() == 13); + assert(t.isReturnIncluded() == false); + + assert(t.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(t.getFromStation().equals("8100001")); + assert(t.getToStation().equals( "8100002")); + assert(t.getFromStationName().equals( "A-STATION")); + assert(t.getToStationName().equals( "B-STATION")); + + assert(t.getValidRegionDesc().equals("From A to B via C")); + + assert (t.getValidRegionList() != null); + assert(t.getValidRegionList().size() == 5); + Iterator irv = t.getValidRegionList().iterator(); + int checks = 0; + while (irv.hasNext()) { + IRegionalValidity v = irv.next(); + if (v instanceof IZone) { + validateRegion((IZone) v); + checks++; + } else if (v instanceof IViaStation) { + validateRegion((IViaStation) v); + checks++; + } else if (v instanceof ITrainLink) { + validateRegion((ITrainLink) v); + checks++; + } else if (v instanceof IPolygone) { + validateRegion((IPolygone) v); + checks++; + } else if (v instanceof ILine) { + validateRegion((ILine) v); + checks++; + } + } + assert(checks == 5); + + assert(t.getReturnDescription() != null); + + assert(t.getReturnDescription().getFromStation().equals("8100001")); + assert(t.getReturnDescription().getToStation().equals( "8100002")); + assert(t.getReturnDescription().getFromStationName().equals( "A-STATION")); + assert(t.getReturnDescription().getToStationName().equals( "B-STATION")); + assert(t.getReturnDescription().getValidRegionDesc().equals( "return")); + assert(t.getReturnDescription().getValidRegionList() != null); + assert(t.getReturnDescription().getValidRegionList().size() == 1); + + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + + assert(t.getActivatedDays() != null); + assert(t.getActivatedDays().size() == 2); + + assert(t.getClassCode().equals(ITravelClassType.first)); + assert(t.getServiceLevel().equals("A")); + + assert(t.getIncludedCarriers() != null); + assert(t.getIncludedCarriers().size() == 2); + assert(t.getIncludedCarriers().contains("1080")); + assert(t.getIncludedCarriers().contains("1181")); + + + assert(t.getIncludedServiceBrands() != null); + assert(t.getIncludedServiceBrands().size() == 2); + Iterator i4 = t.getIncludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + assert(t.getExcludedServiceBrands() != null); + assert(t.getExcludedServiceBrands().size() == 2); + i4 = t.getExcludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + + assert(t.getTariffs() != null); + assert(t.getTariffs().size() == 1); + + assert (t.getPrice() == 12345); + assert (t.getVatDetails() != null); + assert (t.getVatDetails().size() == 1); + + assert (t.getInfoText().equals("openTicketInfo")); + + assert (t.getIncludedAddOns() != null); + assert (t.getIncludedAddOns().size() == 1); + validate(t.getIncludedAddOns().iterator().next()); + + assert(t.getLuggageRestriction() != null); + + assert(t.getIncludedTransportTypes() != null); + assert(t.getIncludedTransportTypes().size() == 2); + assert(t.getIncludedTransportTypes().contains(10)); + assert(t.getIncludedTransportTypes().contains(11)); + + + assert(t.getExcludedTransportTypes() != null); + assert(t.getExcludedTransportTypes().size() == 2); + assert(t.getExcludedTransportTypes().contains(10)); + assert(t.getExcludedTransportTypes().contains(18)); + + + + assert(t.getExtension() != null); + + } + + private void validateRegion(ITrainLink t) { + + assert (t != null); + + assert(t.getTrain().equals("12345")); + assert(t.getDepartureDateTime() != null); + assert(t.getFromStation().equals("8100001")); + + assert(t.getToStation().equals( "8100002")); + assert(t.getFromStationName().equals( "A-STATION")); + assert(t.getToStationName().equals( "B-STATION")); + + } + + private void validateRegion(IPolygone p) { + + assert(p.getEdges() != null); + assert(p.getEdges().size() == 3); + + } + + private void validateRegion(IZone z) { + + assert(z != null); + + assert(z.getCarrier().equals("1080")); + assert(z.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(z.getEntryStation().equals( "1234")); + assert(z.getTerminatingStation().equals( "2345")); + assert(z.getCity() == 123456); + assert(z.getZoneIds() != null); + assert(z.getZoneIds().size() == 2); + Iterator iz = z.getZoneIds().iterator(); + assert(iz.next() == 100); + assert(iz.next() == 200); + + assert(UperEncoder.hexStringFromBytes(z.getBinaryZoneId()).equals("82DA")); + assert(z.getNUTScode().equals("DE4711")); + + } + + private void validateRegion(ILine z) { + + + assert(z.getCarrier().equals("1080")); + assert(z.getStationCodeTable().equals(IStationCodeTable.stationERA)); + + assert(z.getEntryStation().equals( "1234")); + + assert(z.getTerminatingStation().equals( "2345")); + assert(z.getCity() == 123456); + assert(z.getLineIds() != null); + assert(z.getLineIds().size() == 2); + Iterator iz = z.getLineIds().iterator(); + assert(iz.next() == 100); + assert(iz.next() == 200); + + + } + + private void validateRegion(IViaStation t) { + + assert( t != null); + + assert(t.getRoute() != null); + + assert(t.getRoute().size() == 4); + + Iterator iv = t.getRoute().iterator(); + IViaStation v1 = iv.next(); + IViaStation v2 = iv.next(); + IViaStation v3 = iv.next(); + IViaStation v4 = iv.next(); + + assert(v1.getStation().equals("123455")); + assert(v1.isBorder() == false); + + assert(v2.getStation().equals("123456")); + assert(v2.isBorder() == false); + + assert(v3.getAlternativeRoutes() != null); + assert(v3.getAlternativeRoutes().size() == 2); + Iterator ari = v3.getAlternativeRoutes().iterator(); + IViaStation ar1 = ari.next(); + IViaStation ar2 = ari.next(); + assert(ar1.getRoute().size() == 2); + assert(ar1.getRoute().iterator().next().getStation().equals("23455")); + assert(ar2.getRoute() != null); + assert(ar2.getRoute().size() == 2); + assert(ar2.getRoute().iterator().next().getStation().equals("3455")); + + assert(v4.getStation().equals("123457")); + + assert(t.isBorder() == false); + + assert(t.getSeriesId() == 999); + assert(t.getRouteId() == 21); + + + assert(t.getIncludedServiceBrands() != null); + assert(t.getIncludedServiceBrands().size() == 2); + Iterator i4 = t.getIncludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + assert(t.getExcludedServiceBrands() != null); + assert(t.getExcludedServiceBrands().size() == 2); + i4 = t.getExcludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + + } + + private void validate(IIncludedOpenTicket d1) { + + assert(d1.getProductOwner().equals("23456")); + assert(d1.getProductId().equals("123456")); + assert(d1.getExternalIssuer() == 12); + assert(d1.getAuthorizationCode() == 13); + assert(d1.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(d1.getValidRegionList() != null); + assert(d1.getValidRegionList().size() == 1); + assert(d1.getValidFrom() != null); + assert(d1.getValidUntil() != null); + assert(d1.getClassCode().equals(ITravelClassType.second)); + assert(d1.getServiceLevel().equals("A")); + + assert(d1.getIncludedCarriers() != null); + assert(d1.getIncludedCarriers().size() == 2); + assert(d1.getIncludedCarriers().contains("1080")); + assert(d1.getIncludedCarriers().contains("1181")); + + assert(d1.getIncludedServiceBrands() != null); + assert(d1.getIncludedServiceBrands().size() == 2); + assert(d1.getIncludedServiceBrands().contains(108)); + assert(d1.getIncludedServiceBrands().contains(118)); + + + assert(d1.getExcludedServiceBrands() != null); + assert(d1.getExcludedServiceBrands().size() == 2); + assert(d1.getExcludedServiceBrands().contains(108)); + assert(d1.getExcludedServiceBrands().contains(118)); + + + assert(d1.getTariffs() != null); + assert(d1.getTariffs().size() == 1); + + assert(d1.getInfoText().equals("included ticket")); + + assert(d1.getIncludedTransportTypes() != null); + assert(d1.getIncludedTransportTypes().size() == 2); + assert(d1.getIncludedTransportTypes().contains(10)); + assert(d1.getIncludedTransportTypes().contains(11)); + + + assert(d1.getExcludedTransportTypes() != null); + assert(d1.getExcludedTransportTypes().size() == 2); + assert(d1.getExcludedTransportTypes().contains(10)); + assert(d1.getExcludedTransportTypes().contains(18)); + + assert(d1.getExtension() != null); + + + + } + + private void validate(IPass p) { + + + assert(p.getReference().equals("810123456789")); + assert(p.getProductOwner().equals( "23456")); + assert(p.getProductId().equals( "123456")); + assert(p.getPassType() == 2); + assert(p.getPassDescription().equals( "Eurail FlexPass")); + assert(p.getClassCode().equals(ITravelClassType.first)); + assert(p.getValidFrom() != null); + assert(p.getValidUntil() != null); + assert(p.getValidityDetails() != null); + + assert(p.getValidityDetails() != null); + assert(p.getValidityDetails().getValidityRanges().size() == 1); + IValidityRange vr = p.getValidityDetails().getValidityRanges().iterator().next(); + assert(vr.getFromDate() != null); + assert(vr.getUntilDate() != null); + + assert(p.getValidityDetails().getTimeRanges() != null); + ITimeRange tr = p.getValidityDetails().getTimeRanges().iterator().next(); + assert(tr.getFromTime() == 6); + assert(tr.getUntilTime() == 9); + + assert(p.getNumberOfValidityDays() == 5); + assert(p.getTrainValidity() != null); + + assert(p.getTrainValidity().getFromDate() != null); + assert(p.getTrainValidity().getUntilDate() != null); + assert(p.getTrainValidity().getIncludedCarriers() != null); + assert(p.getTrainValidity().getIncludedCarriers().size() == 2); + Iterator i3 = p.getTrainValidity().getIncludedCarriers().iterator(); + assert(i3.next().equals("1234")); + assert(i3.next().equals("5678")); + + assert(p.getTrainValidity().getBoardingOrArrival().equals(IBoardingOrArrivalType.boarding)); + + assert(p.getNumberOfPossibleTrips() == 3); + assert(p.getNumberOfDaysOfTravel() == 10); + assert(p.getActivatedDays() != null); + assert(p.getActivatedDays().size() == 2); + + + assert(p.getCountries() != null); + assert(p.getCountries().size() == 2); + Iterator i6 = p.getCountries().iterator(); + assert(i6.next() == 10); + assert(i6.next() == 20); + + assert(p.getIncludedCarriers() != null); + assert(p.getIncludedCarriers().size() == 2); + assert(p.getIncludedCarriers().contains("1080")); + assert(p.getIncludedCarriers().contains("1181")); + + assert(p.getIncludedServiceBrands() != null); + assert(p.getIncludedServiceBrands().size() == 2); + assert(p.getIncludedServiceBrands().contains(108)); + assert(p.getIncludedServiceBrands().contains(118)); + + + assert(p.getExcludedServiceBrands() != null); + assert(p.getExcludedServiceBrands().size() == 2); + assert(p.getExcludedServiceBrands().contains(108)); + assert(p.getExcludedServiceBrands().contains(118)); + + + + assert(p.getExcludedCarriers() != null); + assert(p.getExcludedCarriers().size() == 2); + assert(p.getExcludedCarriers().contains("1080")); + assert(p.getExcludedCarriers().contains("1181")); + + + + + + assert(p.getValidRegionList() != null); + assert(p.getValidRegionList().size() == 1); + assert(p.getTariffs() != null); + assert(p.getTariffs().size() == 1); + assert(p.getPrice() == 10000); + assert(p.getVatDetails() != null); + assert(p.getVatDetails().size() == 1); + assert(p.getInfoText().equals("pass info")); + assert (p.getExtension() != null); + + + } + + private void validate(IReservation r) { + + assert(r.getTrain().equals("12345")); + assert(r.getDepartureDate() != null); + assert(r.getReference().equals("810123456789")); + assert(r.getProductOwner().equals("23456")); + + assert(r.getProductId().equals("123456")); + assert(r.getServiceBrand().getServiceBrand() == 12); + assert(r.getServiceBrand().getServiceBrandAbbreviation().equals("TGV")); + assert(r.getServiceBrand().getServiceBrandDescription().equals("Lyria")); + assert(r.getService().equals(IServiceType.couchette)); + + assert(r.getStationCodeTable().equals(IStationCodeTable.stationUIC)); + assert(r.getFromStation().equals("8100001")); + assert(r.getToStation().equals( "8100002")); + assert(r.getFromStationName().equals( "A-STATION")); + assert(r.getToStationName().equals( "B-STATION")); + assert(r.getDepartureDate() != null); + assert(r.getArrivalDate() != null); + assert(r.getCarriers()!= null); + assert(r.getCarriers().size() == 2); + Iterator i8 = r.getCarriers().iterator(); + assert(i8.next().equals("1080")); + assert(i8.next().equals("1181")); + + + assert(r.getClassCode().equals(ITravelClassType.first)); + assert(r.getServiceLevel().equals("A")); + + assert(r.getPlaces() != null); + assert(r.getPlaces().getCoach().equals("31A")); + assert(r.getPlaces().getPlaceString().equals("31-47")); + assert(r.getPlaces().getPlaceDescription().equals("Window")); + assert(r.getPlaces().getPlaces() != null); + assert(r.getPlaces().getPlaces().size() == 4); + Iterator is = r.getPlaces().getPlaces().iterator(); + assert(is.next().equals("31")); + assert(is.next().equals("32")); + + + assert(r.getAdditionalPlaces() != null); + assert(r.getBicyclePlaces() != null); + + + assert(r.getCompartmentDetails() != null); + assert(r.getCompartmentDetails().getCoachType() == 1); + assert(r.getCompartmentDetails().getCompartmentType() == 99); + assert(r.getCompartmentDetails().getSpecialAllocation() == 50); + assert(r.getCompartmentDetails().getCoachTypeDescr().equals("xwz")); + assert(r.getCompartmentDetails().getCompartmentTypeDescr().equals( "xwz")); + assert(r.getCompartmentDetails().getSpecialAllocationDescr().equals( "xwz")); + assert(r.getCompartmentDetails().getPosition().equals(ICompartmentPositionType.upperLevel)); + + assert(r.getNumberOfOverbooked() == 200); + assert(r.getBerths() != null); + assert(r.getBerths().size() == 1); + IBerth b = r.getBerths().iterator().next(); + + assert(b.getType().equals(IBerthTypeType.single)); + assert(b.getGender().equals(ICompartmentGenderType.female)); + assert(b.getNumberOfBerths() == 999); + + + assert(r.getTariffs() != null); + assert(r.getTariffs().size() == 1); + ITariff t = r.getTariffs().iterator().next(); + assert(t.getNumberOfPassengers() == 1); + + + assert(t.getPassengerType().equals(IPassengerType.senior) ); + assert(t.getAgeBelow() == 64); + assert(t.getAgeAbove() == 60); + assert(t.getTravelerIds() != null); + assert(t.getTravelerIds().size() == 1); + assert(t.getTravelerIds().iterator().next() == 1); + + assert(t.isRestrictedToCountryOfResidence() == false); + assert(t.getRestrictedToRouteSection() != null); + assert(t.getRestrictedToRouteSection().getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(t.getRestrictedToRouteSection().getFromStation().equals( "123")); + assert(t.getRestrictedToRouteSection().getToStation().equals( "234")); + assert(t.getRestrictedToRouteSection().getFromStationName().equals( "A")); + assert(t.getRestrictedToRouteSection().getToStationName().equals( "B")); + + assert(t.getSeriesDataDetails() != null); + assert(t.getSeriesDataDetails().getSupplyingCarrier() == 12345); + assert(t.getSeriesDataDetails().getOfferIdentification() == 99); + assert(t.getSeriesDataDetails().getSeries() == 23456); + + + assert(t.getTariffId().equals( "72")); + assert(t.getTariffDescription().equals( "Leasure Fare")); + assert(t.getReductionCards() != null); + assert(t.getReductionCards().size() == 1); + ICardReference rc = t.getReductionCards().iterator().next(); + + assert(rc.getCardIssuer().equals( "1234")); + assert(rc.getCardId().equals( "5678")); + assert(rc.getCardName().equals( "testcard")); + assert(rc.getCardType() == 123); + assert(rc.getLeadingCardId().equals("3456")); + assert(rc.getTrailingCardId().equals("100")); + + + assert(r.getPriceType().equals(IPriceTypeType.travelPrice)); + assert(r.getPrice() == 12345); + assert(r.getVatDetails() != null); + IVatDetail v = r.getVatDetails().iterator().next(); + assert(r.getVatDetails().size() == 1); + assert(v.getCountry() == 80); + assert(v.getPercentage() == 70); + assert(v.getAmount() == 10); + assert(v.getVatId().equals("IUDGTE")); + + assert(r.getTypeOfSupplement() == 9); + assert(r.getNumberOfSupplements() == 2); + assert(r.getLuggageRestriction() != null); + + assert(r.getLuggageRestriction().getMaxHandLuggagePieces() == 2); + assert(r.getLuggageRestriction().getMaxNonHandLuggagePieces() == 1); + assert(r.getLuggageRestriction().getRegisteredLuggage() != null); + assert(r.getLuggageRestriction().getRegisteredLuggage().size() == 2); + + + Iterator il = r.getLuggageRestriction().getRegisteredLuggage().iterator(); + IRegisteredLuggage rl1 = null; + IRegisteredLuggage rl2 = null; + while (il.hasNext()) { + IRegisteredLuggage l = il.next(); + if (l.getRegistrationId().equals("IODHUV")) { + rl1 = l; + } else { + rl2 = l; + } + } + assert(rl1.getRegistrationId().equals("IODHUV")); + assert(rl1.getMaxWeight() == 20); + assert(rl1.getMaxSize() == 100); + assert(rl2.getRegistrationId().equals("XXDHUV")); + assert(rl2.getMaxWeight() == 21); + assert(rl2.getMaxSize() == 101); + assert(r.getInfoText().equals("reservation")); + assert(r.getExtension() != null); + + } + + + private void validate(ICarCarriageReservation r) { + + + assert(r.getToken() != null); + assert(UperEncoder.hexStringFromBytes(r.getToken().getToken()).equals("82DA")); + assert(r.getToken().getTokenProvider().equals("VDV")); + assert(r.getToken().getTokenSpecification().equals("TEST")); + + + assert(r.getTrain().equals("123")); + assert(r.getReference().equals("810123456789")); + assert(r.getProductOwner().equals("23456")); + assert(r.getProductId().equals("123456")); + assert(r.getServiceBrand().getServiceBrand() == 100); + assert(r.getServiceBrand().getServiceBrandAbbreviation().equals("AZ")); + assert(r.getServiceBrand().getServiceBrandDescription().equals("special train")); + + assert(r.getBeginLoading() != null); + assert(r.getEndLoading() != null); + + assert(r.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(r.getFromStation().equals("8100001")); + assert(r.getToStation().equals( "8100002")); + assert(r.getFromStationName().equals( "A-STATION")); + assert(r.getToStationName().equals( "B-STATION")); + + assert(r.getCoach().equals("21")); + assert(r.getPlace().equals("41")); + assert(r.getCompartmentDetails() != null); + + assert(r.getCompartmentDetails().getCoachType() == 1L); + assert(r.getCompartmentDetails().getCompartmentType() == 99L); + assert(r.getCompartmentDetails().getSpecialAllocation() == 50L); + assert(r.getCompartmentDetails().getCoachTypeDescr().equals("xwz")); + assert(r.getCompartmentDetails().getCompartmentTypeDescr().equals("xwz")); + assert(r.getCompartmentDetails().getSpecialAllocationDescr().equals("xwz")); + assert(r.getCompartmentDetails().getPosition().equals(ICompartmentPositionType.upperLevel)); + + assert(r.getNumberPlate().equals( "AD-DE-123")); + assert(r.getTrailerPlate().equals( "DX-AB-123")); + assert(r.getCarCategory() == 3L); + assert(r.getBoatCategory() == 5L); + assert(r.isTextileRoof() == false); + assert(r.getRoofRackType().equals(IRoofRackType.bicycleRack)); + assert(r.getRoofRackHeight() == 20L); + assert(r.getAttachedBoats() == 2L); + assert(r.getAttachedBicycles() == 1L); + assert(r.getAttachedSurfboards() == 2L); + assert(r.getLoadingListEntry() == 421L); + assert(r.getLoadingDeck().equals(ILoadingDeckType.upper)); + + assert(r.getCarriers()!= null); + assert(r.getCarriers().size() == 2); + Iterator i9 = r.getCarriers().iterator(); + assert(i9.next().equals("1080")); + assert(i9.next().equals("1181")); + + assert(r.getTariff() != null); + assert(r.getPriceType().equals(IPriceTypeType.travelPrice)); + assert(r.getPrice() == 12345L); + + assert(r.getVatDetails() != null); + + assert(r.getInfoText().equals("car carriage")); + assert(r.getExtension() != null); + + } + + public static int getIndexOfDifference(String s1, String s2) { + + if (s1 == null || s2 == null) return -1; + + char[] ca1 = null; + char[] ca2 = null; + + if (s1.length() > s2.length()) { + ca1 = s1.toCharArray(); + ca2 = s2.toCharArray(); + } else { + ca1 = s2.toCharArray(); + ca2 = s1.toCharArray(); + } + + int i = 0; + for (char c : ca2) { + if (c != ca1[i]) return i; + i++; + } + return 0; + } + + + +} -- cgit v1.2.3 From 4204b79b6fd1f783ac8c5282ea46d50b88cd0355 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Wed, 13 Apr 2022 17:48:04 +0200 Subject: unit test for fcb version 1 including all elements --- .../uic/barcode/ticket/api/asn/omv1/LineType.java | 14 +- .../ticket/api/utils/Api2OpenAsnEncoder.java | 20 +- .../barcode/ticket/api/utils/Asn2ApiDecoder.java | 3 +- .../ticket/api/utils/OpenAsn2ApiDecoder.java | 36 +- .../barcode/ticket/api/test/AllElementsTestV1.java | 1094 +++++++++++++++ .../barcode/ticket/api/test/AllElementsTestV3.java | 5 +- .../barcode/ticket/api/test/CarCarriageTestV3.java | 5 +- .../ticket/api/test/CounterMarkTimeZoneTestV3.java | 5 +- .../api/test/CustomerCardTimeZoneTestV1.java | 4 +- .../api/test/CustomerCardTimeZoneTestV3.java | 4 +- .../ticket/api/test/DelayConfirmationTestV3.java | 4 +- .../barcode/ticket/api/test/FipTimeZoneTestV1.java | 4 +- .../barcode/ticket/api/test/FipTimeZoneTestV3.java | 4 +- .../ticket/api/test/OpenTicketTimeZoneTestV1.java | 4 +- .../ticket/api/test/OpenTicketTimeZoneTestV3.java | 4 +- .../ticket/api/test/ParkingTimeZoneTestV1.java | 4 +- .../ticket/api/test/ParkingTimeZoneTestV3.java | 4 +- .../ticket/api/test/PassTimeZoneTestV1.java | 4 +- .../ticket/api/test/PassTimeZoneTestV3.java | 4 +- .../ticket/api/test/ReservationTimeZoneTestV1.java | 4 +- .../ticket/api/test/ReservationTimeZoneTestV3.java | 4 +- .../api/test/StationPassageTimeZoneTestV1.java | 4 +- .../api/test/StationPassageTimeZoneTestV3.java | 5 +- .../api/test/UperEncodeOpenTicketTestV1.java | 9 +- .../ticket/api/test/UperEncodePassTestV1.java | 9 +- .../api/test/UperEncodeTicketLinkTestV1.java | 3 +- .../ticket/api/test/VoucherTimeZoneTestV1.java | 9 +- .../ticket/api/test/VoucherTimeZoneTestV2.java | 11 +- .../ticket/api/test/VoucherTimeZoneTestV3.java | 11 +- .../test/testtickets/AllElementsTestTicketV1.java | 1409 ++++++++++++++++++++ 30 files changed, 2621 insertions(+), 83 deletions(-) create mode 100644 src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV1.java create mode 100644 src/test/java/org/uic/barcode/ticket/api/test/testtickets/AllElementsTestTicketV1.java (limited to 'src') diff --git a/src/main/java/org/uic/barcode/ticket/api/asn/omv1/LineType.java b/src/main/java/org/uic/barcode/ticket/api/asn/omv1/LineType.java index 290f0e6..eb9249a 100644 --- a/src/main/java/org/uic/barcode/ticket/api/asn/omv1/LineType.java +++ b/src/main/java/org/uic/barcode/ticket/api/asn/omv1/LineType.java @@ -127,8 +127,11 @@ public class LineType extends Object { } public byte[] getBinaryZoneId() { - - return binaryZoneId.toByteArray(); + if (binaryZoneId != null) { + return binaryZoneId.toByteArray(); + } else { + return null; + } } public void setCarrierNum(Long carrierNum) { @@ -177,8 +180,11 @@ public class LineType extends Object { } public void setBinaryZoneId(byte[] binaryZoneId) { - - this.binaryZoneId = new OctetString(binaryZoneId); + if (binaryZoneId != null && binaryZoneId.length > 0) { + this.binaryZoneId = new OctetString(binaryZoneId); + } else { + this.binaryZoneId = null; + } } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java index 835a324..6cf1673 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/Api2OpenAsnEncoder.java @@ -352,7 +352,10 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); - + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); + asnData.setReferenceNum(UicEncoderUtils.getNum(document.getReference())); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -564,6 +567,9 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setReferenceNum(UicEncoderUtils.getNum(document.getReference())); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -983,6 +989,8 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); asnData.setTicketReferenceNum(UicEncoderUtils.getNum(document.getTicketReference())); asnData.setTicketReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getTicketReference())); @@ -1366,6 +1374,10 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setProductOwnerNum(UicEncoderUtils.getNum(document.getProductOwner())); asnData.setProductOwnerIA5(UicEncoderUtils.getIA5NonNum(document.getProductOwner())); + asnData.setProductIdNum(UicEncoderUtils.getRestrictedNum(document.getProductId(),0,65535)); + asnData.setProductIdIA5(UicEncoderUtils.getIA5RestrictedNonNum(document.getProductId(),0,65535)); + + asnData.setReferenceNum(Asn1BigInteger.toAsn1(UicEncoderUtils.getNum(document.getReference()))); asnData.setReferenceIA5(UicEncoderUtils.getIA5NonNum(document.getReference())); @@ -2110,6 +2122,12 @@ public class Api2OpenAsnEncoder implements Api2AsnEncoder { asnData.setPointOfSale(encodeGeoCoordinate(data.getPointOfSale())); } + asnData.setCurrency(data.getCurrency()); + + if (data.getCurrencyFraction() != null) { + asnData.setCurrencyFract(data.getCurrencyFraction().longValue()); + } + return asnData; } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/Asn2ApiDecoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/Asn2ApiDecoder.java index e751f48..79acf75 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/Asn2ApiDecoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/Asn2ApiDecoder.java @@ -2,12 +2,13 @@ package org.uic.barcode.ticket.api.utils; import java.io.IOException; +import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.spec.IUicRailTicket; public interface Asn2ApiDecoder { - public IUicRailTicket decodeFromAsn (byte[] data) throws IOException; + public IUicRailTicket decodeFromAsn (byte[] data) throws IOException, EncodingFormatException; } diff --git a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java index 5f5ce4d..4cccb18 100644 --- a/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java +++ b/src/main/java/org/uic/barcode/ticket/api/utils/OpenAsn2ApiDecoder.java @@ -8,6 +8,7 @@ import java.util.Date; import java.util.Iterator; import java.util.List; +import org.uic.barcode.ticket.EncodingFormatException; import org.uic.barcode.ticket.api.asn.omv1.BerthDetailData; import org.uic.barcode.ticket.api.asn.omv1.CarCarriageReservationData; import org.uic.barcode.ticket.api.asn.omv1.CardReferenceType; @@ -132,8 +133,9 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { * @param asnUicRailTicketData the asn uic rail ticket data * @return the decoded uic rail ticket * @throws IOException Signals that an I/O exception has occurred. + * @throws EncodingFormatException */ - public IUicRailTicket decodeFromAsn (UicRailTicketData asnUicRailTicketData) throws IOException{ + public IUicRailTicket decodeFromAsn (UicRailTicketData asnUicRailTicketData) throws IOException, EncodingFormatException{ IUicRailTicket uicRailTicket = factory.createUicRailTicket(); @@ -149,8 +151,9 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { * @param data byte array of the asn.1 encoded FCB data * @return the decoded uic rail ticket * @throws IOException Signals that an I/O exception has occurred. + * @throws EncodingFormatException */ - public IUicRailTicket decodeFromAsn (byte[] data) throws IOException{ + public IUicRailTicket decodeFromAsn (byte[] data) throws IOException, EncodingFormatException{ UicRailTicketData asnUicRailTicketData = UicRailTicketData.decode(data); @@ -171,8 +174,9 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { * * @param uicRailTicket the uic rail ticket * @param asnUicRailTicketData the asn uic rail ticket data + * @throws EncodingFormatException */ - protected void populateFromAsn1Model(IUicRailTicket uicRailTicket, UicRailTicketData asnUicRailTicketData) { + protected void populateFromAsn1Model(IUicRailTicket uicRailTicket, UicRailTicketData asnUicRailTicketData) throws EncodingFormatException { if (asnUicRailTicketData.getExtension()!= null && !asnUicRailTicketData.getExtension().isEmpty()) { for (ExtensionData asnExtension : asnUicRailTicketData.getExtension()){ @@ -215,8 +219,9 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { * @param asnTransportDocuments the asn transport documents * @param uicRailTicket the uic rail ticket * @param issuingDate the issuing date + * @throws EncodingFormatException */ - protected void populateTravelDocuments(List asnTransportDocuments,IUicRailTicket uicRailTicket, Date issuingDate) { + protected void populateTravelDocuments(List asnTransportDocuments,IUicRailTicket uicRailTicket, Date issuingDate) throws EncodingFormatException { for ( DocumentData asnDocument : asnTransportDocuments){ @@ -1658,12 +1663,15 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { * @param asnDocument the asn document * @param issuingDate the issuing date * @return the i fip ticket + * @throws EncodingFormatException */ - protected IFipTicket convertFipTicket(FIPTicketData asnDocument , Date issuingDate) { + protected IFipTicket convertFipTicket(FIPTicketData asnDocument , Date issuingDate) throws EncodingFormatException { if (asnDocument == null) return null; IFipTicket document = factory.createFipTicket(); + + if(asnDocument.getClassCode()!=null){ document.setClassCode(ITravelClassType.valueOf(asnDocument.getClassCode().name())); } @@ -1671,7 +1679,16 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { document.setValidFrom(asnDocument.getValidFromDate(issuingDate)); document.setValidUntil(asnDocument.getValidUntilDate(issuingDate)); - + if (asnDocument.getCarrierNum()!=null && !asnDocument.getCarrierNum().isEmpty()){ + for(Long carrier :asnDocument.getCarrierNum()){ + document.addCarrier(carrier.toString()); + } + } + if (asnDocument.getCarrierIA5()!=null && !asnDocument.getCarrierIA5().isEmpty()){ + for(String carrier :asnDocument.getCarrierIA5()){ + document.addCarrier(carrier); + } + } document.setProductId(UicEncoderUtils.mapToString(asnDocument.getProductIdNum(),asnDocument.getProductIdIA5())); document.setProductOwner(UicEncoderUtils.mapToString(asnDocument.getProductOwnerNum(),asnDocument.getProductOwnerIA5())); @@ -2200,6 +2217,13 @@ public class OpenAsn2ApiDecoder implements Asn2ApiDecoder { issuingDetail.setPointOfSale(convertGeoCoordinate(asnIssuingDetail.getPointOfSale())); } + + issuingDetail.setCurrency(asnIssuingDetail.getCurrency()); + + if (asnIssuingDetail.getCurrencyFract() != null) { + issuingDetail.setCurrencyFraction(asnIssuingDetail.getCurrencyFract().intValue()); + } + } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV1.java new file mode 100644 index 0000000..216ef77 --- /dev/null +++ b/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV1.java @@ -0,0 +1,1094 @@ +package org.uic.barcode.ticket.api.test; + +import java.text.ParseException; +import java.util.Date; +import java.util.Iterator; +import java.util.TimeZone; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.logger.LoggerFactory; +import org.uic.barcode.ticket.EncodingFormatException; +import org.uic.barcode.ticket.api.asn.omv1.ConfirmationTypeType; +import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; +import org.uic.barcode.ticket.api.spec.IBerth; +import org.uic.barcode.ticket.api.spec.IBerthTypeType; +import org.uic.barcode.ticket.api.spec.ICarCarriageReservation; +import org.uic.barcode.ticket.api.spec.ICardReference; +import org.uic.barcode.ticket.api.spec.ICompartmentGenderType; +import org.uic.barcode.ticket.api.spec.ICompartmentPositionType; +import org.uic.barcode.ticket.api.spec.ICounterMark; +import org.uic.barcode.ticket.api.spec.ICustomerCard; +import org.uic.barcode.ticket.api.spec.ICustomerStatusDescription; +import org.uic.barcode.ticket.api.spec.IDelayConfirmation; +import org.uic.barcode.ticket.api.spec.IDocumentData; +import org.uic.barcode.ticket.api.spec.IDocumentExtension; +import org.uic.barcode.ticket.api.spec.IExtension; +import org.uic.barcode.ticket.api.spec.IFipTicket; +import org.uic.barcode.ticket.api.spec.IGenderType; +import org.uic.barcode.ticket.api.spec.IGeoCoordinateSystemType; +import org.uic.barcode.ticket.api.spec.IGeoUnitType; +import org.uic.barcode.ticket.api.spec.IHemisphereLatitudeType; +import org.uic.barcode.ticket.api.spec.IHemisphereLongitudeType; +import org.uic.barcode.ticket.api.spec.IIncludedOpenTicket; +import org.uic.barcode.ticket.api.spec.ILine; +import org.uic.barcode.ticket.api.spec.ILinkMode; +import org.uic.barcode.ticket.api.spec.ILoadingDeckType; +import org.uic.barcode.ticket.api.spec.IOpenTicket; +import org.uic.barcode.ticket.api.spec.IParkingGround; +import org.uic.barcode.ticket.api.spec.IPass; +import org.uic.barcode.ticket.api.spec.IPassengerType; +import org.uic.barcode.ticket.api.spec.IPolygone; +import org.uic.barcode.ticket.api.spec.IPriceTypeType; +import org.uic.barcode.ticket.api.spec.IRegionalValidity; +import org.uic.barcode.ticket.api.spec.IRegisteredLuggage; +import org.uic.barcode.ticket.api.spec.IReservation; +import org.uic.barcode.ticket.api.spec.IRoofRackType; +import org.uic.barcode.ticket.api.spec.IServiceType; +import org.uic.barcode.ticket.api.spec.IStationCodeTable; +import org.uic.barcode.ticket.api.spec.IStationPassage; +import org.uic.barcode.ticket.api.spec.ITariff; +import org.uic.barcode.ticket.api.spec.ITicketLink; +import org.uic.barcode.ticket.api.spec.ITicketType; +import org.uic.barcode.ticket.api.spec.ITimeRange; +import org.uic.barcode.ticket.api.spec.ITrainLink; +import org.uic.barcode.ticket.api.spec.ITravelClassType; +import org.uic.barcode.ticket.api.spec.ITraveler; +import org.uic.barcode.ticket.api.spec.IUicRailTicket; +import org.uic.barcode.ticket.api.spec.IValidityRange; +import org.uic.barcode.ticket.api.spec.IVatDetail; +import org.uic.barcode.ticket.api.spec.IViaStation; +import org.uic.barcode.ticket.api.spec.IVoucher; +import org.uic.barcode.ticket.api.spec.IZone; +import org.uic.barcode.ticket.api.test.testtickets.AllElementsTestTicketV1; +import org.uic.barcode.ticket.api.utils.Api2AsnEncoder; +import org.uic.barcode.ticket.api.utils.Api2OpenAsnEncoder; +import org.uic.barcode.ticket.api.utils.Asn2ApiDecoder; +import org.uic.barcode.ticket.api.utils.OpenAsn2ApiDecoder; + + +/** + * The Class CarCarriageTestV1. + * + * + * + */ +public class AllElementsTestV1 { + + + /** The decoder. */ + Asn2ApiDecoder decoder = new OpenAsn2ApiDecoder(); + + /** The encoder. */ + Api2AsnEncoder encoder = new Api2OpenAsnEncoder(); + + + TimeZone defaulttimeZone = null; + + /** + * Prepare tickets. + */ + @Before public void prepare() { + + LoggerFactory.setActivateConsoleLog(true); + + defaulttimeZone = TimeZone.getDefault(); + + + } + + /** + * clean up + */ + @After public void resetTimeZone() { + TimeZone.setDefault(defaulttimeZone); + } + + + /** + * Test encode test tickets in UTC and decode in CET. + * + * @throws IllegalArgumentException the illegal argument exception + * @throws IllegalAccessException the illegal access exception + * @throws ParseException + */ + @Test public void testDelayConfirmation() throws IllegalArgumentException, IllegalAccessException, ParseException { + + + defaulttimeZone = TimeZone.getDefault(); + //encode in UTC time zone + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + + IUicRailTicket ticketDecoded = null; + try { + + UicRailTicketData rtd = AllElementsTestTicketV1.getUicTestTicket(); + byte[] content = UperEncoder.encode(rtd); + ticketDecoded = decoder.decodeFromAsn(content); + } catch (Exception e) { + assert(false); + } + + + + + byte[] encoded = null; + try { + encoded = encoder.encode(ticketDecoded); + } catch (EncodingFormatException e) { + assert(false); + } + + //decode ticket again + IUicRailTicket ticketDecoded2 = null; + try { + ticketDecoded2 = decoder.decodeFromAsn(encoded); + } catch (Exception e) { + assert(false); + } + + assert (ticketDecoded2 != null); + + //validate content + validateTicketContent(ticketDecoded2); + + + + + TimeZone.setDefault(defaulttimeZone); + } + + + + + + + private void validateTicketContent(IUicRailTicket ticket) { + assert (ticket != null); + + assert(ticket.getControlDetails() != null); + assert(ticket.getControlDetails().isAgeCheckRequired() == false); + assert(ticket.getControlDetails().isIdentificationByPassportId() == false); + assert(ticket.getControlDetails().isIdentificationByIdCard() == false); + assert(ticket.getControlDetails().isOnlineValidationRequired() == false); + assert(ticket.getControlDetails().getIdentificationItem() == 12); + assert(ticket.getControlDetails().isPassportValidationRequired() == false); + assert(ticket.getControlDetails().getRandomDetailedValidationRequired() == 50); + assert(ticket.getControlDetails().getExtension() != null); + assert(ticket.getControlDetails().isReductionCardCheckRequired() == false); + assert(ticket.getControlDetails().getInfoText().equals("control")); + assert(ticket.getControlDetails().getIdentificationByCardReference() != null); + + assert(ticket.getControlDetails().getIdentificationByCardReference().size() == 1); + ICardReference cr = ticket.getControlDetails().getIdentificationByCardReference().iterator().next(); + assert(cr != null); + assert(cr.getCardId().equals("5678")); + assert(cr.getCardIssuer().equals("1234")); + assert(cr.getCardName().equals("testcard")); + assert(cr.getCardType() == 123); + assert(cr.getLeadingCardId().equals("3456")); + assert(cr.getTrailingCardId().equals("100")); + + + assert(ticket.getControlDetails().getLinkedTickets() != null); + + ITicketLink tl = ticket.getControlDetails().getLinkedTickets().iterator().next(); + + assert(tl.getIssuer().equals("XYZ")); + assert(tl.getIssuerPNR().equals("LDWDUR45")); + assert(tl.getProductOwner().equals("IEFHU")); + assert(tl.getLinkMode().equals(ILinkMode.issuedTogether)); + assert(tl.getReference().equals("KDJET")); + assert(tl.getTicketType().equals(ITicketType.openTicket)); + + assert(ticket.getExtensions() != null); + assert(ticket.getExtensions().size() == 2); + Iterator it = ticket.getExtensions().iterator(); + IExtension e0 = it.next(); + IExtension e1 = it.next(); + assert(e0.getId().equals("1")); + assert(UperEncoder.hexStringFromBytes(e0.getBinarydata()).equals("82DA")); + assert(e1.getId().equals("2")); + assert(UperEncoder.hexStringFromBytes(e1.getBinarydata()).equals("83DA")); + + + assert(ticket.getIssuerDetails() != null); + + assert(ticket.getIssuerDetails().isActivated() == true); + assert(ticket.getIssuerDetails().getCurrency().equals("SRF")); + assert(ticket.getIssuerDetails().getCurrencyFraction() == 3L); + assert(ticket.getIssuerDetails().getExtension() != null); + assert(ticket.getIssuerDetails().getIssuedOnLine() == 12); + assert(ticket.getIssuerDetails().getIssuedOnTrain().equals("123")); + assert(ticket.getIssuerDetails().getIssuerName().equals("name")); + assert(ticket.getIssuerDetails().getIssuer().equals("1")); + assert(ticket.getIssuerDetails().getIssuerPNR().equals("issuerTestPNR")); + assert(ticket.getIssuerDetails().getIssuingDate() != null); + assert(ticket.getIssuerDetails().isSecurePaperTicket() == false); + assert(ticket.getIssuerDetails().getSecurityProvider().equals("1")); + assert(ticket.getIssuerDetails().isSpecimen() == true); + assert(ticket.getIssuerDetails().getPointOfSale() != null); + assert(ticket.getIssuerDetails().getPointOfSale().getUnit().equals(IGeoUnitType.microDegree)); + assert(ticket.getIssuerDetails().getPointOfSale().getSystem().equals(IGeoCoordinateSystemType.wgs84)); + assert(ticket.getIssuerDetails().getPointOfSale().getAccuracy().equals(IGeoUnitType.microDegree)); + assert(ticket.getIssuerDetails().getPointOfSale().getHemisphereLatitude().equals(IHemisphereLatitudeType.east)); + assert(ticket.getIssuerDetails().getPointOfSale().getHemisphereLongitude().equals(IHemisphereLongitudeType.north)); + assert(ticket.getIssuerDetails().getPointOfSale().getLatitude() == 269); + assert(ticket.getIssuerDetails().getPointOfSale().getLongitude() == 105); + + assert(ticket.getDocumentData() != null); + assert(!ticket.getDocumentData().isEmpty()); + + Iterator i2 = ticket.getDocumentData().iterator(); + + int numberOfDocuments = 0; + while (i2.hasNext()) { + numberOfDocuments++; + IDocumentData d1 = i2.next(); + if (d1 instanceof IReservation) { + validate((IReservation) d1); + } else if (d1 instanceof ICarCarriageReservation) { + validate((ICarCarriageReservation) d1); + } else if (d1 instanceof IPass) { + validate((IPass) d1); + } else if (d1 instanceof IOpenTicket) { + validate((IOpenTicket) d1); + } else if (d1 instanceof ICounterMark) { + validate((ICounterMark) d1); + } else if (d1 instanceof IStationPassage) { + validate((IStationPassage) d1); + } else if (d1 instanceof ICustomerCard) { + validate((ICustomerCard) d1); + } else if (d1 instanceof IDelayConfirmation) { + validate((IDelayConfirmation) d1); + } else if (d1 instanceof IParkingGround) { + validate((IParkingGround) d1); + } else if (d1 instanceof IFipTicket) { + validate((IFipTicket) d1); + } else if (d1 instanceof IVoucher) { + validate((IVoucher) d1); + } else if (d1 instanceof IDocumentExtension) { + assert(((IDocumentExtension) d1).getId() != null); + } + } + assert(numberOfDocuments == 11); + + + assert(ticket.getTravelerDetails() != null); + assert(ticket.getTravelerDetails().getGroupName().equals("myGroup")); + assert(ticket.getTravelerDetails().getPreferredLanguage().equals("EN")); + assert(ticket.getTravelerDetails().getTravelers() != null); + assert(ticket.getTravelerDetails().getTravelers().size() == 1); + + ITraveler tr = ticket.getTravelerDetails().getTravelers().iterator().next(); + + assert(tr.getIDCardCountry() == 103); + assert(tr.getPassportCountry() == 102); + assert(tr.getCountryOfResidence() == 101); + assert(tr.getCustomerId().equals("DZE5gT")); + assert(tr.getDateOfBirth() != null); + assert(tr.getFirstName().equals("John")); + assert(tr.getGender().equals(IGenderType.male)); + assert(tr.getIdCard().equals("12345")); + assert(tr.getLastName().equals("Dow")); + assert(tr.getPassengerType().equals(IPassengerType.senior)); + assert(tr.isPassengerWithReducedMobility() == false); + assert(tr.getPassportId().equals("JDTS")); + assert(tr.getSecondName().equals("Little")); + assert(tr.getTitle().equals("PhD")); + assert(tr.isTicketHolder() == true); + assert(tr.getStatusCollection() != null); + assert(tr.getStatusCollection().size() == 1); + ICustomerStatusDescription csd = tr.getStatusCollection().iterator().next(); + assert(csd.getStatus() == 1); + assert(csd.getDescription().equals("senior")); + + } + + + private void validate(ICounterMark t) { + + assert(t != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals( "23456")); + assert(t.getProductId().equals( "23456")); + assert(t.getTicketReference().equals( "810123456789")); + assert(t.getNumberOfCountermark() == 12L); + assert(t.getTotalOfCountermarks() == 24L); + assert(t.getGroupName().equals( "groupName")); + assert(t.isReturnIncluded() == false); + + assert(t.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(t.getFromStation().equals("8100001")); + assert(t.getToStation().equals( "8100002")); + assert(t.getFromStationName().equals( "A-STATION")); + assert(t.getToStationName().equals( "B-STATION")); + + assert(t.getValidRegionDesc().equals("From A to B via C")); + + assert(t.getValidRegionList() != null); + assert(t.getValidRegionList().size() == 1); + + + assert(t.getReturnDescription() != null); + assert(t.getReturnDescription().getFromStation().equals("8100001")); + assert(t.getReturnDescription().getToStation().equals( "8100002")); + assert(t.getReturnDescription().getFromStationName().equals( "A-STATION")); + assert(t.getReturnDescription().getToStationName().equals( "B-STATION")); + assert(t.getReturnDescription().getValidRegionDesc().equals( "return")); + assert(t.getReturnDescription().getValidRegionList() != null); + assert(t.getReturnDescription().getValidRegionList().size() == 1); + + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + + assert(t.getClassCode().equals(ITravelClassType.first)); + + assert(t.getIncludedCarriers() != null); + assert(t.getIncludedCarriers().size() == 2); + assert(t.getIncludedCarriers().contains("1080")); + assert(t.getIncludedCarriers().contains("1181")); + + + assert(t.getIncludedServiceBrands() != null); + assert(t.getIncludedServiceBrands().size() == 2); + Iterator i4 = t.getIncludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + assert(t.getExcludedServiceBrands() != null); + assert(t.getExcludedServiceBrands().size() == 2); + i4 = t.getExcludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + + assert (t.getInfoText().equals("counterMark")); + + assert(t.getExtension() != null); + + + } + + private void validate(IDelayConfirmation t) { + assert(t != null); + + assert(t.getTrain().equals("100")); + assert(t.getArrivalDate() != null); + assert(t.getReference().equals("ABDJ12345")); + assert(t.getStation().equals("DJE")); + assert(t.getDelay() == 31); + assert(t.isTrainCancelled() == false); + assert(t.getConfirmationType() == ConfirmationTypeType.travelerDelayConfirmation.ordinal()); + assert(t.getLinkedTickets() != null); + assert(t.getLinkedTickets().size() == 1); + ITicketLink tl = t.getLinkedTickets().iterator().next(); + assert(tl.getReference().equals("KDJET")); + assert(tl.getIssuer().equals( "XYZ")); + assert(tl.getIssuerPNR().equals( "LDWDUR45")); + assert(tl.getProductOwner().equals( "IEFHU")); + assert(tl.getTicketType().equals(ITicketType.openTicket)); + assert(tl.getLinkMode().equals( ILinkMode.issuedTogether)); + + assert(t.getInfoText().equals( "delay confirmation")); + assert(t.getExtension() != null); + + } + + private void validate(ICustomerCard c) { + assert(c != null); + assert (c.getExtension() != null); + assert (c.getCustomer() != null); + assert (c.getCustomer() != null); + + assert (c.getCardId().equals("2345")); + assert (c.getValidFrom() != null); + assert (c.getValidUntil() != null); + assert (c.getClassCode().equals(ITravelClassType.second)); + assert (c.getCardType() == 15); + assert (c.getCardTypeDescr().equals( "RAILPLUS")); + assert (c.getCustomerStatus() == 1); + assert (c.getCustomerStatusDescr().equals( "gold")); + assert (c.getIncludedServices() != null); + assert (c.getIncludedServices().size() == 2); + Iterator i3 = c.getIncludedServices().iterator(); + assert(i3.next() == 1); + assert(i3.next() == 2); + + } + + private void validate(IVoucher v) { + assert(v != null); + assert (v.getExtension() != null); + + assert(v.getReference().equals("810123456789")); + assert(v.getProductOwner().equals("COFFEEMACHINE")); + assert(v.getProductId().equals("23456")); + + assert(v.getValidFrom() != null); + assert(v.getValidUntil() != null); + assert(v.getAmount() == 500); + assert(v.getType() == 123); + assert(v.getInfoText().equals("coffee voucher")); + + } + + private void validate(IStationPassage t) { + assert(t != null); + assert(t.getExtension() != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals("23456")); + assert(t.getProductId().equals("23456")); + + assert(t.getProductName().equals("passage")); + assert(t.getStationCodeTable().equals(IStationCodeTable.stationUIC)); + assert(t.getStations() != null); + assert(t.getStations().size() == 2); + assert(t.getStations().contains("8200001")); + assert(t.getStations().contains("AMS")); + assert(t.getStationNames() != null); + assert(t.getStationNames().size() == 1); + assert(t.getStationNames().iterator().next().equals("Amsterdam")); + assert(t.getAreaCodes() != null); + assert(t.getAreaCodes().size() == 2); + assert(t.getAreaCodes().contains("AMS")); + assert(t.getAreaCodes().contains("8200001")); + assert(t.getAreaNames() != null); + assert(t.getAreaNames().size() == 1); + assert(t.getAreaNames().contains("Amsterdam")); + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + assert(t.getNumberOfdaysAllowed() == 5); + + } + + private void validate(IParkingGround t) { + assert(t != null); + assert(t.getExtension() != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals("23456")); + assert(t.getProductId().equals("23456")); + + + assert(t.getParkingGroundId().equals( "IA5")); + assert(t.getFromParkingDate() != null); + assert(t.getToParkingDate() != null); + + + assert(t.getAccessCode().equals( "4ga")); + assert(t.getLocation().equals( "Parking Frankfurt Main West")); + assert(t.getStationCodeTable().equals(IStationCodeTable.stationUIC)); + assert(t.getStation().equals( "8000001")); + assert(t.getSpecialInformation().equals( "outdoor parking")); + assert(t.getEntryTrack().equals( "left")); + assert(t.getNumberPlate().equals( "AA-DE-12345")); + assert(t.getPrice() == 500); + assert(t.getVatDetails() != null); + assert(t.getVatDetails().size() == 1); + + + } + + private void validate(IFipTicket t) { + assert(t != null); + assert(t.getExtension() != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals("23456")); + assert(t.getProductId().equals("23456")); + + + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + assert(t.getActivatedDays() != null); + assert(t.getActivatedDays().size() == 4); + Iterator i5 = t.getActivatedDays().iterator(); + assert(i5.next() != null); + assert(i5.next() != null); + assert(i5.next() != null); + assert(i5.next() != null); + + + + assert(t.getCarriers()!= null); + assert(t.getCarriers().size() == 2); + assert(t.getCarriers().contains("1080")); + assert(t.getCarriers().contains("1181")); + + + assert(t.getNumberOfTravelDates() == 8); + assert(t.isIncludesSupplements() == true); + assert(t.getClassCode().equals(ITravelClassType.first)); + + } + + private void validate(IOpenTicket t) { + + assert (t != null); + + assert(t.getReference().equals("810123456789")); + assert(t.getProductOwner().equals( "23456")); + assert(t.getProductId().equals( "23456")); + assert(t.getExternalIssuer() == 12); + assert(t.getAuthorizationCode() == 13); + assert(t.isReturnIncluded() == false); + + assert(t.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(t.getFromStation().equals("8100001")); + assert(t.getToStation().equals( "8100002")); + assert(t.getFromStationName().equals( "A-STATION")); + assert(t.getToStationName().equals( "B-STATION")); + + assert(t.getValidRegionDesc().equals("From A to B via C")); + + assert (t.getValidRegionList() != null); + assert(t.getValidRegionList().size() == 5); + Iterator irv = t.getValidRegionList().iterator(); + int checks = 0; + while (irv.hasNext()) { + IRegionalValidity v = irv.next(); + if (v instanceof IZone) { + validateRegion((IZone) v); + checks++; + } else if (v instanceof IViaStation) { + validateRegion((IViaStation) v); + checks++; + } else if (v instanceof ITrainLink) { + validateRegion((ITrainLink) v); + checks++; + } else if (v instanceof IPolygone) { + validateRegion((IPolygone) v); + checks++; + } else if (v instanceof ILine) { + validateRegion((ILine) v); + checks++; + } + } + assert(checks == 5); + + assert(t.getReturnDescription() != null); + + assert(t.getReturnDescription().getFromStation().equals("8100001")); + assert(t.getReturnDescription().getToStation().equals( "8100002")); + assert(t.getReturnDescription().getFromStationName().equals( "A-STATION")); + assert(t.getReturnDescription().getToStationName().equals( "B-STATION")); + assert(t.getReturnDescription().getValidRegionDesc().equals( "return")); + assert(t.getReturnDescription().getValidRegionList() != null); + assert(t.getReturnDescription().getValidRegionList().size() == 1); + + assert(t.getValidFrom() != null); + assert(t.getValidUntil() != null); + + assert(t.getActivatedDays() != null); + assert(t.getActivatedDays().size() == 2); + + assert(t.getClassCode().equals(ITravelClassType.first)); + assert(t.getServiceLevel().equals("A")); + + assert(t.getIncludedCarriers() != null); + assert(t.getIncludedCarriers().size() == 2); + assert(t.getIncludedCarriers().contains("1080")); + assert(t.getIncludedCarriers().contains("1181")); + + + assert(t.getIncludedServiceBrands() != null); + assert(t.getIncludedServiceBrands().size() == 2); + Iterator i4 = t.getIncludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + assert(t.getExcludedServiceBrands() != null); + assert(t.getExcludedServiceBrands().size() == 2); + i4 = t.getExcludedServiceBrands().iterator(); + assert(i4.next() == 108); + assert(i4.next() == 118); + + + assert(t.getTariffs() != null); + assert(t.getTariffs().size() == 1); + + assert (t.getPrice() == 12345); + assert (t.getVatDetails() != null); + assert (t.getVatDetails().size() == 1); + + assert (t.getInfoText().equals("openTicketInfo")); + + assert (t.getIncludedAddOns() != null); + assert (t.getIncludedAddOns().size() == 1); + validate(t.getIncludedAddOns().iterator().next()); + + assert(t.getLuggageRestriction() != null); + + + assert(t.getExtension() != null); + + } + + private void validateRegion(ITrainLink t) { + + assert (t != null); + + assert(t.getTrain().equals("12345")); + assert(t.getDepartureDateTime() != null); + assert(t.getFromStation().equals("8100001")); + + assert(t.getToStation().equals( "8100002")); + assert(t.getFromStationName().equals( "A-STATION")); + assert(t.getToStationName().equals( "B-STATION")); + + } + + private void validateRegion(IPolygone p) { + + assert(p.getEdges() != null); + assert(p.getEdges().size() == 3); + + } + + private void validateRegion(IZone z) { + + assert(z != null); + + assert(z.getCarrier().equals("1080")); + assert(z.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(z.getEntryStation().equals( "1234")); + assert(z.getTerminatingStation().equals( "2345")); + assert(z.getCity() == 123456); + assert(z.getZoneIds() != null); + assert(z.getZoneIds().size() == 2); + Iterator iz = z.getZoneIds().iterator(); + assert(iz.next() == 100); + assert(iz.next() == 200); + + assert(UperEncoder.hexStringFromBytes(z.getBinaryZoneId()).equals("82DA")); + assert(z.getNUTScode().equals("DE4711")); + + } + + private void validateRegion(ILine z) { + + + assert(z.getCarrier().equals("1080")); + assert(z.getStationCodeTable().equals(IStationCodeTable.stationERA)); + + assert(z.getEntryStation().equals( "1234")); + + assert(z.getTerminatingStation().equals( "2345")); + assert(z.getCity() == 123456); + assert(z.getLineIds() != null); + assert(z.getLineIds().size() == 2); + Iterator iz = z.getLineIds().iterator(); + assert(iz.next() == 100); + assert(iz.next() == 200); + + + } + + private void validateRegion(IViaStation t) { + + assert( t != null); + + assert(t.getRoute() != null); + + assert(t.getRoute().size() == 4); + + Iterator iv = t.getRoute().iterator(); + IViaStation v1 = iv.next(); + IViaStation v2 = iv.next(); + IViaStation v3 = iv.next(); + IViaStation v4 = iv.next(); + + assert(v1.getStation().equals("123455")); + assert(v1.isBorder() == false); + + assert(v2.getStation().equals("123456")); + assert(v2.isBorder() == false); + + assert(v3.getAlternativeRoutes() != null); + assert(v3.getAlternativeRoutes().size() == 2); + Iterator ari = v3.getAlternativeRoutes().iterator(); + IViaStation ar1 = ari.next(); + IViaStation ar2 = ari.next(); + assert(ar1.getRoute().size() == 2); + assert(ar1.getRoute().iterator().next().getStation().equals("23455")); + assert(ar2.getRoute() != null); + assert(ar2.getRoute().size() == 2); + assert(ar2.getRoute().iterator().next().getStation().equals("3455")); + + assert(v4.getStation().equals("123457")); + + assert(t.isBorder() == false); + + assert(t.getSeriesId() == 999); + assert(t.getRouteId() == 21); + + + } + + private void validate(IIncludedOpenTicket d1) { + + assert(d1.getProductOwner().equals("23456")); + assert(d1.getProductId().equals("23456")); + assert(d1.getExternalIssuer() == 12); + assert(d1.getAuthorizationCode() == 13); + assert(d1.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(d1.getValidRegionList() != null); + assert(d1.getValidRegionList().size() == 1); + assert(d1.getValidFrom() != null); + assert(d1.getValidUntil() != null); + assert(d1.getClassCode().equals(ITravelClassType.second)); + assert(d1.getServiceLevel().equals("A")); + + assert(d1.getIncludedCarriers() != null); + assert(d1.getIncludedCarriers().size() == 2); + assert(d1.getIncludedCarriers().contains("1080")); + assert(d1.getIncludedCarriers().contains("1181")); + + assert(d1.getIncludedServiceBrands() != null); + assert(d1.getIncludedServiceBrands().size() == 2); + assert(d1.getIncludedServiceBrands().contains(108)); + assert(d1.getIncludedServiceBrands().contains(118)); + + + assert(d1.getExcludedServiceBrands() != null); + assert(d1.getExcludedServiceBrands().size() == 2); + assert(d1.getExcludedServiceBrands().contains(108)); + assert(d1.getExcludedServiceBrands().contains(118)); + + + assert(d1.getTariffs() != null); + assert(d1.getTariffs().size() == 1); + + assert(d1.getInfoText().equals("included ticket")); + + assert(d1.getExtension() != null); + + + + } + + private void validate(IPass p) { + + + assert(p.getReference().equals("810123456789")); + assert(p.getProductOwner().equals( "23456")); + assert(p.getProductId().equals( "23456")); + assert(p.getPassType() == 2); + assert(p.getPassDescription().equals( "Eurail FlexPass")); + assert(p.getClassCode().equals(ITravelClassType.first)); + assert(p.getValidFrom() != null); + assert(p.getValidUntil() != null); + assert(p.getValidityDetails() != null); + + assert(p.getValidityDetails() != null); + assert(p.getValidityDetails().getValidityRanges().size() == 1); + IValidityRange vr = p.getValidityDetails().getValidityRanges().iterator().next(); + assert(vr.getFromDate() != null); + assert(vr.getUntilDate() != null); + + assert(p.getValidityDetails().getTimeRanges() != null); + ITimeRange tr = p.getValidityDetails().getTimeRanges().iterator().next(); + assert(tr.getFromTime() == 6); + assert(tr.getUntilTime() == 9); + + assert(p.getNumberOfValidityDays() == 5); + + assert(p.getNumberOfPossibleTrips() == 3); + assert(p.getNumberOfDaysOfTravel() == 10); + assert(p.getActivatedDays() != null); + assert(p.getActivatedDays().size() == 2); + + + assert(p.getCountries() != null); + assert(p.getCountries().size() == 2); + Iterator i6 = p.getCountries().iterator(); + assert(i6.next() == 10); + assert(i6.next() == 20); + + assert(p.getIncludedCarriers() != null); + assert(p.getIncludedCarriers().size() == 2); + assert(p.getIncludedCarriers().contains("1080")); + assert(p.getIncludedCarriers().contains("1181")); + + assert(p.getIncludedServiceBrands() != null); + assert(p.getIncludedServiceBrands().size() == 2); + assert(p.getIncludedServiceBrands().contains(108)); + assert(p.getIncludedServiceBrands().contains(118)); + + + assert(p.getExcludedServiceBrands() != null); + assert(p.getExcludedServiceBrands().size() == 2); + assert(p.getExcludedServiceBrands().contains(108)); + assert(p.getExcludedServiceBrands().contains(118)); + + + + assert(p.getExcludedCarriers() != null); + assert(p.getExcludedCarriers().size() == 2); + assert(p.getExcludedCarriers().contains("1080")); + assert(p.getExcludedCarriers().contains("1181")); + + + + + + assert(p.getValidRegionList() != null); + assert(p.getValidRegionList().size() == 1); + assert(p.getTariffs() != null); + assert(p.getTariffs().size() == 1); + assert(p.getPrice() == 10000); + assert(p.getVatDetails() != null); + assert(p.getVatDetails().size() == 1); + assert(p.getInfoText().equals("pass info")); + assert (p.getExtension() != null); + + + } + + private void validate(IReservation r) { + + assert(r.getTrain().equals("12345")); + assert(r.getDepartureDate() != null); + assert(r.getReference().equals("810123456789")); + assert(r.getProductOwner().equals("23456")); + + assert(r.getProductId().equals("23456")); + assert(r.getServiceBrand().getServiceBrand() == 12); + assert(r.getServiceBrand().getServiceBrandAbbreviation().equals("TGV")); + assert(r.getServiceBrand().getServiceBrandDescription().equals("Lyria")); + assert(r.getService().equals(IServiceType.couchette)); + + assert(r.getStationCodeTable().equals(IStationCodeTable.stationUIC)); + assert(r.getFromStation().equals("8100001")); + assert(r.getToStation().equals( "8100002")); + assert(r.getFromStationName().equals( "A-STATION")); + assert(r.getToStationName().equals( "B-STATION")); + assert(r.getDepartureDate() != null); + assert(r.getArrivalDate() != null); + assert(r.getCarriers()!= null); + assert(r.getCarriers().size() == 2); + Iterator i8 = r.getCarriers().iterator(); + assert(i8.next().equals("1080")); + assert(i8.next().equals("1181")); + + + assert(r.getClassCode().equals(ITravelClassType.first)); + assert(r.getServiceLevel().equals("A")); + + assert(r.getPlaces() != null); + assert(r.getPlaces().getCoach().equals("31A")); + assert(r.getPlaces().getPlaceString().equals("31-47")); + assert(r.getPlaces().getPlaceDescription().equals("Window")); + assert(r.getPlaces().getPlaces() != null); + assert(r.getPlaces().getPlaces().size() == 4); + Iterator is = r.getPlaces().getPlaces().iterator(); + assert(is.next().equals("31")); + assert(is.next().equals("32")); + + + assert(r.getAdditionalPlaces() != null); + assert(r.getBicyclePlaces() != null); + + + assert(r.getCompartmentDetails() != null); + assert(r.getCompartmentDetails().getCoachType() == 1); + assert(r.getCompartmentDetails().getCompartmentType() == 99); + assert(r.getCompartmentDetails().getSpecialAllocation() == 50); + assert(r.getCompartmentDetails().getCoachTypeDescr().equals("xwz")); + assert(r.getCompartmentDetails().getCompartmentTypeDescr().equals( "xwz")); + assert(r.getCompartmentDetails().getSpecialAllocationDescr().equals( "xwz")); + assert(r.getCompartmentDetails().getPosition().equals(ICompartmentPositionType.upperLevel)); + + assert(r.getNumberOfOverbooked() == 200); + assert(r.getBerths() != null); + assert(r.getBerths().size() == 1); + IBerth b = r.getBerths().iterator().next(); + + assert(b.getType().equals(IBerthTypeType.single)); + assert(b.getGender().equals(ICompartmentGenderType.female)); + assert(b.getNumberOfBerths() == 999); + + + assert(r.getTariffs() != null); + assert(r.getTariffs().size() == 1); + ITariff t = r.getTariffs().iterator().next(); + assert(t.getNumberOfPassengers() == 1); + + + assert(t.getPassengerType().equals(IPassengerType.senior) ); + assert(t.getAgeBelow() == 40); + assert(t.getAgeAbove() == 60); + assert(t.getTravelerIds() != null); + assert(t.getTravelerIds().size() == 1); + assert(t.getTravelerIds().iterator().next() == 1); + + assert(t.isRestrictedToCountryOfResidence() == false); + assert(t.getRestrictedToRouteSection() != null); + assert(t.getRestrictedToRouteSection().getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(t.getRestrictedToRouteSection().getFromStation().equals( "123")); + assert(t.getRestrictedToRouteSection().getToStation().equals( "234")); + assert(t.getRestrictedToRouteSection().getFromStationName().equals( "A")); + assert(t.getRestrictedToRouteSection().getToStationName().equals( "B")); + + assert(t.getSeriesDataDetails() != null); + assert(t.getSeriesDataDetails().getSupplyingCarrier() == 2345); + assert(t.getSeriesDataDetails().getOfferIdentification() == 99); + assert(t.getSeriesDataDetails().getSeries() == 23456); + + + assert(t.getTariffId().equals( "72")); + assert(t.getTariffDescription().equals( "Leasure Fare")); + assert(t.getReductionCards() != null); + assert(t.getReductionCards().size() == 1); + ICardReference rc = t.getReductionCards().iterator().next(); + + assert(rc.getCardIssuer().equals( "1234")); + assert(rc.getCardId().equals( "5678")); + assert(rc.getCardName().equals( "testcard")); + assert(rc.getCardType() == 123); + assert(rc.getLeadingCardId().equals("3456")); + assert(rc.getTrailingCardId().equals("100")); + + + assert(r.getPriceType().equals(IPriceTypeType.travelPrice)); + assert(r.getPrice() == 12345); + assert(r.getVatDetails() != null); + IVatDetail v = r.getVatDetails().iterator().next(); + assert(r.getVatDetails().size() == 1); + assert(v.getCountry() == 80); + assert(v.getPercentage() == 70); + assert(v.getAmount() == 10); + assert(v.getVatId().equals("IUDGTE")); + + assert(r.getTypeOfSupplement() == 9); + assert(r.getNumberOfSupplements() == 2); + assert(r.getLuggageRestriction() != null); + + assert(r.getLuggageRestriction().getMaxHandLuggagePieces() == 2); + assert(r.getLuggageRestriction().getMaxNonHandLuggagePieces() == 1); + assert(r.getLuggageRestriction().getRegisteredLuggage() != null); + assert(r.getLuggageRestriction().getRegisteredLuggage().size() == 2); + + + Iterator il = r.getLuggageRestriction().getRegisteredLuggage().iterator(); + IRegisteredLuggage rl1 = null; + IRegisteredLuggage rl2 = null; + while (il.hasNext()) { + IRegisteredLuggage l = il.next(); + if (l.getRegistrationId().equals("IODHUV")) { + rl1 = l; + } else { + rl2 = l; + } + } + assert(rl1.getRegistrationId().equals("IODHUV")); + assert(rl1.getMaxWeight() == 20); + assert(rl1.getMaxSize() == 100); + assert(rl2.getRegistrationId().equals("XXDHUV")); + assert(rl2.getMaxWeight() == 21); + assert(rl2.getMaxSize() == 101); + assert(r.getInfoText().equals("reservation")); + assert(r.getExtension() != null); + + } + + + private void validate(ICarCarriageReservation r) { + + + assert(r.getToken() != null); + assert(UperEncoder.hexStringFromBytes(r.getToken().getToken()).equals("82DA")); + assert(r.getToken().getTokenProvider().equals("VDV")); + assert(r.getToken().getTokenSpecification().equals("TEST")); + + + assert(r.getTrain().equals("123")); + assert(r.getReference().equals("810123456789")); + assert(r.getProductOwner().equals("23456")); + assert(r.getProductId().equals("23456")); + assert(r.getServiceBrand().getServiceBrand() == 100); + assert(r.getServiceBrand().getServiceBrandAbbreviation().equals("AZ")); + assert(r.getServiceBrand().getServiceBrandDescription().equals("special train")); + + assert(r.getBeginLoading() != null); + assert(r.getEndLoading() != null); + + assert(r.getStationCodeTable().equals(IStationCodeTable.stationERA)); + assert(r.getFromStation().equals("8100001")); + assert(r.getToStation().equals( "8100002")); + assert(r.getFromStationName().equals( "A-STATION")); + assert(r.getToStationName().equals( "B-STATION")); + + assert(r.getCoach().equals("21")); + assert(r.getPlace().equals("41")); + assert(r.getCompartmentDetails() != null); + + assert(r.getCompartmentDetails().getCoachType() == 1L); + assert(r.getCompartmentDetails().getCompartmentType() == 99L); + assert(r.getCompartmentDetails().getSpecialAllocation() == 50L); + assert(r.getCompartmentDetails().getCoachTypeDescr().equals("xwz")); + assert(r.getCompartmentDetails().getCompartmentTypeDescr().equals("xwz")); + assert(r.getCompartmentDetails().getSpecialAllocationDescr().equals("xwz")); + assert(r.getCompartmentDetails().getPosition().equals(ICompartmentPositionType.upperLevel)); + + assert(r.getNumberPlate().equals( "AD-DE-123")); + assert(r.getTrailerPlate().equals( "DX-AB-123")); + assert(r.getCarCategory() == 3L); + assert(r.getBoatCategory() == 5L); + assert(r.isTextileRoof() == false); + assert(r.getRoofRackType().equals(IRoofRackType.bicycleRack)); + assert(r.getRoofRackHeight() == 20L); + assert(r.getAttachedBoats() == 2L); + assert(r.getAttachedBicycles() == 1L); + assert(r.getAttachedSurfboards() == 2L); + assert(r.getLoadingListEntry() == 421L); + assert(r.getLoadingDeck().equals(ILoadingDeckType.upper)); + + assert(r.getCarriers()!= null); + assert(r.getCarriers().size() == 2); + Iterator i9 = r.getCarriers().iterator(); + assert(i9.next().equals("1080")); + assert(i9.next().equals("1181")); + + assert(r.getTariff() != null); + assert(r.getPriceType().equals(IPriceTypeType.travelPrice)); + assert(r.getPrice() == 12345L); + + assert(r.getVatDetails() != null); + + assert(r.getInfoText().equals("car carriage")); + assert(r.getExtension() != null); + + } + + public static int getIndexOfDifference(String s1, String s2) { + + if (s1 == null || s2 == null) return -1; + + char[] ca1 = null; + char[] ca2 = null; + + if (s1.length() > s2.length()) { + ca1 = s1.toCharArray(); + ca2 = s2.toCharArray(); + } else { + ca1 = s2.toCharArray(); + ca2 = s1.toCharArray(); + } + + int i = 0; + for (char c : ca2) { + if (c != ca1[i]) return i; + i++; + } + return 0; + } + + + +} diff --git a/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java index 0b426f2..5719f48 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/AllElementsTestV3.java @@ -1,6 +1,5 @@ package org.uic.barcode.ticket.api.test; -import java.io.IOException; import java.text.ParseException; import java.util.Date; import java.util.Iterator; @@ -127,7 +126,7 @@ public class AllElementsTestV3 { String hex = AllElementsTestTicketV3.getEncodingHex(); byte[] content = UperEncoder.bytesFromHexString(hex); ticketDecoded = decoder.decodeFromAsn(content); - } catch (IOException e) { + } catch (Exception e) { assert(false); } @@ -145,7 +144,7 @@ public class AllElementsTestV3 { IUicRailTicket ticketDecoded2 = null; try { ticketDecoded2 = decoder.decodeFromAsn(encoded); - } catch (IOException e) { + } catch (Exception e) { assert(false); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java index b711c84..ac7aed6 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CarCarriageTestV3.java @@ -1,6 +1,5 @@ package org.uic.barcode.ticket.api.test; -import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -90,7 +89,7 @@ public class CarCarriageTestV3 { IUicRailTicket ticketDecoded = null; try { ticketDecoded = decoder.decodeFromAsn(CarCarriageReservationTestTicketV3.getEncodingBytes()); - } catch (IOException e) { + } catch (Exception e) { assert(false); } @@ -147,7 +146,7 @@ public class CarCarriageTestV3 { IUicRailTicket ticketDecoded2 = null; try { ticketDecoded2 = decoder.decodeFromAsn(encoded); - } catch (IOException e) { + } catch (Exception e) { assert(false); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java index c83c95b..afc7e76 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CounterMarkTimeZoneTestV3.java @@ -1,6 +1,5 @@ package org.uic.barcode.ticket.api.test; -import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -291,7 +290,7 @@ public class CounterMarkTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -306,7 +305,7 @@ public class CounterMarkTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java index d9e5ba9..5f44950 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV1.java @@ -291,7 +291,7 @@ public class CustomerCardTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -306,7 +306,7 @@ public class CustomerCardTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java index ad1b0da..f9d4f43 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/CustomerCardTimeZoneTestV3.java @@ -293,7 +293,7 @@ public class CustomerCardTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -308,7 +308,7 @@ public class CustomerCardTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java index 840c4c7..81f8f9e 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/DelayConfirmationTestV3.java @@ -91,7 +91,7 @@ public class DelayConfirmationTestV3 { IUicRailTicket ticketDecoded = null; try { ticketDecoded = decoder.decodeFromAsn(DelayTestTicketV3.getEncodingBytes()); - } catch (IOException e) { + } catch (Exception e) { assert(false); } @@ -159,7 +159,7 @@ public class DelayConfirmationTestV3 { IUicRailTicket ticketDecoded2 = null; try { ticketDecoded2 = decoder.decodeFromAsn(encoded); - } catch (IOException e) { + } catch (Exception e) { assert(false); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java index 8cf0736..d471eff 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV1.java @@ -324,7 +324,7 @@ public class FipTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -339,7 +339,7 @@ public class FipTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java index fca31a9..ed54b72 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/FipTimeZoneTestV3.java @@ -326,7 +326,7 @@ public class FipTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -341,7 +341,7 @@ public class FipTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java index 8d632c8..af5eb71 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV1.java @@ -324,7 +324,7 @@ public class OpenTicketTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -339,7 +339,7 @@ public class OpenTicketTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java index cc94978..5752c46 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/OpenTicketTimeZoneTestV3.java @@ -326,7 +326,7 @@ public class OpenTicketTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -341,7 +341,7 @@ public class OpenTicketTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java index 3855967..2ac8da6 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV1.java @@ -291,7 +291,7 @@ public class ParkingTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -306,7 +306,7 @@ public class ParkingTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java index e6bdf8f..cc06303 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ParkingTimeZoneTestV3.java @@ -293,7 +293,7 @@ public class ParkingTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -308,7 +308,7 @@ public class ParkingTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java index ad7a0dd..d9c7d61 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV1.java @@ -434,7 +434,7 @@ public class PassTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -449,7 +449,7 @@ public class PassTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java index 7a2f392..a838f3f 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/PassTimeZoneTestV3.java @@ -326,7 +326,7 @@ public class PassTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -341,7 +341,7 @@ public class PassTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java index ac0ab37..3fb9460 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV1.java @@ -291,7 +291,7 @@ public class ReservationTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -306,7 +306,7 @@ public class ReservationTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java index e479e10..e46402a 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/ReservationTimeZoneTestV3.java @@ -293,7 +293,7 @@ public class ReservationTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -308,7 +308,7 @@ public class ReservationTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java index f8379f1..ac899eb 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV1.java @@ -291,7 +291,7 @@ public class StationPassageTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -306,7 +306,7 @@ public class StationPassageTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java index ffe8916..b1fb1bc 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/StationPassageTimeZoneTestV3.java @@ -1,6 +1,5 @@ package org.uic.barcode.ticket.api.test; -import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -293,7 +292,7 @@ public class StationPassageTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } @@ -308,7 +307,7 @@ public class StationPassageTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java index d9a2944..4a7759a 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeOpenTicketTestV1.java @@ -2,7 +2,6 @@ package org.uic.barcode.ticket.api.test; import static org.junit.Assert.assertEquals; -import java.io.IOException; import java.util.logging.Level; import org.junit.Before; @@ -36,17 +35,15 @@ public class UperEncodeOpenTicketTestV1 { IUicRailTicket iTicket = null; try { iTicket = decoder.decodeFromAsn(encoded); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + } catch (Exception e) { + assert(false); } Api2OpenAsnEncoder encoder = new Api2OpenAsnEncoder(); try { encoded = encoder.encode(iTicket); } catch (EncodingFormatException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + assert(false); } assert(decodedTicket != null); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java index a60296a..5d4a7e9 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodePassTestV1.java @@ -2,7 +2,6 @@ package org.uic.barcode.ticket.api.test; import static org.junit.Assert.assertEquals; -import java.io.IOException; import java.util.logging.Level; import org.junit.Before; @@ -35,17 +34,15 @@ public class UperEncodePassTestV1 { IUicRailTicket iTicket = null; try { iTicket = decoder.decodeFromAsn(encoded); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + } catch (Exception e) { + assert(false); } Api2OpenAsnEncoder encoder = new Api2OpenAsnEncoder(); try { encoded = encoder.encode(iTicket); } catch (EncodingFormatException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + assert(false); } assert(decodedTicket != null); diff --git a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java index a512ff3..4369d87 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/UperEncodeTicketLinkTestV1.java @@ -2,7 +2,6 @@ package org.uic.barcode.ticket.api.test; import static org.junit.Assert.assertEquals; -import java.io.IOException; import java.util.logging.Level; import org.junit.Before; @@ -64,7 +63,7 @@ public class UperEncodeTicketLinkTestV1 { IUicRailTicket uicTicket = null; try { uicTicket = decoder.decodeFromAsn(decodedTicket); - } catch (IOException e) { + } catch (Exception e) { assert (false); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java index e2629a3..995845a 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV1.java @@ -1,6 +1,5 @@ package org.uic.barcode.ticket.api.test; -import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -277,7 +276,7 @@ public class VoucherTimeZoneTestV1 { encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); } catch (EncodingFormatException e) { - e.printStackTrace(); + assert(false); } } @@ -291,8 +290,8 @@ public class VoucherTimeZoneTestV1 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); + } catch (Exception e) { + assert(false); } } @@ -306,7 +305,7 @@ public class VoucherTimeZoneTestV1 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java index f7b4618..44645e2 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV2.java @@ -1,6 +1,5 @@ package org.uic.barcode.ticket.api.test; -import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -279,7 +278,7 @@ public class VoucherTimeZoneTestV2 { encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); } catch (EncodingFormatException e) { - e.printStackTrace(); + assert(false); } } @@ -293,8 +292,8 @@ public class VoucherTimeZoneTestV2 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); + } catch (Exception e) { + assert(false); } } @@ -308,8 +307,8 @@ public class VoucherTimeZoneTestV2 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { - e.printStackTrace(); + } catch (Exception e) { + assert(false); } } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java index b76b6cc..20fa455 100644 --- a/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java +++ b/src/test/java/org/uic/barcode/ticket/api/test/VoucherTimeZoneTestV3.java @@ -1,6 +1,5 @@ package org.uic.barcode.ticket.api.test; -import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -279,7 +278,7 @@ public class VoucherTimeZoneTestV3 { encodedInTimeZone2 = encoder.encode(iTicketDecodedFromAsn1Case2); encodedInTimeZone3 = encoder.encode(iTicketDecodedFromAsn1Case3); } catch (EncodingFormatException e) { - e.printStackTrace(); + assert(false); } } @@ -293,8 +292,8 @@ public class VoucherTimeZoneTestV3 { iTicketDecodedCase1 = decoder.decodeFromAsn(encodedInTimeZone1); iTicketDecodedCase2 = decoder.decodeFromAsn(encodedInTimeZone2); iTicketDecodedCase3 = decoder.decodeFromAsn(encodedInTimeZone3); - } catch (IOException e) { - e.printStackTrace(); + } catch (Exception e) { + assert(false); } } @@ -308,8 +307,8 @@ public class VoucherTimeZoneTestV3 { iTicketDecodedFromAsn1Case1 = decoder.decodeFromAsn(encoded1); iTicketDecodedFromAsn1Case2 = decoder.decodeFromAsn(encoded2); iTicketDecodedFromAsn1Case3 = decoder.decodeFromAsn(encoded3); - } catch (IOException e) { - e.printStackTrace(); + } catch (Exception e) { + assert(false); } } diff --git a/src/test/java/org/uic/barcode/ticket/api/test/testtickets/AllElementsTestTicketV1.java b/src/test/java/org/uic/barcode/ticket/api/test/testtickets/AllElementsTestTicketV1.java new file mode 100644 index 0000000..edaa0cc --- /dev/null +++ b/src/test/java/org/uic/barcode/ticket/api/test/testtickets/AllElementsTestTicketV1.java @@ -0,0 +1,1409 @@ +package org.uic.barcode.ticket.api.test.testtickets; + +import java.util.List; + +import org.uic.barcode.asn1.datatypes.Asn1BigInteger; +import org.uic.barcode.asn1.datatypesimpl.SequenceOfStringIA5; +import org.uic.barcode.asn1.datatypesimpl.SequenceOfStringUTF8; +import org.uic.barcode.asn1.datatypesimpl.SequenceOfUnrestrictedLong; +import org.uic.barcode.asn1.uper.UperEncoder; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfCustomerStatusType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfDeltaCoordinates; +import org.uic.barcode.ticket.api.asn.omv1.TravelerType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfRegionalValidityType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfRegisteredLuggageType; +import org.uic.barcode.ticket.api.asn.omv1.DeltaCoordinates; +import org.uic.barcode.ticket.api.asn.omv1.BerthDetailData; +import org.uic.barcode.ticket.api.asn.omv1.BerthTypeType; +import org.uic.barcode.ticket.api.asn.omv1.CarCarriageReservationData; +import org.uic.barcode.ticket.api.asn.omv1.CardReferenceType; +import org.uic.barcode.ticket.api.asn.omv1.CodeTableType; +import org.uic.barcode.ticket.api.asn.omv1.CompartmentDetailsType; +import org.uic.barcode.ticket.api.asn.omv1.CompartmentGenderType; +import org.uic.barcode.ticket.api.asn.omv1.CompartmentPositionType; +import org.uic.barcode.ticket.api.asn.omv1.ConfirmationTypeType; +import org.uic.barcode.ticket.api.asn.omv1.ControlData; +import org.uic.barcode.ticket.api.asn.omv1.CountermarkData; +import org.uic.barcode.ticket.api.asn.omv1.CustomerCardData; +import org.uic.barcode.ticket.api.asn.omv1.CustomerStatusType; +import org.uic.barcode.ticket.api.asn.omv1.DelayConfirmation; +import org.uic.barcode.ticket.api.asn.omv1.DocumentData; +import org.uic.barcode.ticket.api.asn.omv1.ExtensionData; +import org.uic.barcode.ticket.api.asn.omv1.FIPTicketData; +import org.uic.barcode.ticket.api.asn.omv1.GenderType; +import org.uic.barcode.ticket.api.asn.omv1.GeoCoordinateSystemType; +import org.uic.barcode.ticket.api.asn.omv1.GeoCoordinateType; +import org.uic.barcode.ticket.api.asn.omv1.GeoUnitType; +import org.uic.barcode.ticket.api.asn.omv1.HemisphereLatitudeType; +import org.uic.barcode.ticket.api.asn.omv1.HemisphereLongitudeType; +import org.uic.barcode.ticket.api.asn.omv1.IncludedOpenTicketType; +import org.uic.barcode.ticket.api.asn.omv1.IssuingData; +import org.uic.barcode.ticket.api.asn.omv1.LineType; +import org.uic.barcode.ticket.api.asn.omv1.LinkMode; +import org.uic.barcode.ticket.api.asn.omv1.LoadingDeckType; +import org.uic.barcode.ticket.api.asn.omv1.LuggageRestrictionType; +import org.uic.barcode.ticket.api.asn.omv1.OpenTicketData; +import org.uic.barcode.ticket.api.asn.omv1.ParkingGroundData; +import org.uic.barcode.ticket.api.asn.omv1.PassData; +import org.uic.barcode.ticket.api.asn.omv1.PassengerType; +import org.uic.barcode.ticket.api.asn.omv1.PlacesType; +import org.uic.barcode.ticket.api.asn.omv1.PolygoneType; +import org.uic.barcode.ticket.api.asn.omv1.PriceTypeType; +import org.uic.barcode.ticket.api.asn.omv1.RegionalValidityType; +import org.uic.barcode.ticket.api.asn.omv1.RegisteredLuggageType; +import org.uic.barcode.ticket.api.asn.omv1.ReservationData; +import org.uic.barcode.ticket.api.asn.omv1.ReturnRouteDescriptionType; +import org.uic.barcode.ticket.api.asn.omv1.RoofRackType; +import org.uic.barcode.ticket.api.asn.omv1.RouteSectionType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfActivatedDays; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfBerthDetailData; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfCardReferenceType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfCarrierNum; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfCountries; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfDocumentData; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfExtensionData; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfIncludedOpenTicketType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfPlaceNum; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfServiceBrands; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfTariffType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfTicketLinkType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfTimeRangeType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfTravelerId; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfTravelerType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfValidityPeriodType; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfVatDetail; +import org.uic.barcode.ticket.api.asn.omv1.SequenceOfViaStationType; +import org.uic.barcode.ticket.api.asn.omv1.SeriesDetailType; +import org.uic.barcode.ticket.api.asn.omv1.ServiceType; +import org.uic.barcode.ticket.api.asn.omv1.StationPassageData; +import org.uic.barcode.ticket.api.asn.omv1.TariffType; +import org.uic.barcode.ticket.api.asn.omv1.TicketDetailData; +import org.uic.barcode.ticket.api.asn.omv1.TicketLinkType; +import org.uic.barcode.ticket.api.asn.omv1.TicketType; +import org.uic.barcode.ticket.api.asn.omv1.TimeRangeType; +import org.uic.barcode.ticket.api.asn.omv1.TokenType; +import org.uic.barcode.ticket.api.asn.omv1.TrainLinkType; +import org.uic.barcode.ticket.api.asn.omv1.TravelClassType; +import org.uic.barcode.ticket.api.asn.omv1.TravelerData; +import org.uic.barcode.ticket.api.asn.omv1.UicRailTicketData; +import org.uic.barcode.ticket.api.asn.omv1.ValidityPeriodDetailType; +import org.uic.barcode.ticket.api.asn.omv1.ValidityPeriodType; +import org.uic.barcode.ticket.api.asn.omv1.VatDetailType; +import org.uic.barcode.ticket.api.asn.omv1.ViaStationType; +import org.uic.barcode.ticket.api.asn.omv1.VoucherData; +import org.uic.barcode.ticket.api.asn.omv1.ZoneType; + +public class AllElementsTestTicketV1 { + + + + + + + + public static UicRailTicketData getUicTestTicket() { + UicRailTicketData ticket = new UicRailTicketData(); + populateTicket(ticket); + return ticket; + } + + + private static void populateTicket(UicRailTicketData ticket) { + + ticket.setControlDetail(new ControlData()); + populateControlDetail(ticket.getControlDetail()); + + ticket.setExtension(new SequenceOfExtensionData()); + populateExtension(ticket.getExtension()); + + ticket.setIssuingDetail(new IssuingData()); + populateIssuingData(ticket.getIssuingDetail()); + + ticket.setTravelerDetail(new TravelerData()); + populateTravelerData(ticket.getTravelerDetail()); + + ticket.setTransportDocument(new SequenceOfDocumentData()); + + DocumentData d1 = new DocumentData(); + populateReservation(d1); + ticket.getTransportDocument().add(d1); + + DocumentData d2 = new DocumentData(); + populateCarCarriage(d2); + ticket.getTransportDocument().add(d2); + + DocumentData d3 = new DocumentData(); + populateOpenTicket(d3); + ticket.getTransportDocument().add(d3); + + DocumentData d4 = new DocumentData(); + populatePass(d4); + ticket.getTransportDocument().add(d4); + + DocumentData d5 = new DocumentData(); + populateVoucher(d5); + ticket.getTransportDocument().add(d5); + + DocumentData d6 = new DocumentData(); + populateCustomerCard(d6); + ticket.getTransportDocument().add(d6); + + DocumentData d7 = new DocumentData(); + populateCounterMark(d7); + ticket.getTransportDocument().add(d7); + + DocumentData d8 = new DocumentData(); + populateParking(d8); + ticket.getTransportDocument().add(d8); + + DocumentData d9 = new DocumentData(); + populateFip(d9); + ticket.getTransportDocument().add(d9); + + DocumentData d10 = new DocumentData(); + populateStationPassage(d10); + ticket.getTransportDocument().add(d10); + + DocumentData d11 = new DocumentData(); + populateExtensionDocument(d11); + ticket.getTransportDocument().add(d11); + + DocumentData d12 = new DocumentData(); + populateDelay(d12); + ticket.getTransportDocument().add(d12); + + } + + private static void populateDelay(DocumentData d) { + + d.setTicket(new TicketDetailData()); + DelayConfirmation dc = new DelayConfirmation(); + d.getTicket().setDelayConfirmation(dc); + + dc.setTrainNum(Asn1BigInteger.toAsn1(100L)); + dc.setTrainIA5("100"); + dc.setPlannedArrivalYear(2022L); + dc.setPlannedArrivalDay(12L); + dc.setPlannedArrivalTime(1000L); + dc.setDepartureUTCOffset(30L); + dc.setReferenceIA5("ABDJ12345"); + dc.setReferenceNum(12345L); + + dc.setStationCodeTable(CodeTableType.stationUIC); + dc.setStationNum(8000001L); + dc.setStationIA5("DJE"); + dc.setDelay(31L); + dc.setTrainCancelled(false); + dc.setConfirmationType(ConfirmationTypeType.travelerDelayConfirmation); + + dc.setAffectedTickets(new SequenceOfTicketLinkType()); + TicketLinkType tl = new TicketLinkType(); + dc.getAffectedTickets().add(tl); + + tl.setReferenceIA5("KDJET"); + tl.setReferenceNum(801234567890L); + tl.setIssuerName("XYZ"); + tl.setIssuerPNR("LDWDUR45"); + tl.setProductOwnerNum(1080L); + tl.setProductOwnerIA5("IEFHU"); + tl.setTicketType(TicketType.openTicket); + tl.setLinkMode(LinkMode.issuedTogether); + + dc.setInfoText("delay confirmation"); + dc.setExtension(new ExtensionData()); + dc.getExtension().setExtensionId("1"); + dc.getExtension().setExtensionData(UperEncoder.bytesFromHexString("82DA")); + + } + + + private static void populateExtensionDocument(DocumentData d) { + + d.setTicket(new TicketDetailData()); + d.getTicket().setExtension(new ExtensionData()); + d.getTicket().getExtension().setExtensionId("1"); + d.getTicket().getExtension().setExtensionData(UperEncoder.bytesFromHexString("82DA")); + + } + + + private static void populateStationPassage(DocumentData d) { + + d.setTicket(new TicketDetailData()); + StationPassageData s = new StationPassageData(); + d.getTicket().setStationPassage(s); + + s.setExtension(new ExtensionData()); + s.getExtension().setExtensionId("1"); + s.getExtension().setExtensionData(UperEncoder.bytesFromHexString("82DA")); + + s.setReferenceIA5("810123456789"); + s.setReferenceNum(Asn1BigInteger.toAsn1(810123456789L)); + s.setProductOwnerNum(23456L); + s.setProductOwnerIA5("23456"); + s.setProductIdNum(15535L); + s.setProductIdIA5("23456"); + + s.setProductName("passage"); + s.setStationCodeTable(CodeTableType.stationUIC); + s.setStationNum(new SequenceOfUnrestrictedLong()); + s.getStationNum().add(8200001L); + s.setStationIA5(new SequenceOfStringIA5()); + s.getStationIA5().add("AMS"); + s.setStationNameUTF8(new SequenceOfStringUTF8()); + s.getStationNameUTF8().add("Amsterdam"); + s.setAreaCodeNum(new SequenceOfUnrestrictedLong()); + s.getAreaCodeNum().add(8200001L); + s.setAreaCodeIA5(new SequenceOfStringIA5()); + s.getAreaCodeIA5().add("AMS"); + s.setAreaNameUTF8(new SequenceOfStringUTF8()); + s.getAreaNameUTF8().add("Amsterdam"); + s.setValidFromDay(5L); + s.setValidFromTime(0L); + s.setValidFromUTCOffset(1L); + s.setValidUntilDay(5L); + s.setValidUntilTime(1000L); + s.setValidUntilUTCOffset(1L); + s.setNumberOfDaysValid(5L); + + } + + + private static void populateFip(DocumentData d) { + + d.setTicket(new TicketDetailData()); + FIPTicketData f = new FIPTicketData(); + d.getTicket().setFipTicket(f); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + f.setExtension(e1); + + f.setReferenceIA5("810123456789"); + f.setReferenceNum(Asn1BigInteger.toAsn1(810123456789L)); + f.setProductOwnerNum(23456L); + f.setProductOwnerIA5("23456"); + f.setProductIdNum(15535L); + f.setProductIdIA5("23456"); + + + f.setValidFromDay( 2L); + f.setValidUntilDay(5L); + f.setActivatedDay(new SequenceOfActivatedDays()); + f.getActivatedDay().add(1L); + f.getActivatedDay().add(13L); + f.getActivatedDay().add(14L); + f.getActivatedDay().add(15L); + + f.setCarrierNum(new SequenceOfCarrierNum()); + f.getCarrierNum().add(1080L); + f.getCarrierNum().add(1181L); + + f.setCarrierIA5(new SequenceOfStringIA5()); + f.getCarrierIA5().add("1080"); + f.getCarrierIA5().add("1181"); + + f.setNumberOfTravelDays(8L); + f.setIncludesSupplements(true); + f.setClassCode(TravelClassType.first); + + } + + + private static void populateParking(DocumentData d) { + + d.setTicket(new TicketDetailData()); + ParkingGroundData p = new ParkingGroundData(); + d.getTicket().setParkingGround(p); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + p.setExtension(e1); + + + p.setReferenceIA5("810123456789"); + p.setReferenceNum(Asn1BigInteger.toAsn1(810123456789L)); + p.setProductOwnerNum(23456L); + p.setProductOwnerIA5("23456"); + p.setProductIdNum(15535L); + p.setProductIdIA5("23456"); + + p.setParkingGroundId("IA5"); + p.setFromParkingDate(370L); + p.setToParkingDate(370L); + + p.setAccessCode("4ga"); + p.setLocation("Parking Frankfurt Main West"); + p.setStationCodeTable(CodeTableType.stationUIC); + p.setStationNum(8000001L); + p.setStationIA5("8000001"); + p.setSpecialInformation("outdoor parking"); + p.setEntryTrack("left"); + p.setNumberPlate("AA-DE-12345"); + p.setPrice(500L); + p.setVatDetails(new SequenceOfVatDetail()); + VatDetailType v = new VatDetailType(); + p.getVatDetails().add(v); + v.setAmount(10L); + v.setCountry(80L); + v.setPercentage(70L); + v.setVatId("IUDGTE"); + + } + + + private static void populateCounterMark(DocumentData d) { + + d.setTicket(new TicketDetailData()); + CountermarkData t = new CountermarkData(); + d.getTicket().setCounterMark(t); + + t.setTicketReferenceIA5("810123456789"); + t.setTicketReferenceNum(810123456789L); + t.setNumberOfCountermark(12L); + t.setTotalOfCountermarks(24L); + t.setGroupName("groupName"); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + t.setExtension(e1); + + t.setReferenceIA5("810123456789"); + t.setReferenceNum(810123456789L); + t.setProductOwnerNum( 23456L); + t.setProductOwnerIA5("23456"); + t.setProductIdNum( 15535L); + t.setProductIdIA5("23456"); + + t.setReturnIncluded( false); + + t.setStationCodeTable(CodeTableType.stationERA); + t.setFromStationNum( 8100001L); + t.setFromStationIA5("8100001"); + t.setToStationNum( 8000002L); + t.setToStationIA5( "8100002"); + t.setFromStationNameUTF8( "A-STATION"); + t.setToStationNameUTF8( "B-STATION"); + + t.setValidRegionDesc("From A to B via C"); + + t.setValidRegion(new SequenceOfRegionalValidityType()); + t.getValidRegion().add(new RegionalValidityType()); + t.getValidRegion().get(0).setViaStations(new ViaStationType()); + populateCounterMarkRoute(t.getValidRegion().get(0).getViaStations()); + + t.setReturnDescription(new ReturnRouteDescriptionType()); + t.getReturnDescription().setFromStationNum( 8100001L); + t.getReturnDescription().setFromStationIA5("8100001"); + t.getReturnDescription().setToStationNum( 8000002L); + t.getReturnDescription().setToStationIA5( "8100002"); + t.getReturnDescription().setFromStationNameUTF8( "A-STATION"); + t.getReturnDescription().setToStationNameUTF8( "B-STATION"); + t.getReturnDescription().setValidReturnRegionDesc( "return"); + t.getReturnDescription().setValidReturnRegion(new SequenceOfRegionalValidityType()); + t.getReturnDescription().getValidReturnRegion().add(new RegionalValidityType()); + + t.getReturnDescription().getValidReturnRegion().get(0).setZones(new ZoneType()); + t.getReturnDescription().getValidReturnRegion().get(0).getZones().setZoneId(new SequenceOfUnrestrictedLong()); + t.getReturnDescription().getValidReturnRegion().get(0).getZones().getZoneId().add(100L); + t.getReturnDescription().getValidReturnRegion().get(0).getZones().getZoneId().add(200L); + t.getReturnDescription().getValidReturnRegion().get(0).getZones().setCarrierNum(1080L); + t.getReturnDescription().getValidReturnRegion().get(0).getZones().setCarrierIA5("1181"); + t.getReturnDescription().getValidReturnRegion().get(0).getZones().setStationCodeTable(CodeTableType.stationERA); + + t.setValidFromDay( 700L); + t.setValidFromTime( 0L); + t.setValidFromUTCOffset( 60L); + t.setValidUntilDay( 370L); + t.setValidUntilTime( 1439L); + t.setValidUntilUTCOffset( 10L); + + t.setClassCode(TravelClassType.first); + + t.setCarriersNum(new SequenceOfCarrierNum()); + t.getCarriersNum().add(1080L); + t.getCarriersNum().add(1181L); + + t.setCarriersIA5(new SequenceOfStringIA5()); + t.getCarriersIA5().add("1080"); + t.getCarriersIA5().add("1181"); + + t.setIncludedServiceBrands(new SequenceOfServiceBrands()); + t.getIncludedServiceBrands().add(108L); + t.getIncludedServiceBrands().add(118L); + + t.setExcludedServiceBrands(new SequenceOfServiceBrands()); + t.getExcludedServiceBrands().add(108L); + t.getExcludedServiceBrands().add(118L); + + + t.setInfoText("counterMark"); + + } + + + private static void populateCustomerCard(DocumentData d) { + + d.setTicket(new TicketDetailData()); + CustomerCardData c = new CustomerCardData(); + d.getTicket().setCustomerCard(c); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + c.setExtension(e1); + + TravelerType t = new TravelerType(); + c.setCustomer(t); + t.setCustomerIdIA5("1234"); + t.setTicketHolder(false); + t.setPassengerType(PassengerType.senior); + + c.setCardIdIA5("2345"); + c.setCardIdNum(123456L); + c.setValidFromYear(2269L); + c.setValidFromDay(2L); + c.setValidUntilYear(1L); + c.setValidUntilDay(5L); + c.setClassCode(TravelClassType.second); + c.setCardType(15L); + c.setCardTypeDescr("RAILPLUS"); + c.setCustomerStatus(1L); + + c.setCustomerStatusDescr("gold"); + c.setIncludedServices(new SequenceOfUnrestrictedLong()); + c.getIncludedServices().add(1L); + c.getIncludedServices().add(2L); + + } + + + private static void populateVoucher(DocumentData d) { + + d.setTicket(new TicketDetailData()); + VoucherData v = new VoucherData(); + d.getTicket().setVoucher(v); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + v.setExtension(e1); + + v.setReferenceIA5("810123456789"); + v.setReferenceNum(Asn1BigInteger.toAsn1(810123456789L)); + v.setProductOwnerNum(23456L); + v.setProductOwnerIA5("COFFEEMACHINE"); + v.setProductIdNum(15535L); + v.setProductIdIA5("23456"); + + v.setValidFromYear(2022L); + v.setValidFromDay(1L); + v.setValidUntilYear(2022L); + v.setValidUntilDay(1L); + v.setValue(500L); + v.setType(123L); + v.setInfoText("coffee voucher"); + } + + + private static void populatePass(DocumentData d) { + + + d.setTicket(new TicketDetailData()); + PassData p = new PassData(); + d.getTicket().setPass(p); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + p.setExtension(e1); + + p.setReferenceIA5("810123456789"); + p.setReferenceNum(Asn1BigInteger.toAsn1(810123456789L)); + p.setProductOwnerNum(23456L); + p.setProductOwnerIA5("23456"); + p.setProductIdNum(15535L); + p.setProductIdIA5("23456"); + + p.setPassType(2L); + p.setPassDescription("Eurail FlexPass"); + p.setClassCode(TravelClassType.first); + p.setValidFromDay( 0L); + p.setValidFromTime( 1000L); + p.setValidFromUTCOffset( 1L); + p.setValidUntilDay( 1L); + p.setValidUntilTime( 1000L); + p.setValidUntilUTCOffset(1L); + + ValidityPeriodDetailType v = new ValidityPeriodDetailType(); + p.setValidityPeriodDetails(v); + v.setValidityPeriod(new SequenceOfValidityPeriodType()); + v.setExcludedTimeRange(new SequenceOfTimeRangeType()); + + ValidityPeriodType vp = new ValidityPeriodType(); + p.getValidityPeriodDetails().getValidityPeriod().add(vp); + vp.setValidFromDay(0L); + vp.setValidFromTime( 1000L); + vp.setValidFromUTCOffset( 1L); + vp.setValidUntilDay( 1L); + vp.setValidUntilTime( 1000L); + vp.setValidUntilUTCOffset(1L); + + TimeRangeType tr = new TimeRangeType(); + p.getValidityPeriodDetails().getExcludedTimeRange().add(tr); + + tr.setFromTime(6L); + tr.setUntilTime(9L); + + p.setNumberOfValidityDays(5L); + + + p.setNumberOfPossibleTrips( 3L); + p.setNumberOfDaysOfTravel( 10L); + + p.setActivatedDay(new SequenceOfActivatedDays()); + p.getActivatedDay().add(200L); + p.getActivatedDay().add(201L); + + + p.setCountries(new SequenceOfCountries()); + p.getCountries().add(10L); + p.getCountries().add(20L); + + p.setIncludedCarriersNum(new SequenceOfCarrierNum()); + p.getIncludedCarriersNum().add(1080L); + p.getIncludedCarriersNum().add(1181L); + + p.setIncludedCarriersIA5(new SequenceOfStringIA5()); + p.getIncludedCarriersIA5().add("1080"); + p.getIncludedCarriersIA5().add("1181"); + + p.setExcludedCarriersNum(new SequenceOfCarrierNum()); + p.getExcludedCarriersNum().add(1080L); + p.getExcludedCarriersNum().add(1181L); + + p.setExcludedCarriersIA5(new SequenceOfStringIA5()); + p.getExcludedCarriersIA5().add("1080"); + p.getExcludedCarriersIA5().add("1181"); + + p.setIncludedServiceBrands(new SequenceOfServiceBrands()); + p.getIncludedServiceBrands().add(108L); + p.getIncludedServiceBrands().add(118L); + + p.setExcludedServiceBrands(new SequenceOfServiceBrands()); + p.getExcludedServiceBrands().add(108L); + p.getExcludedServiceBrands().add(118L); + + p.setValidRegion(new SequenceOfRegionalValidityType()); + + RegionalValidityType rv = new RegionalValidityType(); + p.getValidRegion().add(rv); + rv.setZones(new ZoneType()); + rv.getZones().setZoneId(new SequenceOfUnrestrictedLong()); + rv.getZones().getZoneId().add(100L); + + p.setTariffs(new SequenceOfTariffType()); + TariffType ta = new TariffType(); + p.getTariffs().add(ta); + ta.setNumberOfPassengers(1L); + ta.setRestrictedToCountryOfResidence(false); + ta.setTariffIdNum(72L); + ta.setTariffDesc("Large Car Full Fare"); + + p.setVatDetails(new SequenceOfVatDetail()); + VatDetailType v1 = new VatDetailType(); + p.getVatDetails().add(v1); + v1.setAmount(10L); + v1.setCountry(80L); + v1.setPercentage(70L); + v1.setVatId("IUDGTE"); + + p.setPrice(10000L); + p.setInfoText("pass info"); + + } + + + private static void populateOpenTicket(DocumentData d) { + + d.setTicket(new TicketDetailData()); + OpenTicketData o = new OpenTicketData(); + d.getTicket().setOpenTicket(o); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + o.setExtension(e1); + + o.setReferenceIA5("810123456789"); + o.setReferenceNum(810123456789L); + o.setProductOwnerNum( 23456L); + o.setProductOwnerIA5("23456"); + o.setProductIdNum( 15535L); + o.setProductIdIA5("23456"); + + + o.setExtIssuerId( 12L); + o.setIssuerAutorizationId( 13L); + o.setReturnIncluded( false); + + o.setStationCodeTable(CodeTableType.stationERA); + o.setFromStationNum( 8100001L); + o.setFromStationIA5("8100001"); + o.setToStationNum( 8000002L); + o.setToStationIA5( "8100002"); + o.setFromStationNameUTF8( "A-STATION"); + o.setToStationNameUTF8( "B-STATION"); + + o.setValidRegionDesc("From A to B via C"); + + o.setValidRegion(new SequenceOfRegionalValidityType()); + o.getValidRegion().add(new RegionalValidityType()); + o.getValidRegion().get(0).setViaStations(new ViaStationType()); + o.getValidRegion().add(new RegionalValidityType()); + o.getValidRegion().get(1).setZones(new ZoneType()); + o.getValidRegion().add(new RegionalValidityType()); + o.getValidRegion().get(2).setLines(new LineType()); + o.getValidRegion().add(new RegionalValidityType()); + o.getValidRegion().get(3).setTrainLink(new TrainLinkType()); + o.getValidRegion().add(new RegionalValidityType()); + o.getValidRegion().get(4).setPolygone(new PolygoneType()); + populateRoute(o.getValidRegion().get(0).getViaStations()); + populateZone(o.getValidRegion().get(1).getZones()); + populateLine(o.getValidRegion().get(2).getLines()); + populateTrainLink(o.getValidRegion().get(3).getTrainLink()); + populatePolygon(o.getValidRegion().get(4).getPolygone()); + + o.setReturnDescription(new ReturnRouteDescriptionType()); + o.getReturnDescription().setFromStationNum( 8100001L); + o.getReturnDescription().setFromStationIA5("8100001"); + o.getReturnDescription().setToStationNum( 8000002L); + o.getReturnDescription().setToStationIA5( "8100002"); + o.getReturnDescription().setFromStationNameUTF8( "A-STATION"); + o.getReturnDescription().setToStationNameUTF8( "B-STATION"); + o.getReturnDescription().setValidReturnRegionDesc( "return"); + o.getReturnDescription().setValidReturnRegion(new SequenceOfRegionalValidityType()); + o.getReturnDescription().getValidReturnRegion().add(new RegionalValidityType()); + + o.getReturnDescription().getValidReturnRegion().get(0).setZones(new ZoneType()); + o.getReturnDescription().getValidReturnRegion().get(0).getZones().setZoneId(new SequenceOfUnrestrictedLong()); + o.getReturnDescription().getValidReturnRegion().get(0).getZones().getZoneId().add(100L); + o.getReturnDescription().getValidReturnRegion().get(0).getZones().getZoneId().add(200L); + o.getReturnDescription().getValidReturnRegion().get(0).getZones().setCarrierIA5("1080"); + o.getReturnDescription().getValidReturnRegion().get(0).getZones().setCarrierNum(1080L); + o.getReturnDescription().getValidReturnRegion().get(0).getZones().setStationCodeTable(CodeTableType.stationERA); + + o.setValidFromDay( 700L); + o.setValidFromTime( 0L); + o.setValidFromUTCOffset( 60L); + o.setValidUntilDay( 370L); + o.setValidUntilTime( 1439L); + o.setValidUntilUTCOffset( 10L); + + o.setActivatedDay(new SequenceOfActivatedDays()); + o.getActivatedDay().add(1L); + o.getActivatedDay().add(2L); + + + o.setClassCode(TravelClassType.first); + o.setServiceLevel("A"); + + o.setCarriersNum(new SequenceOfCarrierNum()); + o.getCarriersNum().add(1080L); + o.getCarriersNum().add(1181L); + + o.setCarriersIA5(new SequenceOfStringIA5()); + o.getCarriersIA5().add("1080"); + o.getCarriersIA5().add("1181"); + + o.setIncludedServiceBrands(new SequenceOfServiceBrands()); + o.getIncludedServiceBrands().add(108L); + o.getIncludedServiceBrands().add(118L); + + o.setExcludedServiceBrands(new SequenceOfServiceBrands()); + o.getExcludedServiceBrands().add(108L); + o.getExcludedServiceBrands().add(118L); + + o.setTariffs(new SequenceOfTariffType()); + TariffType ta = new TariffType(); + o.getTariffs().add(ta); + ta.setNumberOfPassengers(1L); + ta.setRestrictedToCountryOfResidence(false); + ta.setTariffIdNum(72L); + ta.setTariffDesc("Large Car Full Fare"); + + o.setVatDetails(new SequenceOfVatDetail()); + VatDetailType v1 = new VatDetailType(); + o.getVatDetails().add(v1); + v1.setCountry(80L); + v1.setPercentage(70L); + + o.setPrice( 12345L); + + + o.setInfoText("openTicketInfo"); + + o.setIncludedAddOns(new SequenceOfIncludedOpenTicketType()); + o.getIncludedAddOns().add(new IncludedOpenTicketType()); + populateIncludedTicket(o.getIncludedAddOns().get(0)); + + o.setLuggage(new LuggageRestrictionType()); + o.getLuggage().setMaxHandLuggagePieces(2L); + o.getLuggage().setMaxNonHandLuggagePieces(1L); + + + + } + + + + + private static void populateTrainLink(TrainLinkType t) { + + + t.setTrainNum( 12345L); + t.setTrainIA5("12345"); + t.setTravelDate( 2L); + t.setDepartureTime( 1439L); + + + t.setFromStationNum( 8100001L); + t.setFromStationIA5("8100001"); + t.setToStationNum( 8000002L); + t.setToStationIA5( "8100002"); + t.setFromStationName( "A-STATION"); + t.setToStationName( "B-STATION"); + + } + + private static void populatePolygon(PolygoneType p) { + + p.setFirstEdge(new GeoCoordinateType()); + p.getFirstEdge().setLongitude( 12345L); + p.getFirstEdge().setLatitude( 56789L); + p.setEdges(new SequenceOfDeltaCoordinates()); + p.getEdges().add(new DeltaCoordinates()); + p.getEdges().add(new DeltaCoordinates()); + p.getEdges().get(0).setLongitude( Asn1BigInteger.toAsn1(12345L)); + p.getEdges().get(0).setLatitude(Asn1BigInteger.toAsn1(56789L)); + p.getEdges().get(1).setLongitude(Asn1BigInteger.toAsn1(12345L)); + p.getEdges().get(1).setLatitude(Asn1BigInteger.toAsn1(56789L)); + + } + + private static void populateZone(ZoneType z) { + + z.setCarrierNum( 1080L); + z.setCarrierIA5("1080"); + z.setStationCodeTable(CodeTableType.stationERA); + z.setEntryStationNum( 1234L); + z.setEntryStationIA5( "1234"); + z.setTerminatingStationNum( 2345L); + z.setTerminatingStationIA5( "2345"); + z.setCity(Asn1BigInteger.toAsn1(123456L)); + z.setZoneId(new SequenceOfUnrestrictedLong()); + z.getZoneId().add(100L); + z.getZoneId().add(200L); + z.setNutsCode("DE4711"); + z.setBinaryZoneId(UperEncoder.bytesFromHexString("82DA")); + + } + + private static void populateLine(LineType z) { + + z.setCarrierNum( 1080L); + z.setCarrierIA5("1080"); + z.setStationCodeTable(CodeTableType.stationERA); + z.setEntryStationNum( 1234L); + z.setEntryStationIA5( "1234"); + z.setTerminatingStationNum( 2345L); + z.setTerminatingStationIA5( "2345"); + z.setCity(123456L); + z.setLineId(new SequenceOfUnrestrictedLong()); + z.getLineId().add(100L); + z.getLineId().add(200L); + + } + + private static void populateRoute(ViaStationType t) { + + + t.setRoute(new SequenceOfViaStationType()); + t.getRoute().add(new ViaStationType()); + t.getRoute().add(new ViaStationType()); + t.getRoute().add(new ViaStationType()); + t.getRoute().add(new ViaStationType()); + + t.getRoute().get(0).setStationNum( 123455L); + t.getRoute().get(0).setStationIA5("123455"); + t.getRoute().get(0).setBorder( false); + + t.getRoute().get(1).setStationNum( 123456L); + t.getRoute().get(1).setBorder( false); + + + t.getRoute().get(2).setAlternativeRoutes(new SequenceOfViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().add(new ViaStationType()); + t.getRoute().get(2).setBorder( false); + + t.getRoute().get(2).getAlternativeRoutes().get(0).setRoute(new SequenceOfViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(0).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(0).setStationNum( 23455L); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(0).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(1).setStationNum( 23456L); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(1).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(1).setRoute(new SequenceOfViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(1).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(0).setStationNum( 3455L); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(0).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(1).setStationNum( 3456L); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(1).setBorder(false); + + t.getRoute().get(3).setStationNum( 123457L); + t.getRoute().get(3).setBorder(false); + + t.setBorder( false); + + t.setSeriesId( 999L); + t.setRouteId( 21L); + + } + + private static void populateCounterMarkRoute(ViaStationType t) { + + + t.setRoute(new SequenceOfViaStationType()); + t.getRoute().add(new ViaStationType()); + t.getRoute().add(new ViaStationType()); + t.getRoute().add(new ViaStationType()); + t.getRoute().add(new ViaStationType()); + + t.getRoute().get(0).setStationNum( 123455L); + t.getRoute().get(0).setStationIA5("123455"); + t.getRoute().get(0).setBorder( false); + + t.getRoute().get(1).setStationNum( 123456L); + t.getRoute().get(1).setBorder( false); + + + t.getRoute().get(2).setAlternativeRoutes(new SequenceOfViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().add(new ViaStationType()); + t.getRoute().get(2).setBorder( false); + + t.getRoute().get(2).getAlternativeRoutes().get(0).setRoute(new SequenceOfViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(0).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(0).setStationNum( 23455L); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(0).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(1).setStationNum( 23456L); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(1).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(1).setRoute(new SequenceOfViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(1).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().add(new ViaStationType()); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(0).setStationNum( 3455L); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(0).setBorder(false); + t.getRoute().get(2).getAlternativeRoutes().get(1).getRoute().get(1).setStationNum( 3456L); + t.getRoute().get(2).getAlternativeRoutes().get(0).getRoute().get(1).setBorder(false); + + t.getRoute().get(3).setStationNum( 123457L); + t.getRoute().get(3).setBorder(false); + + t.setCarriersIA5(new SequenceOfStringIA5()); + t.getCarriersIA5().add("1080"); + t.getCarriersIA5().add("1181"); + + t.setCarriersNum(new SequenceOfCarrierNum()); + t.getCarriersNum().add(1080L); + t.getCarriersNum().add(1181L); + + + t.setBorder( false); + + t.setSeriesId( 999L); + t.setRouteId( 21L); + + } + + private static void populateIncludedTicket(IncludedOpenTicketType t) { + + + t.setProductOwnerNum( 23456L); + t.setProductOwnerIA5("23456"); + t.setProductIdNum( 15535L); + t.setProductIdIA5("23456"); + + + t.setExternalIssuerId(12L); + t.setIssuerAutorizationId(13L); + t.setStationCodeTable(CodeTableType.stationERA); + + t.setValidRegion(new SequenceOfRegionalValidityType()); + RegionalValidityType rv = new RegionalValidityType(); + t.getValidRegion().add(rv); + rv.setZones(new ZoneType()); + rv.getZones().setZoneId(new SequenceOfUnrestrictedLong()); + rv.getZones().getZoneId().add(100L); + + t.setValidFromDay( 0L); + t.setValidFromTime(1000L); + t.setValidUntilDay(1L); + t.setValidUntilTime(1000L); + t.setClassCode(TravelClassType.second); + t.setServiceLevel("A"); + + t.setIncludedCarriersNum(new SequenceOfCarrierNum()); + t.getIncludedCarriersNum().add(1080L); + t.getIncludedCarriersNum().add(1181L); + + t.setIncludedCarriersIA5(new SequenceOfStringIA5()); + t.getIncludedCarriersIA5().add("1080"); + t.getIncludedCarriersIA5().add("1181"); + + + t.setIncludedServiceBrands(new SequenceOfServiceBrands()); + t.getIncludedServiceBrands().add(108L); + t.getIncludedServiceBrands().add(118L); + + t.setExcludedServiceBrands(new SequenceOfServiceBrands()); + t.getExcludedServiceBrands().add(108L); + t.getExcludedServiceBrands().add(118L); + + t.setTariffs(new SequenceOfTariffType()); + TariffType ta = new TariffType(); + t.getTariffs().add(ta); + ta.setNumberOfPassengers(1L); + ta.setRestrictedToCountryOfResidence(false); + ta.setTariffIdNum(72L); + ta.setTariffDesc("Large Car Full Fare"); + + t.setInfoText("included ticket"); + + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + t.setExtension(e1); + + } + + + private static void populateCarCarriage(DocumentData d2) { + + d2.setTicket(new TicketDetailData()); + d2.setToken(new TokenType()); + + + assert(d2.getToken() != null); + d2.getToken().setToken(UperEncoder.bytesFromHexString("82DA")); + d2.getToken().setTokenProviderIA5("VDV"); + d2.getToken().setTokenProviderNum(123L); + d2.getToken().setTokenSpecification("TEST"); + + CarCarriageReservationData r = new CarCarriageReservationData(); + d2.getTicket().setCarCarriageReservation(r); + + r.setTrainNum( 123L); + r.setTrainIA5("123"); + r.setReferenceIA5("810123456789"); + r.setReferenceNum( 810123456789L); + r.setProductOwnerNum( 23456L); + r.setProductOwnerIA5("23456"); + r.setProductIdNum( 15535L); + r.setProductIdIA5("23456"); + r.setServiceBrand( 100L); + r.setServiceBrandAbrUTF8("AZ"); + r.setServiceBrandNameUTF8("special train"); + + r.setBeginLoadingDate( 10L); + r.setBeginLoadingTime( 0L); + r.setEndLoadingTime( 500L); + r.setLoadingUTCOffset( 30L); + + r.setStationCodeTable(CodeTableType.stationERA); + r.setFromStationNum( 8100001L); + r.setFromStationIA5("8100001"); + r.setToStationNum( 8000002L); + r.setToStationIA5( "8100002"); + r.setFromStationNameUTF8( "A-STATION"); + r.setToStationNameUTF8( "B-STATION"); + + r.setCoach("21"); + r.setPlace("41"); + r.setCompartmentDetails(new CompartmentDetailsType()); + + r.getCompartmentDetails().setCoachType( 1L); + r.getCompartmentDetails().setCompartmentType( 99L); + r.getCompartmentDetails().setSpecialAllocation( 50L); + r.getCompartmentDetails().setCoachTypeDescr("xwz"); + r.getCompartmentDetails().setCompartmentTypeDescr("xwz"); + r.getCompartmentDetails().setSpecialAllocationDescr("xwz"); + r.getCompartmentDetails().setPosition(CompartmentPositionType.upperLevel); + + r.setNumberPlate( "AD-DE-123"); + r.setTrailerPlate( "DX-AB-123"); + r.setCarCategory( 3L); + r.setBoatCategory( 5L); + r.setTextileRoof( false); + r.setRoofRackType(RoofRackType.bicycleRack); + r.setRoofRackHeight( 20L); + r.setAttachedBoats( 2L); + r.setAttachedBicycles( 1L); + r.setAttachedSurfboards( 2L); + r.setLoadingListEntry( 421L); + r.setLoadingDeck(LoadingDeckType.upper); + + r.setCarrierNum(new SequenceOfCarrierNum()); + r.getCarrierNum().add(1080L); + r.getCarrierNum().add(1181L); + + r.setCarrierIA5(new SequenceOfStringIA5()); + r.getCarrierIA5().add("1080"); + r.getCarrierIA5().add("1181"); + + + r.setPriceType(PriceTypeType.travelPrice); + r.setPrice(12345L); + + r.setInfoText("car carriage"); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + r.setExtension(e1); + + TariffType ta = new TariffType(); + r.setTariff(ta); + ta.setNumberOfPassengers(1L); + ta.setRestrictedToCountryOfResidence(false); + ta.setTariffIdNum(72L); + ta.setTariffDesc("Large Car Full Fare"); + + r.setVatDetails(new SequenceOfVatDetail()); + VatDetailType v1 = new VatDetailType(); + r.getVatDetails().add(v1); + v1.setAmount(10L); + v1.setCountry(80L); + v1.setPercentage(70L); + v1.setVatId("IUDGTE"); + + } + + + private static void populateReservation(DocumentData d) { + + d.setTicket(new TicketDetailData()); + ReservationData r = new ReservationData(); + d.getTicket().setReservation(r); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + r.setExtension(e1); + + r.setTrainNum( 12345L); + r.setTrainIA5("12345"); + r.setDepartureDate( 2L); + r.setReferenceIA5("810123456789"); + r.setReferenceNum(80123456789L); + r.setProductOwnerNum( 23456L); + r.setProductOwnerIA5("23456"); + r.setProductIdNum( 15535L); + r.setProductIdIA5("23456"); + r.setServiceBrand( 12L); + r.setServiceBrandAbrUTF8("TGV"); + r.setServiceBrandNameUTF8("Lyria"); + r.setService(ServiceType.couchette); + + r.setStationCodeTable(CodeTableType.stationUIC); + r.setFromStationNum( 8100001L); + r.setFromStationIA5("8100001"); + r.setToStationNum( 8000002L); + r.setToStationIA5( "8100002"); + r.setFromStationNameUTF8( "A-STATION"); + r.setToStationNameUTF8( "B-STATION"); + r.setDepartureTime( 1439L); + r.setDepartureUTCOffset( -60L); + r.setArrivalDate( 20L); + r.setArrivalTime( 0L); + r.setArrivalUTCOffset( 10L); + r.setCarrierNum(new SequenceOfCarrierNum()); + r.getCarrierNum().add(1080L); + r.getCarrierNum().add(1181L); + + r.setCarrierIA5(new SequenceOfStringIA5()); + r.getCarrierIA5().add("1080"); + r.getCarrierIA5().add("1181"); + r.setClassCode(TravelClassType.first); + r.setServiceLevel("A"); + + r.setPlaces(new PlacesType()); + r.getPlaces().setCoach("31A"); + r.getPlaces().setPlaceString("31-47"); + r.getPlaces().setPlaceDescription("Window"); + r.getPlaces().setPlaceIA5(new SequenceOfStringIA5()); + r.getPlaces().getPlaceIA5().add("31A"); + r.getPlaces().getPlaceIA5().add("31B"); + r.getPlaces().setPlaceNum(new SequenceOfPlaceNum()); + r.getPlaces().getPlaceNum().add(31L); + r.getPlaces().getPlaceNum().add(32L); + + r.setAdditionalPlaces(new PlacesType()); + r.getAdditionalPlaces().setCoach("31A"); + r.getAdditionalPlaces().setPlaceString("31-47"); + r.getAdditionalPlaces().setPlaceDescription("Window"); + r.getAdditionalPlaces().setPlaceIA5(new SequenceOfStringIA5()); + r.getAdditionalPlaces().getPlaceIA5().add("31A"); + r.getAdditionalPlaces().getPlaceIA5().add("31B"); + r.getAdditionalPlaces().setPlaceNum(new SequenceOfPlaceNum()); + r.getAdditionalPlaces().getPlaceNum().add(31L); + r.getAdditionalPlaces().getPlaceNum().add(32L); + + r.setBicyclePlaces(new PlacesType()); + r.getBicyclePlaces().setCoach("31A"); + r.getBicyclePlaces().setPlaceString("31-47"); + r.getBicyclePlaces().setPlaceDescription("Window"); + r.getBicyclePlaces().setPlaceIA5(new SequenceOfStringIA5()); + r.getBicyclePlaces().getPlaceIA5().add("31A"); + r.getBicyclePlaces().getPlaceIA5().add("31B"); + r.getBicyclePlaces().setPlaceNum(new SequenceOfPlaceNum()); + r.getBicyclePlaces().getPlaceNum().add(31L); + r.getBicyclePlaces().getPlaceNum().add(32L); + + + r.setCompartmentDetails(new CompartmentDetailsType()); + r.getCompartmentDetails().setCoachType( 1L); + r.getCompartmentDetails().setCompartmentType( 99L); + r.getCompartmentDetails().setSpecialAllocation( 50L); + r.getCompartmentDetails().setCoachTypeDescr("xwz"); + r.getCompartmentDetails().setCompartmentTypeDescr( "xwz"); + r.getCompartmentDetails().setSpecialAllocationDescr( "xwz"); + r.getCompartmentDetails().setPosition(CompartmentPositionType.upperLevel); + + r.setNumberOfOverbooked( 200L); + r.setBerth(new SequenceOfBerthDetailData()); + BerthDetailData b = new BerthDetailData(); + r.getBerth().add(b); + b.setBerthType(BerthTypeType.single); + b.setGender(CompartmentGenderType.female); + b.setNumberOfBerths( 999L); + + + r.setTariff(new SequenceOfTariffType()); + TariffType ta = new TariffType(); + r.getTariff().add(ta); + ta.setNumberOfPassengers(1L); + + ta.setPassengerType(PassengerType.senior); + ta.setAgeBelow( 40L); + ta.setAgeAbove( 60L); + ta.setTraverlerid(new SequenceOfTravelerId()); + ta.getTraverlerid().add(1L); + + ta.setRestrictedToCountryOfResidence( false); + ta.setRestrictedToRouteSection(new RouteSectionType()); + ta.getRestrictedToRouteSection().setStationCodeTable(CodeTableType.stationERA); + ta.getRestrictedToRouteSection().setFromStationNum( 123L); + ta.getRestrictedToRouteSection().setFromStationIA5( "123"); + ta.getRestrictedToRouteSection().setToStationNum( 234L); + ta.getRestrictedToRouteSection().setToStationIA5( "234"); + ta.getRestrictedToRouteSection().setFromStationNameUTF8( "A"); + ta.getRestrictedToRouteSection().setToStationNameUTF8( "B"); + + ta.setSeriesDataDetails(new SeriesDetailType()); + ta.getSeriesDataDetails().setSupplyingCarrier(2345L); + ta.getSeriesDataDetails().setOfferIdentification( 99L); + ta.getSeriesDataDetails().setSeries( 23456L); + + ta.setTariffIdNum( 72L); + ta.setTariffIdIA5( "72"); + ta.setTariffDesc( "Leasure Fare"); + ta.setReductionCard(new SequenceOfCardReferenceType()); + ta.getReductionCard().add(new CardReferenceType()); + + ta.getReductionCard().get(0).setCardIssuerNum(1234L); + ta.getReductionCard().get(0).setCardIssuerIA5( "1234"); + ta.getReductionCard().get(0).setCardIdNum(5678L); + ta.getReductionCard().get(0).setCardIdIA5( "5678"); + ta.getReductionCard().get(0).setCardName( "testcard"); + ta.getReductionCard().get(0).setCardType(123L); + ta.getReductionCard().get(0).setLeadingCardIdNum(3456L); + ta.getReductionCard().get(0).setLeadingCardIdIA5("3456"); + ta.getReductionCard().get(0).setTrailingCardIdNum(100L); + ta.getReductionCard().get(0).setTrailingCardIdIA5("100"); + + + r.setPriceType(PriceTypeType.travelPrice); + r.setPrice( 12345L); + + r.setVatDetails(new SequenceOfVatDetail()); + VatDetailType v1 = new VatDetailType(); + r.getVatDetails().add(v1); + v1.setAmount(10L); + v1.setCountry(80L); + v1.setPercentage(70L); + v1.setVatId("IUDGTE"); + + r.setTypeOfSupplement( 9L); + r.setNumberOfSupplements( 2L); + + r.setLuggage(new LuggageRestrictionType()); + + r.getLuggage().setMaxHandLuggagePieces( 2L); + r.getLuggage().setMaxNonHandLuggagePieces( 1L); + r.getLuggage().setRegisteredLuggage(new SequenceOfRegisteredLuggageType()); + r.getLuggage().getRegisteredLuggage().add(new RegisteredLuggageType()); + r.getLuggage().getRegisteredLuggage().add(new RegisteredLuggageType()); + r.getLuggage().getRegisteredLuggage().get(0).setRegistrationId("IODHUV"); + r.getLuggage().getRegisteredLuggage().get(0).setMaxWeight( 20L); + r.getLuggage().getRegisteredLuggage().get(0).setMaxSize( 100L); + r.getLuggage().getRegisteredLuggage().get(1).setRegistrationId("XXDHUV"); + r.getLuggage().getRegisteredLuggage().get(1).setMaxWeight( 21L); + r.getLuggage().getRegisteredLuggage().get(1).setMaxSize( 101L); + + r.setInfoText("reservation"); + + + } + + + private static void populateTravelerData(TravelerData td) { + + td.setGroupName("myGroup"); + td.setPreferedLanguage("EN"); + td.setTraveler(new SequenceOfTravelerType()); + TravelerType t = new TravelerType(); + td.getTraveler().add(t); + + t.setCountryOfIdCard(103L); + t.setCountryOfPassport(102L); + t.setCountryOfResidence(101L); + t.setCustomerIdIA5("DZE5gT"); + t.setCustomerIdNum(12345L); + t.setYearOfBirth(1901L); + t.setDayOfBirth(31L); + t.setFirstName("John"); + t.setGender(GenderType.male); + t.setIdCard("12345"); + t.setLastName("Dow"); + t.setPassengerType(PassengerType.senior); + t.setPassengerWithReducedMobility(false); + t.setPassportId("JDTS"); + t.setSecondName("Little"); + t.setTitle("PhD"); + t.setTicketHolder(true); + t.setStatus(new SequenceOfCustomerStatusType()); + CustomerStatusType cs = new CustomerStatusType(); + t.getStatus().add(cs); + cs.setCustomerStatus(1L); + cs.setCustomerStatusDescr("senior"); + } + + + private static void populateIssuingData(IssuingData id) { + + id.setActivated(true); + id.setCurrency("SRF"); + id.setCurrencyFract(3L); + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + id.setExtension(e1); + + id.setIssuedOnLine(12L); + id.setIssuedOnTrainIA5("123"); + id.setIssuedOnTrainNum(123L); + id.setIssuerName("name"); + id.setIssuerIA5("1"); + id.setIssuerNum(15000L); + id.setIssuerPNR("issuerTestPNR"); + id.setIssuingDay(1L); + id.setIssuingTime(600L); + id.setIssuingYear(2018L); + id.setSecurePaperTicket(false); + id.setSecurityProviderIA5("1"); + id.setSecurityProviderNum(1L); + id.setSpecimen(true); + id.setPointOfSale(new GeoCoordinateType()); + id.getPointOfSale().setGeoUnit(GeoUnitType.microDegree); + id.getPointOfSale().setCoordinateSystem(GeoCoordinateSystemType.wgs84); + id.getPointOfSale().setAccuracy(GeoUnitType.microDegree); + id.getPointOfSale().setHemisphereLatitude(HemisphereLatitudeType.east); + id.getPointOfSale().setHemisphereLongitude(HemisphereLongitudeType.north); + id.getPointOfSale().setLatitude(56789L); + id.getPointOfSale().setLongitude(12345L); + + } + + + private static void populateExtension(List extensions) { + + ExtensionData e1 = new ExtensionData(); + e1.setExtensionId("1"); + e1.setExtensionData(UperEncoder.bytesFromHexString("82DA")); + extensions.add(e1); + + ExtensionData e2 = new ExtensionData(); + e2.setExtensionId("2"); + e2.setExtensionData(UperEncoder.bytesFromHexString("83DA")); + extensions.add(e2); + + } + + + private static void populateControlDetail(ControlData controlDetail) { + + controlDetail.setAgeCheckRequired(false); + controlDetail.setIdentificationByPassportId(false); + controlDetail.setIdentificationByIdCard(false); + controlDetail.setOnlineValidationRequired(false); + controlDetail.setIdentificationItem(12L); + controlDetail.setPassportValidationRequired(false); + controlDetail.setRandomDetailedValidationRequired(50L); + controlDetail.setExtension(new ExtensionData()); + controlDetail.getExtension().setExtensionId("1"); + controlDetail.getExtension().setExtensionData(UperEncoder.bytesFromHexString("82DA")); + + controlDetail.setReductionCardCheckRequired(false); + controlDetail.setInfoText("control"); + controlDetail.setIdentificationByCardReference(new SequenceOfCardReferenceType()); + + CardReferenceType cr = new CardReferenceType(); + controlDetail.getIdentificationByCardReference().add(cr); + cr.setCardIdIA5("5678"); + cr.setCardIdNum(5678L); + cr.setCardIssuerIA5("1234"); + cr.setCardIssuerNum(1234L); + cr.setCardName("testcard"); + cr.setCardType(123L); + cr.setLeadingCardIdIA5("3456"); + cr.setLeadingCardIdNum(3456L); + cr.setTrailingCardIdIA5("100"); + cr.setTrailingCardIdNum(100L); + + controlDetail.setIncludedTickets(new SequenceOfTicketLinkType()); + TicketLinkType tl = new TicketLinkType(); + controlDetail.getIncludedTickets().add(tl); + tl.setIssuerName("XYZ"); + tl.setIssuerPNR("LDWDUR45"); + tl.setProductOwnerIA5("IEFHU"); + tl.setProductOwnerNum(1080L); + tl.setLinkMode(LinkMode.issuedTogether); + tl.setReferenceIA5("KDJET"); + tl.setReferenceNum(801234567890L); + tl.setTicketType(TicketType.openTicket); + + } + + } -- cgit v1.2.3