package org.uic.barcode.ticket.api.test.testtickets;
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;
import org.uic.barcode.ticket.api.asn.omv3.DocumentData;
import org.uic.barcode.ticket.api.asn.omv3.ExtensionData;
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;
import org.uic.barcode.ticket.api.asn.omv3.SequenceOfCustomerStatusType;
import org.uic.barcode.ticket.api.asn.omv3.SequenceOfDocumentData;
import org.uic.barcode.ticket.api.asn.omv3.SequenceOfExtensionData;
import org.uic.barcode.ticket.api.asn.omv3.SequenceOfTravelerType;
import org.uic.barcode.ticket.api.asn.omv3.SequenceOfVatDetail;
import org.uic.barcode.ticket.api.asn.omv3.TariffType;
import org.uic.barcode.ticket.api.asn.omv3.TicketDetailData;
import org.uic.barcode.ticket.api.asn.omv3.TravelerData;
import org.uic.barcode.ticket.api.asn.omv3.TravelerType;
import org.uic.barcode.ticket.api.asn.omv3.UicRailTicketData;
import org.uic.barcode.ticket.api.asn.omv3.VatDetailType;
public class CarCarriageReservationTestTicketV3 {
/*
* rec1value UicRailTicketData ::= {
issuingDetail {
issuingYear 2018,
issuingDay 1,
issuingTime 600,
specimen TRUE,
securePaperTicket FALSE,
activated TRUE,
currency "EUR",
currencyFract 2,
issuerPNR "issuerTestPNR",
issuedOnLine 12
},
travelerDetail {
traveler {
{
firstName "John",
secondName "Dow",
idCard "12345",
ticketHolder TRUE,
status {
{
customerStatusDescr "senior"
}
}
}
},
groupName "myGroup"
},
transportDocument {
{
ticket carCarriageReservation : {
trainNum 123,
beginLoadingDate 10,
beginLoadingTime 0,
endLoadingTime 500,
referenceNum 810123456789,
serviceBrand 100,
serviceBrandAbrUTF8 "AZ",
serviceBrandNameUTF8 "special train",
stationCodeTable stationUICReservation,
fromStationNum 8100001,
toStationNum 800001,
coach "21",
place "41",
numberPlate "AD-DE-123",
trailerPlate "DX-AB-123",
carCategory 3,
textileRoof FALSE,
roofRackType bicycleRack,
roofRackHeight 20,
attachedBicycles 1,
attachedSurfboards 2,
loadingListEntry 421,
loadingDeck upper,
carrierNum {
1080,
1181
},
tariff {
numberOfPassengers 1,
restrictedToCountryOfResidence FALSE,
tariffIdNum 72,
tariffDesc "Large Car Full Fare"
},
priceType travelPrice,
price 12345,
vatDetail {
{
country 80,
percentage 70,
amount 10,
vatId "IUDGTE"
}
},
infoText "car carriage"
}
}
},
controlDetail {
identificationByCardReference {
{
trailingCardIdNum 100
}
},
identificationByIdCard FALSE,
identificationByPassportId FALSE,
passportValidationRequired FALSE,
onlineValidationRequired FALSE,
ageCheckRequired FALSE,
reductionCardCheckRequired FALSE,
infoText "cd"
},
extension {
{
extensionId "1",
extensionData '82DA'H
},
{
extensionId "2",
extensionData '83DA'H
}
}
}
*/
public static UicRailTicketData getUicTestTicket() {
UicRailTicketData ticket = new UicRailTicketData();
populateTicket(ticket);
return ticket;
}
public static String getEncodingHex() {
return "7804404004B14374F3E7D72F2A9979F4A13A90086280B4001"
+ "044A6F686E03446F770562C99B46B01106E797769DFC81"
+ "DB5E51DC9BDD5C0040AE43A8D6E9C02F60B0007D01802F"
+ "27C7BC4540318120AD06B9B832B1B4B0B6103A3930B4B7"
+ "3DCC50061A8001326204D1884C188B62455AC593309896"
+ "16C184B58B266639429A502086E127002802902698C2E4"
+ "CECA4086C2E4408CEAD8D8408CC2E4CA0460720389E230"
+ "0850349AB123D48A18C6C2E440C6C2E4E4D2C2CECA9004"
+ "0100B20004C6C80402C40A0B680590141ED00";
}
private static void populateTicket(UicRailTicketData ticket) {
ticket.setControlDetail(new ControlData());
populate(ticket.getControlDetail());
ticket.setIssuingDetail(new IssuingData());
populateIssuingData(ticket.getIssuingDetail());
TravelerData td = new TravelerData();
populateTravelerData(td);
ticket.setTravelerDetail(td);
SequenceOfDocumentData ds = new SequenceOfDocumentData();
//OpenTicket
DocumentData do1 = new DocumentData();
addReservation(do1);
ds.add(do1);
ticket.setTransportDocument(ds);
SequenceOfExtensionData ed = new SequenceOfExtensionData();
populateExtensionSequence(ed);
ticket.setExtension(ed);
}
private static void addReservation(DocumentData dd) {
TicketDetailData tdd = new TicketDetailData();
CarCarriageReservationData ticket = new CarCarriageReservationData();
ticket.setTrainNum(123L);
ticket.setReferenceNum(810123456789L);
ticket.setServiceBrandAbrUTF8("XYZ");
ticket.setServiceBrandNameUTF8("special train");
SequenceOfCarrierNum carriers = new SequenceOfCarrierNum();
carriers.add(1080L);
carriers.add(1181L);
ticket.setCarrierNum(carriers);
ticket.setFromStationNum(8100001L);
ticket.setToStationNum(800001L);
ticket.setServiceBrand(100L);
ticket.setPrice(12345L);
ticket.setPriceType(PriceTypeType.travelPrice);
ticket.setAttachedBicycles(1L);
ticket.setCarCategory(3L);
ticket.setInfoText("car carriage");
ticket.setLoadingDeck(LoadingDeckType.upper);
ticket.setNumberPlate("AD-DE-123");
ticket.setRoofRackHeight(20L);
ticket.setRoofRackType(RoofRackType.bicycleRack);
ticket.setServiceBrandAbrUTF8("AZ");
ticket.setServiceBrand(100L);
ticket.setTextileRoof(false);
ticket.setTrailerPlate("DX-AB-123");
ticket.setAttachedSurfboards(2L);
ticket.setLoadingListEntry(421L);
ticket.setVatDetails(new SequenceOfVatDetail());
ticket.getVatDetails().add(getVatDetail());
ticket.setTariff(getTariff());
ticket.setPlace("41");
ticket.setCoach("21");
ticket.setBeginLoadingDate(10L);
ticket.setBeginLoadingTime(0L);
ticket.setEndLoadingTime(500L);
tdd.setCarCarriageReservation(ticket);
dd.setTicket(tdd);
}
private static TariffType getTariff() {
TariffType tariff = new TariffType();
tariff.setNumberOfPassengers(1L);
tariff.setRestrictedToCountryOfResidence(false);
tariff.setTariffIdNum(72L);
tariff.setTariffDesc("Large Car Full Fare");
return tariff;
}
private static VatDetailType getVatDetail() {
VatDetailType v = new VatDetailType();
v.setAmount(10L);
v.setCountry(80L);
v.setPercentage(70L);
v.setVatId("IUDGTE");
return v;
}
private static void populateTravelerData(TravelerData td) {
td.setGroupName("myGroup");
SequenceOfTravelerType trs = new SequenceOfTravelerType();
TravelerType tr = new TravelerType();
tr.setIdCard("12345");
tr.setFirstName("John");
tr.setSecondName("Dow");
tr.setTicketHolder(true);
SequenceOfCustomerStatusType ts = new SequenceOfCustomerStatusType();
CustomerStatusType cst = new CustomerStatusType();
cst.setCustomerStatusDescr("senior");
ts.add(cst);
tr.setStatus(ts);
trs.add(tr);
td.setTraveler(trs);
}
private static void populateIssuingData(IssuingData issuingDetail) {
issuingDetail.setIssuingYear(2018L);
issuingDetail.setIssuingDay(1L);
issuingDetail.setIssuingTime(600L);
issuingDetail.setIssuerPNR("issuerTestPNR");
issuingDetail.setSpecimen(true);
issuingDetail.setSecurePaperTicket(false);
issuingDetail.setActivated(true);
issuingDetail.setIssuedOnLine(12L);
}
private static void populateExtensionSequence(SequenceOfExtensionData ed) {
ExtensionData ed1 = new ExtensionData();
ed1.setExtensionId("1");
byte[] ba1 = { (byte) 0x82, (byte) 0xDA };
ed1.setExtensionData(ba1);
ExtensionData ed2 = new ExtensionData();
ed2.setExtensionId("2");
byte[] ba2 = { (byte) 0x83, (byte) 0xDA };
ed2.setExtensionData(ba2);
ed.add(ed1);
ed.add(ed2);
}
private static void populate(ControlData controlDetail) {
controlDetail.infoText = "cd";
controlDetail.setAgeCheckRequired(false);
controlDetail.setIdentificationByIdCard(false);
controlDetail.setIdentificationByPassportId(false);
controlDetail.setOnlineValidationRequired(false);
controlDetail.setPassportValidationRequired(false);
controlDetail.setReductionCardCheckRequired(false);
controlDetail.setIdentificationByCardReference(new SequenceOfCardReferenceType());
controlDetail.getIdentificationByCardReference().add(populateCardRefrence());
}
/*
{
trailingCardIdNum 100
}
*/
private static CardReferenceType populateCardRefrence() {
CardReferenceType cr = new CardReferenceType();
cr.setTrailingCardIdNum(100L);
return cr;
}
public static byte[] getEncodingBytes() {
return UperEncoder.bytesFromHexString(getEncodingHex());
}
}