package org.uic.barcode.test.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.uic.barcode.ticket.api.impl.SimpleCardReference;
import org.uic.barcode.ticket.api.impl.SimpleControlDetail;
import org.uic.barcode.ticket.api.impl.SimpleCustomerStatusDescription;
import org.uic.barcode.ticket.api.impl.SimpleExtension;
import org.uic.barcode.ticket.api.impl.SimpleIssuingDetail;
import org.uic.barcode.ticket.api.impl.SimpleOpenTicket;
import org.uic.barcode.ticket.api.impl.SimpleStationPassage;
import org.uic.barcode.ticket.api.impl.SimpleTicketLink;
import org.uic.barcode.ticket.api.impl.SimpleToken;
import org.uic.barcode.ticket.api.impl.SimpleTraveler;
import org.uic.barcode.ticket.api.impl.SimpleTravelerDetail;
import org.uic.barcode.ticket.api.impl.SimpleUicRailTicket;
import org.uic.barcode.ticket.api.spec.ICardReference;
import org.uic.barcode.ticket.api.spec.IControlDetail;
import org.uic.barcode.ticket.api.spec.ICustomerStatusDescription;
import org.uic.barcode.ticket.api.spec.IExtension;
import org.uic.barcode.ticket.api.spec.IIssuingDetail;
import org.uic.barcode.ticket.api.spec.ILinkMode;
import org.uic.barcode.ticket.api.spec.IOpenTicket;
import org.uic.barcode.ticket.api.spec.IStationPassage;
import org.uic.barcode.ticket.api.spec.ITicketLink;
import org.uic.barcode.ticket.api.spec.IToken;
import org.uic.barcode.ticket.api.spec.ITraveler;
import org.uic.barcode.ticket.api.spec.IUicRailTicket;
public class SimpleUICTestTicket {
public static IUicRailTicket getUicTestTicket() {
IUicRailTicket ticket = new SimpleUicRailTicket();
populateTicket(ticket);
return ticket;
}
private static void populateTicket(IUicRailTicket ticket) {
ticket.setControlDetails(new SimpleControlDetail());
populate(ticket.getControlDetails());
ticket.setIssuerDetails(new SimpleIssuingDetail());
populateIssuingData(ticket.getIssuerDetails());
SimpleTravelerDetail td = new SimpleTravelerDetail();
populateTravelerData(td);
ticket.setTravelerDetails(td);
//OpenTicket
IOpenTicket do1 = new SimpleOpenTicket();
populate(do1);
ticket.addOpenTicket(do1);
//StationPassage
IStationPassage do2 = new SimpleStationPassage();
populateStationPassage(do2);
ticket.addStationPassage(do2);
//token
IToken to = new SimpleToken();
to.setTokenProvider("VDV");
byte[] ba = { (byte) 0x82, (byte) 0xDA };
to.setToken(ba);
ticket.addExtension(populateExtension());
}
/*
ticket stationPassage : {
productName "passage"
,station {8312345}
,stationNameUTF8 { "Amsterdam" }
,validFromDay 0
,validUntilDay 4
}
*/
private static void populateStationPassage(IStationPassage sp) {
sp.setProductName("passage");
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2018");
sp.setValidFrom(date);
} catch (ParseException e) {
e.printStackTrace();
}
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("04/01/2018");
sp.setValidUntil(date);
} catch (ParseException e) {
e.printStackTrace();
}
sp.addStation("8312345");
sp.addStationName("Amsterdam");
}
/*
{
token {tokenProviderIA5 "VDV", token '82DA'H }
,ticket openTicket : {
returnIncluded FALSE
infoText "openTicketInfo"
}
}
*/
private static void populate(IOpenTicket otd) {
otd.setInfoText("openTicketInfo");
otd.setReturnIncluded(false);
}
/*
,travelerDetail{
traveler {
{
firstName "John"
,secondName "Dow"
,idCard "12345"
,ticketHolder TRUE
,status {{customerStatusDescr "senior" }}
}
}
,groupName "myGroup"
}
*/
private static void populateTravelerData(SimpleTravelerDetail td) {
td.setGroupName("myGroup");
ITraveler tr = new SimpleTraveler();
tr.setIdCard("12345");
tr.setFirstName("John");
tr.setSecondName("Dow");
tr.setTicketHolder(true);
ICustomerStatusDescription cst = new SimpleCustomerStatusDescription();
tr.addStatusDescription(cst);
cst.setDescription("senior");
td.addTraveler(tr);
}
/*
,issuingDetail {
issuerNum 1080
issuingYear 2018
issuingDay 1
specimen TRUE,
securePaperTicket FALSE,
activated TRUE,
issuerPNR "issuerTestPNR",
issuedOnLine 12
}
*/
private static void populateIssuingData(IIssuingDetail iIssuingDetail) {
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2018");
iIssuingDetail.setIssuer("1080");
iIssuingDetail.setIssuingDate(date);
} catch (ParseException e) {
e.printStackTrace();
}
iIssuingDetail.setIssuerPNR("issuerTestPNR");
iIssuingDetail.setSpecimen(true);
iIssuingDetail.setSecurePaperTicket(false);
iIssuingDetail.setActivated(true);
iIssuingDetail.setIssuedOnLine(12);
}
/*
,extension {
{ extensionId "1", extensionData '82DA'H }
,{ extensionId "2", extensionData '83DA'H }
}
*/
private static IExtension populateExtension() {
IExtension ed1 = new SimpleExtension();
ed1.setId("1");
byte[] ba1 = { (byte) 0x82, (byte) 0xDA };
ed1.setBinarydata(ba1);
return ed1;
}
/*
,controlDetail {
identificationByCardReference {
{ trailingCardIdNum 100 }
}
,identificationByIdCard FALSE
,identificationByPassportId FALSE
,passportValidationRequired FALSE
,onlineValidationRequired FALSE
,ageCheckRequired FALSE
,reductionCardCheckRequired FALSE
,infoText "cd"
,includedTickets {
{ productOwnerIA5 "test" }
}
}
*/
private static void populate(IControlDetail iControlDetail) {
iControlDetail.setInfoText("cd");
iControlDetail.setAgeCheckRequired(false);
iControlDetail.setIdentificationByIdCard(false);
iControlDetail.setIdentificationByPassportId(false);
iControlDetail.setOnlineValidationRequired(false);
iControlDetail.setPassportValidationRequired(false);
iControlDetail.setReductionCardCheckRequired(false);
iControlDetail.getIdentificationByCardReference().add(populateCardRefrence());
iControlDetail.addLinkedTicket(populateLinkedTicket());
}
/*
*
*/
private static ITicketLink populateLinkedTicket() {
ITicketLink it = new SimpleTicketLink();
it.setProductOwner("test");
it.setLinkMode(ILinkMode.issuedTogether);
return it;
}
/*
{
trailingCardIdNum 100
}
*/
private static ICardReference populateCardRefrence() {
ICardReference cr = new SimpleCardReference();
cr.setTrailingCardId("100");
return cr;
}
public static void compare(IUicRailTicket ticket1, IUicRailTicket ticket2) {
assert(ticket1.getIssuerDetails().getIssuer().equals(ticket2.getIssuerDetails().getIssuer()));
}
}