diff options
Diffstat (limited to '')
57 files changed, 17613 insertions, 0 deletions
diff --git a/src/org/uic/ticket/api/EncodingFormatException.java b/src/org/uic/ticket/api/EncodingFormatException.java new file mode 100644 index 0000000..2d80598 --- /dev/null +++ b/src/org/uic/ticket/api/EncodingFormatException.java @@ -0,0 +1,26 @@ +/*
+ *
+ */
+package org.uic.ticket.api;
+
+
+/**
+ * The Class EncodingFormatException.
+ */
+public class EncodingFormatException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6949233719793346110L;
+
+ /**
+ * Instantiates a new encoding format exception. The exception indicates a violation of the asn.1 ticket format specification
+ *
+ * @param message the message
+ */
+ public EncodingFormatException(String message) {
+ super(message);
+ }
+
+}
diff --git a/src/org/uic/ticket/api/UicRailTicketCoder.java b/src/org/uic/ticket/api/UicRailTicketCoder.java new file mode 100644 index 0000000..0221526 --- /dev/null +++ b/src/org/uic/ticket/api/UicRailTicketCoder.java @@ -0,0 +1,171 @@ +/*
+ *
+ */
+package org.uic.ticket.api;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.uic.ticket.api.asn.omv1.UicRailTicketData;
+import org.uic.ticket.api.spec.IUicRailTicket;
+import org.uic.ticket.api.utils.Api2OpenAsnEncoder;
+import org.uic.ticket.api.utils.OpenAsn2ApiDecoder;
+
+
+/**
+ * The Class UicRailTicketCoder.
+ */
+public class UicRailTicketCoder {
+
+
+ /**
+ * encode an UicRailTicket to asn.1 format using PER unaligned encoding
+ *
+ * @param outputStream the output stream for the encoded data
+ * @param uicRailTicket the uic rail ticket to be encoded
+ * @param version version of the asn1 specification
+ * @throws IOException signals that an I/O exception has occurred.
+ * @throws EncodingFormatException signals that a format rule of the asn.1 specification was violated.
+ */
+ public byte[] encodeTag(IUicRailTicket uicRailTicket, int version) throws IOException, EncodingFormatException {
+
+
+ byte[] content = encode(uicRailTicket, version);
+
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+
+ String idTag = "U_FLEX";
+ String versionId = "01";
+ int length = 8;
+
+ //size of data
+ length = length + content.length;
+
+ //size of length element
+ length = length + 4;
+ String lengthElement = String.format("%04d",length);
+
+ outputStream.write(idTag.getBytes());
+ outputStream.write(versionId.getBytes());
+ outputStream.write(lengthElement.getBytes());
+
+ outputStream.write(content);
+
+ return outputStream.toByteArray();
+
+}
+
+
+
+
+ /**
+ * encode an UicRailTicket to asn.1 format using PER unaligned encoding
+ *
+ * @param outputStream the output stream for the encoded data
+ * @param uicRailTicket the uic rail ticket to be encoded
+ * @param version of the asn1 specification
+ * @throws IOException signals that an I/O exception has occurred.
+ * @throws EncodingFormatException signals that a format rule of the asn.1 specification was violated.
+ */
+ public byte[] encode (IUicRailTicket uicRailTicket, int version) throws IOException, EncodingFormatException{
+
+ if (version != 1) {
+ throw new EncodingFormatException(String.format("Encoding version %d not supported", version));
+ }
+
+ Api2OpenAsnEncoder uicEncoder = new Api2OpenAsnEncoder();
+
+ UicRailTicketData asnUicRailTicketData = uicEncoder.populateToAsn1Model(uicRailTicket);
+
+ return asnUicRailTicketData.encode();
+
+ }
+
+
+ /**
+ * encode an UicRailTicket to asn.1 format using PER unaligned encoding
+ *
+ * @param outputStream the output stream for the encoded data
+ * @param uicRailTicket the uic rail ticket to be encoded
+ * @param version of the asn1 specification
+ * @throws IOException signals that an I/O exception has occurred.
+ * @throws EncodingFormatException signals that a format rule of the asn.1 specification was violated.
+ */
+ public void encode ( ByteArrayOutputStream outputStream, IUicRailTicket uicRailTicket, int version) throws IOException, EncodingFormatException{
+
+ if (version != 1) {
+ throw new EncodingFormatException(String.format("Encoding version %d not supported", version));
+ }
+
+ Api2OpenAsnEncoder uicEncoder = new Api2OpenAsnEncoder();
+
+ UicRailTicketData asnUicRailTicketData = uicEncoder.populateToAsn1Model(uicRailTicket);
+
+ outputStream.write(asnUicRailTicketData.encode());
+
+ return;
+
+ }
+
+ /**
+ * Decode a rail ticket from asn.1 unaligned PER encoded data.
+ *
+ * @param byteData the asn.1 PER encoded byte data
+ * @return the decoded uic rail ticket
+ * @throws IOException signals that an I/O exception has occurred.
+ * @throws EncodingFormatException
+ */
+ public IUicRailTicket decodeFromAsn (byte[] byteData, int version) throws IOException, EncodingFormatException{
+
+ if (version != 1) {
+ throw new EncodingFormatException(String.format("Encoding version %d not supported", version));
+ }
+
+ UicRailTicketData asnUicRailTicketData = UicRailTicketData.decode(byteData);
+
+ OpenAsn2ApiDecoder uicDecoder = new OpenAsn2ApiDecoder();
+
+ IUicRailTicket uicRailTicket = uicDecoder.decodeFromAsn(asnUicRailTicketData);
+
+ return uicRailTicket;
+
+ }
+
+
+ /**
+ * Decode a rail ticket from asn.1 unaligned PER encoded data.
+ * @param version of the asn1 specification
+ * @param input stream of the asn.1 PER encoded data
+ * @return the decoded uic rail ticket
+ * @throws IOException signals that an I/O exception has occurred.
+ * @throws EncodingFormatException
+ */
+ public IUicRailTicket decodeFromAsn (InputStream input, int version) throws IOException, EncodingFormatException{
+
+ if (version != 1) {
+ throw new EncodingFormatException(String.format("Encoding version %d not supported", version));
+ }
+
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+
+ int nRead;
+ byte[] data = new byte[16384];
+
+ while ((nRead = input.read(data, 0, data.length)) != -1) {
+ buffer.write(data, 0, nRead);
+ }
+
+ buffer.flush();
+
+ byte[] byteData = buffer.toByteArray();
+
+ return decodeFromAsn (byteData, version);
+
+
+ }
+
+
+
+
+}
diff --git a/src/org/uic/ticket/api/UnsuportedFeatureException.java b/src/org/uic/ticket/api/UnsuportedFeatureException.java new file mode 100644 index 0000000..ba5abae --- /dev/null +++ b/src/org/uic/ticket/api/UnsuportedFeatureException.java @@ -0,0 +1,30 @@ +/*
+ *
+ */
+package org.uic.ticket.api;
+
+/**
+ * The Class EncodingFormatException.
+ */
+public class UnsuportedFeatureException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3156877999150353704L;
+
+ /**
+ *
+ */
+
+
+ /**
+ * Instantiates a new encoding format exception. The exception indicates a violation of the asn.1 ticket format specification
+ *
+ * @param message the message
+ */
+ public UnsuportedFeatureException(String message) {
+ super(message);
+ }
+
+}
diff --git a/src/org/uic/ticket/api/package.html b/src/org/uic/ticket/api/package.html new file mode 100644 index 0000000..c7b3611 --- /dev/null +++ b/src/org/uic/ticket/api/package.html @@ -0,0 +1,9 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>UIC ticket data API</head>
+<body>
+ This API provides a specification of ticket data as an interface and an implementation of an encoder/decoder to encode and decode ticket data to an asn.1 PER encoded byte stream according to the UIC specification.
+ </br>
+ Any ticket data implementing the interface defined in package <b>spec</b> can be encoded/decoded. The package <b>impl</b> provides a simple implementation of the ticket.
+</body>
+</html>
\ No newline at end of file diff --git a/src/org/uic/ticket/api/spec/IBerth.java b/src/org/uic/ticket/api/spec/IBerth.java new file mode 100644 index 0000000..78a9780 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IBerth.java @@ -0,0 +1,61 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import org.uic.ticket.api.EncodingFormatException;
+import org.uic.ticket.api.asn.omv1.BerthTypeType;
+import org.uic.ticket.api.asn.omv1.CompartmentGenderType;
+
+
+/**
+ * The Interface IBerth to specify the number and type of reserved berths in a reservation.
+ */
+public interface IBerth {
+
+ /**
+ * Gets the type of the berth (Single, Special, Double,..).
+ * -- sleeper compartment types corresponding to UIC leaflet 918.1
+ *
+ * @return the type
+ */
+ public BerthTypeType getType() ;
+
+ /**
+ * Sets the type of the Berth.
+ * -- sleeper compartment types corresponding to UIC leaflet 918.1
+ *
+ * @param type the new berth type
+ */
+ public void setType(BerthTypeType type);
+
+ /**
+ * Gets the number of berths.
+ *
+ * @return the number of berths reserved for the specified type of berth.
+ */
+ public int getNumberOfBerths();
+
+ /**
+ * Sets the number of berths reserved for the specified type of berth. The largest number allowed is 200.
+ *
+ * @param numberOfBerths the new number of berths
+ * @throws EncodingFormatException
+ */
+ public void setNumberOfBerths(int numberOfBerths);
+
+ /**
+ * Gets the gender information of the compartment reserved (family, male, female, mixed,..).
+ *
+ * @return the gender
+ */
+ public CompartmentGenderType getGender();
+
+ /**
+ * Sets the gender information of the compartment reserved (family, male, female, mixed,..).
+ *
+ * @param gender the new gender
+ */
+ public void setGender(CompartmentGenderType gender) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/ICarCarriageReservation.java b/src/org/uic/ticket/api/spec/ICarCarriageReservation.java new file mode 100644 index 0000000..6465e29 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ICarCarriageReservation.java @@ -0,0 +1,594 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+import org.uic.ticket.api.asn.omv1.LoadingDeckType;
+import org.uic.ticket.api.asn.omv1.PriceTypeType;
+import org.uic.ticket.api.asn.omv1.RoofRackType;
+
+/**
+ * The Interface ICarCarriageReservation.
+ *
+ * The data describe a car carriage reservation
+ *
+ */
+public interface ICarCarriageReservation extends IDocumentData {
+
+ /**
+ * Gets the train.
+ *
+ * @return the train
+ */
+ public String getTrain();
+
+ /**
+ * Sets the train.
+ *
+ * @param train the new train
+ */
+ public void setTrain(String train);
+
+ /**
+ * Gets the booking reference.
+ *
+ * The booking reference must contain the booking reference exchanged via
+ * booking interface according to UIC leaflet 918.1 in case this interface was used.
+ *
+ * @return the booking reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * The booking reference must contain the booking reference exchanged via
+ * booking interface according to UIC leaflet 918.1 in case this interface was used.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product id.
+ *
+ * A product id to be looked up in a product catalog
+ *
+ * @return the product id
+ */
+ public String getProductId() ;
+
+ /**
+ * Sets the product id.
+ *
+ * @param productId the new product id
+ */
+ public void setProductId(String productId);
+
+ /**
+ * Gets the product owner.
+ *
+ * The company that defined the product. This is the allocating railway in case of car carriage reservations.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner() ;
+
+ /**
+ * Sets the product owner.
+ *
+ * The company that defined the product. This is the allocating railway in case of car carriage reservations.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the service brand of the train.
+ *
+ * @return the service brand of the train
+ */
+ public IServiceBrand getServiceBrand();
+
+ /**
+ * sets the service brand of the train.
+ * @return
+ *
+ * @return the service brand of the train
+ */
+ public void setServiceBrand(IServiceBrand serviceBrand);
+
+
+ /**
+ * Gets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in case of reservations is the UIC station codes table for reservations
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in case of reservations is the UIC station codes table for reservations
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the from station code
+ *
+ * @return the from station code
+ */
+ public String getFromStation();
+
+ /**
+ * Sets the from station code
+ *
+ * @param fromStation the new from station code
+ */
+ public void setFromStation(String fromStation);
+
+ /**
+ * Gets the to station code
+ *
+ * @return the to station code
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station code
+ *
+ * @param toStation the new to station code
+ */
+ public void setToStation(String toStation);
+
+ /**
+ * Gets the from station name.
+ *
+ * Station names should be used only in bilateral scenarios where the
+ * control devices do not provide a station code table.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName();
+
+ /**
+ * Sets the from station name.
+ *
+ * Station names should be used only in bilateral scenarios where the
+ * control devices do not provide a station code table.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * Station names should be used only in bilateral scenarios where the
+ * control devices do not provide a station code table.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * Station names should be used only in bilateral scenarios where the
+ * control devices do not provide a station code table.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+
+ /**
+ * Gets the carriers responsible for the transport
+ *
+ * @return the carriers
+ */
+ public Collection<String> getCarriers();
+
+ /**
+ * Adds a carrier responsible for the transport
+ *
+ * @param carrier the carrier
+ */
+ public void addCarrier(String carrier);
+
+
+ /**
+ * Gets the service level.
+ *
+ * Service level codes are defined in UIC leaflet 918.1
+ *
+ * @return the service level
+ */
+ public String getServiceLevel();
+
+ /**
+ * Sets the service level.
+ *
+ * Service level codes are defined in UIC leaflet 918.1
+ *
+ * @param serviceLevel the new service level
+ */
+ public void setServiceLevel(String serviceLevel);
+
+
+ /**
+ * Gets the place type details.
+ *
+ * @return the place type details
+ */
+ public ICompartmentDetails getCompartmentDetails();
+
+ /**
+ * Sets the place type details.
+ *
+ * @param compartmentDetails the new place type details
+ */
+ public void setCompartmentDetails(ICompartmentDetails compartmentDetails);
+
+ /**
+ * Gets the price type.
+ *
+ * price type indicates whether the price for the travel is included or not
+ *
+ * @return the price type
+ */
+ public PriceTypeType getPriceType();
+
+ /**
+ * Sets the price type.
+ *
+ * price type indicates whether the price for the travel is included or not
+ *
+ * @param priceType the new price type
+ */
+ public void setPriceType(PriceTypeType priceType) ;
+
+ /**
+ * Gets the info text for the control staff
+ *
+ * @return the info text for the control staff
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text for the control staff
+ *
+ * @param infoText the new info text for the control staff
+ */
+ public void setInfoText(String infoText);
+
+ /**
+ * Gets the proprietary extension
+ *
+ * @return the proprietary extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the proprietary extension.
+ *
+ * @param extension the new proprietary extension
+ */
+ public void setExtension(IExtension extension);
+
+ /**
+ * Gets the coach.
+ *
+ * @return the coach
+ */
+ public String getCoach();
+
+ /**
+ * Sets the coach.
+ *
+ * @param coach the new coach
+ */
+ public void setCoach(String coach);
+
+ /**
+ * Gets the place.
+ *
+ * @return the place
+ */
+ public String getPlace();
+
+ /**
+ * Sets the place.
+ *
+ * @param place the new place
+ */
+ public void setPlace(String place);
+
+ /**
+ * Gets the tariff.
+ *
+ * @return the tariff
+ */
+ public ITariff getTariff();
+
+ /**
+ * Sets the tariff.
+ *
+ * @param tariff the new tariff
+ */
+ public void setTariff(ITariff tariff);
+
+ /**
+ * Gets the number plate.
+ *
+ * @return the number plate
+ */
+ public String getNumberPlate();
+
+ /**
+ * Sets the number plate.
+ *
+ * @param numberPlate the new number plate
+ */
+ public void setNumberPlate(String numberPlate);
+
+ /**
+ * Gets the trailer plate.
+ *
+ * @return the trailer plate
+ */
+ public String getTrailerPlate();
+
+ /**
+ * Sets the trailer plate.
+ *
+ * @param trailerPlate the new trailer plate
+ */
+ public void setTrailerPlate(String trailerPlate);
+
+ /**
+ * Gets the car category.
+ *
+ * Car categories are defined in UIC leaflet 918.1
+ *
+ * @return the car category
+ */
+ public int getCarCategory() ;
+
+ /**
+ * Sets the car category.
+ *
+ * Car categories are defined in UIC leaflet 918.1
+ *
+ * @param carCategory the new car category
+ */
+ public void setCarCategory(int carCategory);
+
+ /**
+ * Gets the boat category.
+ *
+ * Boat categories are defined in UIC leaflet 918.1
+ *
+ * @return the boat category
+ */
+ public int getBoatCategory();
+
+ /**
+ * Sets the boat category.
+ *
+ * Boat categories are defined in UIC leaflet 918.1
+ *
+ * @param boatCategory the new boat category
+ */
+ public void setBoatCategory(int boatCategory) ;
+
+ /**
+ * Checks if the car has a textile roof.
+ *
+ * @return true, if the car has a textile roof
+ */
+ public boolean isTextileRoof();
+
+ /**
+ * Sets that the car bas a textile roof.
+ *
+ * @param textileRoof the textile roof of a car
+ */
+ public void setTextileRoof(boolean textileRoof);
+
+ /**
+ * Gets the roof rack type.
+ *
+ * Roof rack types are defined in UIC leaflet 918.1
+ *
+ * @return the roof rack type
+ */
+ public RoofRackType getRoofRackType();
+
+ /**
+ * Sets the roof rack type.
+ *
+ * Roof rack types are defined in UIC leaflet 918.1
+ *
+ * @param roofRackType the new roof rack type
+ */
+ public void setRoofRackType(RoofRackType roofRackType);
+
+ /**
+ * Gets the roof rack height in cm
+ *
+ * @return the roof rack height in cm
+ */
+ public int getRoofRackHeight();
+
+ /**
+ * Sets the roof rack height in cm
+ *
+ * @param roofRackHeight the new roof rack height in cm
+ */
+ public void setRoofRackHeight(int roofRackHeight);
+
+ /**
+ * Gets the number of attached boats.
+ *
+ * @return the number of attached boats
+ */
+ public int getAttachedBoats();
+
+ /**
+ * Sets the number of attached boats.
+ *
+ * @param attachedBoats the number of attached boats
+ */
+ public void setAttachedBoats(int attachedBoats) ;
+
+ /**
+ * Gets the number of attached bicycles.
+ *
+ * @return the number of attached bicycles
+ */
+ public int getAttachedBicycles();
+
+ /**
+ * Sets the number of attached bicycles.
+ *
+ * @param attachedBicycles the number of attached bicycles
+ */
+ public void setAttachedBicycles(int attachedBicycles);
+
+ /**
+ * Gets the number of attached surfboards.
+ *
+ * @return the number of attached surfboards
+ */
+ public int getAttachedSurfboards();
+
+ /**
+ * Sets the number of attached surfboards.
+ *
+ * @param attachedSurfboards the number of attached surfboards
+ */
+ public void setAttachedSurfboards(int attachedSurfboards);
+
+ /**
+ * Gets the begin of the loading on the train
+ *
+ * @return the begin loading date and time
+ */
+ public Date getBeginLoading();
+
+ /**
+ * Sets the begin of the loading on the train
+ *
+ * @param beginLoading the begin loading date and time
+ */
+ public void setBeginLoading(Date beginLoading);
+
+ /**
+ * Gets the end of the loading on the train
+ *
+ * @return the end of the loading on the train
+ */
+ public Date getEndLoading();
+
+ /**
+ * Sets the end of the loading on the train
+ *
+ * @param endLoading the end of the loading on the train
+ */
+ public void setEndLoading(Date endLoading);
+
+ /**
+ * Gets the loading list entry.
+ *
+ * @return the loading list entry
+ */
+ public int getLoadingListEntry();
+
+ /**
+ * Sets the loading list entry.
+ *
+ * @param loadingListEntry the new loading list entry
+ */
+ public void setLoadingListEntry(int loadingListEntry);
+
+ /**
+ * Gets the loading deck.
+ *
+ * @return the loading deck
+ */
+ public LoadingDeckType getLoadingDeck();
+
+ /**
+ * Sets the loading deck.
+ *
+ * @param loadingDeck the new loading deck
+ */
+ public void setLoadingDeck(LoadingDeckType loadingDeck);
+
+
+ /**
+ * Sets the price.
+ *
+ *
+ * @param price
+ */
+ public void setPrice(Long price);
+
+
+ /**
+ * Gets the price.
+ *
+ * The price
+ *
+ * @return the price
+ */
+ public Long getPrice();
+
+
+ /**
+ * Gets the included add on tickets.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @return the included add ons
+ */
+ public Collection<IVatDetail> getVatDetails();
+
+ /**
+ * Adds an included add on ticket.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @param includedAddOn the included add on
+ */
+ public void addVatDetail(IVatDetail vatDetail) ;
+
+
+ /**
+ * Gets the departure date time offset to UTC in units of 15 minutes.
+ *
+ * @return the loading time UTC offset
+ */
+ public Long getLoadingTimeUTCoffset();
+
+ /**
+ * Sets the departure date time.
+ *
+ * @param the loading time UTC offset
+ */
+ public void setLoadingTimeUTCoffset(Long UTCoffset) ;
+
+
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/ICardReference.java b/src/org/uic/ticket/api/spec/ICardReference.java new file mode 100644 index 0000000..38a2194 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ICardReference.java @@ -0,0 +1,107 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+/**
+ * The Interface ICardReference.
+ *
+ * ICardReference defines the data for a reference to a customer card
+ */
+public interface ICardReference {
+
+
+ /**
+ * Gets the card issuer.
+ *
+ * For rail cards the RICS code has to be used.
+ *
+ * @return the card issuer
+ */
+ public String getCardIssuer();
+
+ /**
+ * Sets the card issuer.
+ *
+ * For rail cards the RICS code has to be used.
+ *
+ * @param cardIssuer the new card issuer
+ */
+ public void setCardIssuer(String cardIssuer);
+
+ /**
+ * Gets the card id.
+ *
+ * The id will be trimmed. The maximum size is 20 positions
+ *
+ * @return the card id
+ */
+ public String getCardId();
+
+ /**
+ * Sets the card id.
+ *
+ * @param cardId the new card id
+ */
+ public void setCardId(String cardId);
+
+ /**
+ * Gets the card name.
+ *
+ * @return the card name
+ */
+ public String getCardName();
+
+ /**
+ * Sets the card name.
+ *
+ *
+ * @param cardName the new card name
+ */
+ public void setCardName(String cardName);
+
+ /**
+ * Gets the card type.
+ *
+ * @return the card type
+ */
+ public int getCardType();
+
+ /**
+ * Sets the card type.
+ *
+ * Code list defined and published by the issuer of the card
+ *
+ * @param cardType the new card type
+ */
+ public void setCardType(int cardType);
+
+ /**
+ * Gets the leading card id in case the entire cardId must not be provided.
+ *
+ * @return the leading card id
+ */
+ public String getLeadingCardId();
+
+ /**
+ * Sets the leading card id in case the entire cardId must not be provided.
+ *
+ * @param leadingCardId the new leading card id
+ */
+ public void setLeadingCardId(String leadingCardId);
+
+ /**
+ * Gets the trailing card id in case the entire cardId must not be provided.
+ *
+ * @return the trailing card id
+ */
+ public String getTrailingCardId();
+
+ /**
+ * Sets the trailing card id in case the entire cardId must not be provided.
+ *
+ * @param trailingCardId the new trailing card id
+ */
+ public void setTrailingCardId(String trailingCardId);
+
+}
diff --git a/src/org/uic/ticket/api/spec/ICompartmentDetails.java b/src/org/uic/ticket/api/spec/ICompartmentDetails.java new file mode 100644 index 0000000..4e05801 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ICompartmentDetails.java @@ -0,0 +1,128 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import org.uic.ticket.api.asn.omv1.CompartmentPositionType;
+
+/**
+ * The Interface ICompartmentDetails.
+ *
+ * ICompartmentDetails defines details on reserved place types
+ *
+ * The codes corresponds to UIC leaflet 918.1 element 51
+ *
+ */
+public interface ICompartmentDetails {
+
+ /**
+ * Gets the coach type.
+ *
+ * The codes corresponds to UIC leaflet 918.1 element 51 position 1 and 2
+ *
+ * @return the coach type
+ */
+ public int getCoachType();
+
+ /**
+ * Sets the coach type.
+ *
+ * The codes corresponds to UIC leaflet 918.1 element 51 position 1 and 2
+ *
+ * @param coachType the new coach type
+ */
+ public void setCoachType(int coachType);
+
+ /**
+ * Gets the compartment type.
+ *
+ * The codes corresponds to UIC leaflet 918.1 element 51 position 3 and 4
+ *
+ * @return the compartment type
+ */
+ public int getCompartmentType() ;
+
+ /**
+ * Sets the compartment type.
+ *
+ * The codes corresponds to UIC leaflet 918.1 element 51 position 3 and 4
+ *
+ * @param compartmentType the new compartment type
+ */
+ public void setCompartmentType(int compartmentType);
+
+ /**
+ * Gets the special allocation.
+ *
+ * The codes corresponds to UIC leaflet 918.1 element 51 position 5 and 6
+ *
+ * @return the special allocation
+ */
+ public int getSpecialAllocation() ;
+
+ /**
+ * Sets the special allocation.
+ *
+ * The codes corresponds to UIC leaflet 918.1 element 51 position 5 and 6
+ *
+ * @param specialAllocation the new special allocation
+ */
+ public void setSpecialAllocation(int specialAllocation);
+
+ /**
+ * Gets the coach type description.
+ *
+ * @return the coach type description
+ */
+ public String getCoachTypeDescr();
+
+ /**
+ * Sets the coach type description.
+ *
+ * @param coachTypeDescr the new coach type description
+ */
+ public void setCoachTypeDescr(String coachTypeDescr);
+
+ /**
+ * Gets the compartment type description.
+ *
+ * @return the compartment type description
+ */
+ public String getCompartmentTypeDescr();
+
+ /**
+ * Sets the compartment type description
+ *
+ * @param comparttmentTypeDescr the new compartment type description
+ */
+ public void setCompartmentTypeDescr(String comparttmentTypeDescr);
+
+ /**
+ * Gets the special allocation description.
+ *
+ * @return the special allocation description
+ */
+ public String getSpecialAllocationDescr();
+
+ /**
+ * Sets the special allocation description.
+ *
+ * @param specialAllocationDescr the new special allocation description
+ */
+ public void setSpecialAllocationDescr(String specialAllocationDescr);
+
+ /**
+ * Gets the position in trains with different decks.
+ *
+ * @return the position
+ */
+ public CompartmentPositionType getPosition();
+
+ /**
+ * Sets the position of the compartment in trains with different decks
+ *
+ * @param position the new position
+ */
+ public void setPosition(CompartmentPositionType position);
+
+}
diff --git a/src/org/uic/ticket/api/spec/IControlDetail.java b/src/org/uic/ticket/api/spec/IControlDetail.java new file mode 100644 index 0000000..dbfd001 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IControlDetail.java @@ -0,0 +1,249 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+/**
+ * The Interface IControlDetail.
+ *
+ *
+ * IControlDetails provides data supporting the control process:
+ * -- - list of items which the traveler can use to identify himself or the unique
+ * -- usage of the ticket
+ * -- (card ids, parts or identity card numbers, credit card numbers,..)
+ * -- - hints on the validation to be made on board
+ */
+public interface IControlDetail {
+
+ /**
+ * Gets the card references the traveler can use to identify himself.
+ *
+ * @return the card references
+ */
+ public Collection<ICardReference> getIdentificationByCardReference();
+
+
+
+ /**
+ * Adds a card references the traveler can use to identify himself.
+ *
+ * @param cardReference the card reference
+ */
+ public void addIdentificationByCardReference(ICardReference cardReference);
+
+
+ /**
+ * Checks if the traveler can be identified by id card.
+ *
+ * @return true, if identification by id card is possible
+ */
+ public boolean isIdentificationByIdCard();
+
+
+ /**
+ * Sets whether the traveler can be identified by id card.
+ *
+ * @param identificationByIdCard the new identification by id card flag
+ */
+ public void setIdentificationByIdCard(boolean identificationByIdCard);
+
+
+ /**
+ * Checks whether the traveler can be identified by passport id.
+ *
+ * @return true, if the traveler can be identified by passport id
+ */
+ public boolean isIdentificationByPassportId();
+
+
+ /**
+ * Sets whether the traveler can be identified by passport id.
+ *
+ * @param identificationByPassportId the new identification by passport id flag
+ */
+ public void setIdentificationByPassportId(boolean identificationByPassportId);
+
+
+ /**
+ * Gets the identification item code.
+ *
+ * For future use, no code list defined yet
+ *
+ * @return the identification item
+ */
+ public int getIdentificationItem();
+
+
+ /**
+ * Sets the identification item.
+ *
+ * For future use, no code list defined yet
+ *
+ * @param identificationItem the new identification item
+ */
+ public void setIdentificationItem(int identificationItem);
+
+
+ /**
+ * Checks if passport validation is required.
+ *
+ * @return true, if is passport validation required
+ */
+ public boolean isPassportValidationRequired();
+
+
+ /**
+ * Sets the passport validation required.
+ *
+ * @param passportValidationRequired the new passport validation required flag
+ */
+ public void setPassportValidationRequired(boolean passportValidationRequired);
+
+
+ /**
+ * Checks if is online validation required.
+ *
+ * In this case the ticket must be validated with the online server holding the ticket.
+ * This is usually the server of the product owner of a ticket.
+ *
+ * @return true, if is online validation required
+ */
+ public boolean isOnlineValidationRequired();
+
+
+ /**
+ * Sets the online validation required.
+ *
+ * In this case the ticket must be validated with the online server holding the ticket.
+ * This is usually the server of the product owner of a ticket.
+ *
+ * @param onlineValidationRequired the new online validation required
+ */
+ public void setOnlineValidationRequired(boolean onlineValidationRequired);
+
+
+ /**
+ * Gets the random detailed validation required.
+ *
+ * This indicates to the control device, that this ticket type should be
+ * checked in more detail in the indicated percentage of cases.
+ *
+ * The ticket type is identified by:
+ * - product owner
+ * - type of the ticket (Reservation, Open Ticket, Pass,..)
+ *
+ * The detailed inspection might be implemented by storing the entire bar code data for
+ * further inspection and in taking a picture of the paper ticket.
+ *
+ * @return the random detailed validation required
+ */
+ public int getRandomDetailedValidationRequired();
+
+
+ /**
+ * Sets the random detailed validation required.
+ *
+ * This indicates to the control device, that this ticket type should be
+ * checked in more detail in the indicated percentage of cases.
+ *
+ * The ticket type is identified by:
+ * - product owner
+ * - type of the ticket (Reservation, Open Ticket, Pass,..)
+ *
+ * The detailed inspection might be implemented by storing the entire bar code data for
+ * further inspection and in taking a picture of the paper ticket.
+ *
+ * @param randomOnlineValidationRequired the new random detailed validation required
+ */
+ public void setRandomDetailedValidationRequired(int randomOnlineValidationRequired);
+
+
+ /**
+ * Checks if an age check on the passengers is required.
+ *
+ * @return true, if an age check on the passengers is required
+ */
+ public boolean isAgeCheckRequired();
+
+
+ /**
+ * Sets whether an age check on the passengers is required.
+ *
+ * @param ageCheckRequired the new age check required flag
+ */
+ public void setAgeCheckRequired(boolean ageCheckRequired);
+
+
+ /**
+ * Checks if is reduction card check required.
+ *
+ * @return true, if is reduction card check required
+ */
+ public boolean isReductionCardCheckRequired();
+
+
+ /**
+ * Sets the reduction card check required.
+ *
+ * @param reductionCardCheckRequired the new reduction card check required
+ */
+ public void setReductionCardCheckRequired(boolean reductionCardCheckRequired);
+
+
+ /**
+ * Gets the info text for the control staff.
+ *
+ * @return the info text for the control staff
+ */
+ public String getInfoText();
+
+
+ /**
+ * Sets the info text for the control staff.
+ *
+ * @param infoText the new info text for the control staff
+ */
+ public void setInfoText(String infoText);
+
+
+ /**
+ * Gets the linked tickets.
+ *
+ * Linked tickets are separate tickets which should be included in the check.
+ * E.g. A Rail Pass accompanying a Reservation with a tariff valid for passes only.
+ *
+ * @return the linked tickets
+ */
+ public Collection<ITicketLink> getLinkedTickets() ;
+
+
+ /**
+ * Adds the linked ticket.
+ *
+ * Linked tickets are separate tickets which should be included in the check.
+ * E.g. A Rail Pass accompanying a Reservation with a tariff valid for passes only.
+ *
+ * @param linkedTicket the linked ticket
+ */
+ public void addLinkedTicket(ITicketLink linkedTicket) ;
+
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/ICounterMark.java b/src/org/uic/ticket/api/spec/ICounterMark.java new file mode 100644 index 0000000..c6b5744 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ICounterMark.java @@ -0,0 +1,400 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+import org.uic.ticket.api.asn.omv1.TravelClassType;
+
+/**
+ * The Interface ICounterMark.
+ *
+ * The group ticket counter mark.
+ *
+ * Members of a group might be provided with a counter mark indicating their
+ * participation in a group. The counter mark is not itself a ticket, but referees to a
+ * ticket.
+ *
+ * The content corresponds to the open ticket content.
+ *
+ */
+public interface ICounterMark extends IDocumentData {
+
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product owner.
+ *
+ * The product owner is the railways responsible for assembling this ticket. As there is currently no
+ * standard interface for open tickets between an product owner and an issuer this is usually
+ * identical to the issuer of a counter mark.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * The product owner is the railways responsible for assembling this ticket. As there is currently no
+ * standard interface for open tickets between an product owner and an issuer this is usually
+ * identical to the issuer of a counter mark.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the product id.
+ *
+ * @return the product id
+ */
+ public String getProductId();
+
+ /**
+ * Sets the product id.
+ *
+ * @param productId the new product id
+ */
+ public void setProductId(String productId);
+
+
+ /**
+ * Checks if is return included.
+ *
+ * @return true, if is return included
+ */
+ public boolean isReturnIncluded();
+
+ /**
+ * Sets the return included.
+ *
+ * @param returnIncluded the new return included
+ */
+ public void setReturnIncluded(boolean returnIncluded);
+
+ /**
+ * Gets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the from station.
+ *
+ * @return the from station
+ */
+ public String getFromStation();
+
+ /**
+ * Sets the from station.
+ *
+ * @param fromStation the new from station
+ */
+ public void setFromStation(String fromStation);
+
+ /**
+ * Gets the to station.
+ *
+ * @return the to station
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station.
+ *
+ * @param toStation the new to station
+ */
+ public void setToStation(String toStation);
+
+ /**
+ * Gets the from station name.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName();
+
+ /**
+ * Sets the from station name.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+
+ /**
+ * Gets the valid region desc.
+ *
+ * @return the valid region desc
+ */
+ public String getValidRegionDesc();
+
+ /**
+ * Sets the valid region desc.
+ *
+ * @param validRegionDesc the new valid region desc
+ */
+ public void setValidRegionDesc(String validRegionDesc);
+
+ /**
+ * Gets the valid region list.
+ *
+ * @return the valid region list
+ */
+ public Collection<IRegionalValidity> getValidRegionList();
+
+ /**
+ * Adds the valid region list.
+ *
+ * @param validRegion the valid region
+ */
+ public void addValidRegionList(IRegionalValidity validRegion);
+
+ /**
+ * Gets the return description.
+ *
+ * @return the return description
+ */
+ public IReturnRouteDescription getReturnDescription() ;
+
+ /**
+ * Sets the return description.
+ *
+ * @param returnDescription the new return description
+ */
+ public void setReturnDescription(IReturnRouteDescription returnDescription);
+
+ /**
+ * Gets the valid from.
+ *
+ * @return the valid from
+ */
+ public Date getValidFrom() ;
+
+ /**
+ * Sets the valid from.
+ *
+ * @param validFrom the new valid from
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until.
+ *
+ * @return the valid until
+ */
+ public Date getValidUntil();
+
+ /**
+ * Sets the valid until.
+ *
+ * @param validUntil the new valid until
+ */
+ public void setValidUntil(Date validUntil);
+
+ /**
+ * Gets the class code.
+ *
+ * @return the class code
+ */
+ public TravelClassType getClassCode();
+
+ /**
+ * Sets the class code.
+ *
+ * @param classCode the new class code
+ */
+ public void setClassCode(TravelClassType classCode);
+
+ /**
+ * Gets the included carriers.
+ *
+ * @return the included carriers
+ */
+ public Collection<String> getIncludedCarriers();
+
+ /**
+ * Adds the included carrier.
+ *
+ * @param includedCarrier the included carrier
+ */
+ public void addIncludedCarrier(String includedCarrier);
+
+ /**
+ * Gets the included service brands.
+ *
+ * @return the included service brands
+ */
+ public Collection<Integer> getIncludedServiceBrands();
+
+ /**
+ * Adds the included service brand.
+ *
+ * @param includedServiceBrand the included service brand
+ */
+ public void addIncludedServiceBrand(Integer includedServiceBrand);
+
+ /**
+ * Gets the excluded service brands.
+ *
+ * @return the excluded service brands
+ */
+ public Collection<Integer> getExcludedServiceBrands();
+
+ /**
+ * Adds the excluded service brand.
+ *
+ * @param excludedServiceBrand the excluded service brand
+ */
+ public void addExcludedServiceBrand(Integer excludedServiceBrand);
+
+ /**
+ * Gets the info text.
+ *
+ * @return the info text
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text.
+ *
+ * @param infoText the new info text
+ */
+ public void setInfoText(String infoText);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+ /**
+ * Gets the total of countermarks.
+ *
+ * @return the total of countermarks
+ */
+ public int getTotalOfCountermarks();
+
+ /**
+ * Sets the total of countermarks.
+ *
+ * @param totalOfCountermarks the new total of countermarks
+ */
+ public void setTotalOfCountermarks(int totalOfCountermarks);
+
+ /**
+ * Gets the group name.
+ *
+ * @return the group name
+ */
+ public String getGroupName();
+
+ /**
+ * Sets the group name.
+ *
+ * @param groupName the new group name
+ */
+ public void setGroupName(String groupName);
+
+ /**
+ * Gets the number of countermark.
+ *
+ * @return the number of countermark
+ */
+ public int getNumberOfCountermark();
+
+ /**
+ * Sets the number of countermark.
+ *
+ * @param numberOfCountermark the new number of countermark
+ */
+ public void setNumberOfCountermark(int numberOfCountermark) ;
+
+
+ public void setTicketReference(String ticketReference);
+ public String getTicketReference();
+
+ /**
+ * Gets the validFrom date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validFrom date time UTC offset
+ */
+ public Long getValidFromUTCoffset();
+
+ /**
+ * Sets the validFrom date time.
+ *
+ * @param validFromDateTime the new validFrom date time
+ */
+ public void setValidFromUTCoffset(Long validFromUTCoffset) ;
+
+ /**
+ * Gets the validUntil date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validUntil date time UTC offset
+ */
+ public Long getValidUntilUTCoffset();
+
+ /**
+ * Sets the validUntil date time.
+ *
+ * @param validUntilDateTime the new validUntil date time
+ */
+ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ;
+
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/ICustomerCard.java b/src/org/uic/ticket/api/spec/ICustomerCard.java new file mode 100644 index 0000000..a5be24a --- /dev/null +++ b/src/org/uic/ticket/api/spec/ICustomerCard.java @@ -0,0 +1,172 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.TravelClassType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ICustomerCard.
+ */
+public interface ICustomerCard extends IDocumentData {
+
+
+ /**
+ * Gets the customer.
+ *
+ * @return the customer
+ */
+ public ITraveler getCustomer() ;
+
+ /**
+ * Sets the customer.
+ *
+ * @param customer the new customer
+ */
+ public void setCustomer(ITraveler customer) ;
+
+ /**
+ * Gets the card id.
+ *
+ * @return the card id
+ */
+ public String getCardId();
+
+ /**
+ * Sets the card id.
+ *
+ * @param cardId the new card id
+ */
+ public void setCardId(String cardId);
+
+ /**
+ * Gets the valid from.
+ *
+ * @return the valid from
+ */
+ public Date getValidFrom();
+
+ /**
+ * Sets the valid from.
+ *
+ * @param validFrom the new valid from
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until.
+ *
+ * @return the valid until
+ */
+ public Date getValidUntil();
+
+ /**
+ * Sets the valid until.
+ *
+ * @param validUntil the new valid until
+ */
+ public void setValidUntil(Date validUntil) ;
+
+ /**
+ * Gets the class code.
+ *
+ * @return the class code
+ */
+ public TravelClassType getClassCode();
+
+ /**
+ * Sets the class code.
+ *
+ * @param classCode the new class code
+ */
+ public void setClassCode(TravelClassType classCode);
+
+ /**
+ * Gets the card type.
+ *
+ * @return the card type
+ */
+ public int getCardType();
+
+ /**
+ * Sets the card type.
+ *
+ * @param cardType the new card type
+ */
+ public void setCardType(int cardType);
+
+ /**
+ * Gets the card type descr.
+ *
+ * @return the card type descr
+ */
+ public String getCardTypeDescr();
+
+ /**
+ * Sets the card type descr.
+ *
+ * @param cardTypeDescr the new card type descr
+ */
+ public void setCardTypeDescr(String cardTypeDescr);
+
+ /**
+ * Gets the customer status.
+ *
+ * @return the customer status
+ */
+ public int getCustomerStatus();
+
+ /**
+ * Sets the customer status.
+ *
+ * @param customerStatus the new customer status
+ */
+ public void setCustomerStatus(int customerStatus);
+
+ /**
+ * Gets the customer status descr.
+ *
+ * @return the customer status descr
+ */
+ public String getCustomerStatusDescr();
+
+ /**
+ * Sets the customer status descr.
+ *
+ * @param customerStatusDescr the new customer status descr
+ */
+ public void setCustomerStatusDescr(String customerStatusDescr);
+
+ /**
+ * Gets the included services.
+ *
+ * @return the included services
+ */
+ public Collection<Integer> getIncludedServices();
+
+ /**
+ * Adds the included service.
+ *
+ * @param includedService the included service
+ */
+ public void addIncludedService(Integer includedService);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+}
diff --git a/src/org/uic/ticket/api/spec/ICustomerStatusDescription.java b/src/org/uic/ticket/api/spec/ICustomerStatusDescription.java new file mode 100644 index 0000000..65f85c2 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ICustomerStatusDescription.java @@ -0,0 +1,79 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+/**
+ * The Interface ICustomerStatusDescription.
+ *
+ *
+ * ICustomerStatusDescription provides a description of the customer status.
+ *
+ */
+public interface ICustomerStatusDescription {
+
+ /**
+ * Gets the status provider.
+ *
+ * RICS codes should be used in case the status is provided by a railway.
+ *
+ * @return the status provider
+ */
+ public String getStatusProvider();
+
+ /**
+ * Sets the status provider.
+ *
+ * RICS codes should be used in case the status is provided by a railway.
+ *
+ * @param statusProvider the new status provider
+ */
+ public void setStatusProvider(String statusProvider);
+
+ /**
+ * Gets the human readable status description.
+ *
+ * @return the human readable status description.
+ */
+ public String getDescription();
+
+ /**
+ * Sets the human readable status description.
+ *
+ * @param description the new the human readable status description.
+ */
+ public void setDescription(String description) ;
+
+ /**
+ * Gets the status code.
+ *
+ * -- customer status code
+ * -- 1 = basic
+ * -- 2 = premium
+ * -- 3 = silver
+ * -- 4 = gold
+ * -- 5 = platinum
+ * -- 6 = senator
+ * -- > 50 - code table of the status provider
+ *
+ * @return the status code
+ */
+ public int getStatus() ;
+
+ /**
+ * Sets the status.
+ *
+ * -- customer status code
+ * -- 1 = basic
+ * -- 2 = premium
+ * -- 3 = silver
+ * -- 4 = gold
+ * -- 5 = platinum
+ * -- 6 = senator
+ * -- > 50 - code table of the status provider
+ *
+ * @param status the new status
+ */
+ public void setStatus(int status) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/IDelayConfirmation.java b/src/org/uic/ticket/api/spec/IDelayConfirmation.java new file mode 100644 index 0000000..aa9b418 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IDelayConfirmation.java @@ -0,0 +1,269 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IDelayConfirmation implements
+ * a confirmation of delay given to a traveler to prove to another carrier he want tu use to continue the journey
+ * that he was delayed.
+ */
+public interface IDelayConfirmation extends IDocumentData {
+
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the train.
+ *
+ * @return the train
+ */
+ public String getTrain();
+
+ /**
+ * Sets the train.
+ *
+ * @param train the new train
+ */
+ public void setTrain(String train);
+
+ /**
+ * Gets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the from station code where the delay was final (usually the station where the traveler left the train).
+ *
+ * @return the from station code
+ */
+ public String getStation();
+
+ /**
+ * Sets the from station code where the delay was final (usually the station where the traveler left the train).
+ *
+ * @param station the new station
+ */
+ public void setStation(String station);
+
+
+ /**
+ * Sets the from station name where the delay was final (usually the station where the traveler left the train).
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setStationName(String fromStationName);
+
+ /**
+ * Gets the to station name where the delay was final (usually the station where the traveler left the train).
+ *
+ * @return the to station name
+ */
+ public String getStationName();
+
+ /**
+ * Gets the planned arrival date and time where the traveler left the train.
+ *
+ * @return the planned arrival date and time
+ */
+ public Date getArrivalDate();
+
+ /**
+ * Sets the planned arrival date and time where the traveler left the train.
+ *
+ * @param arrivalDate the new planned arrival date and time
+ */
+ public void setArrivalDate(Date arrivalDate);
+
+ /**
+ * Checks if is train was cancelled.
+ *
+ * @return true, if is train cancelled
+ */
+ public boolean isTrainCancelled();
+
+ /**
+ * Sets the train cancelled.
+ *
+ * @param trainIsCancelled the new train cancelled
+ */
+ public void setTrainCancelled(boolean trainIsCancelled);
+
+
+ /**
+ * Gets the delay in minutes.
+ *
+ * @return the delay in minutes
+ */
+ public int getDelay();
+
+ /**
+ * Sets the delay in minutes.
+ *
+ * @param delay the delay in minutes
+ */
+ public void setDelay(int delay);
+
+ /**
+ * Gets the confirmation type.
+ *
+ * See code list of the specification for the meaning of the values.
+ *
+ * @return the confirmation type
+ */
+ public int getConfirmationType();
+
+ /**
+ * Sets the confirmation type.
+ *
+ * See code list of the specification for the meaning of the values.
+ *
+ * @param type the new confirmation type
+ */
+ public void setConfirmationType(int type);
+
+ /**
+ * Sets the confirmation that the traveler was on board of the delayed train.
+ *
+ * @param travelerOnBoardDelayed the confirmation that the traveler was on the delayed train
+ */
+ public void setTravelerOnBoardDelayed(boolean travelerOnBoardDelayed);
+
+ /**
+ * Sets the confirmation that the train was delayed.
+ *
+ * @param trainDelayed the confirmation that the train was delayed
+ */
+ public void setTrainDelayed(boolean trainDelayed);
+
+ /**
+ * Sets the confirmation that the train was delayed and the traveler had a ticket designated to the delayed train.
+ *
+ * @param trainOfTravelerDelayed the confirmation that the train was delayed and the traveler had a ticket designated to the delayed train.
+ */
+ public void setTrainDelayedTravelerHasTrainTicket(boolean trainOfTravelerDelayed);
+
+ /**
+ * Checks if this document confirms that the traveler was on board of the delayed train.
+ *
+ * @return true, if this document confirms that the traveler was on board of the delayed train
+ */
+ public boolean isTravelerOnBoardDelayed();
+
+ /**
+ * Checks if this document confirms that the train is delayed.
+ *
+ * @return true, if is train delay is confirmed
+ */
+ public boolean isTrainDelayed();
+
+ /**
+ * Checks if this document confirms that the train where the traveler had a designated ticket for is delayed.
+ *
+ * @return true, if this document confirms that the traveler has a ticket designated to the delayed train.
+ */
+ public boolean isTrainDelayedTravelerHasTrainTicket();
+
+
+ /**
+ * Gets the linked tickets.
+ *
+ * Link to the ticket valid on the delayed train.
+ *
+ * @return the linked tickets
+ */
+ public Collection<ITicketLink> getLinkedTickets() ;
+
+
+ /**
+ * Adds the linked ticket valid on the delayed train.
+ *
+ *
+ * @param linkedTicket the linked ticket
+ */
+ public void addLinkedTicket(ITicketLink linkedTicket) ;
+
+
+
+
+ /**
+ * Gets the info text.
+ *
+ * @return the info text
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text.
+ *
+ * @param infoText the new info text
+ */
+ public void setInfoText(String infoText);
+
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+ /**
+ * Gets the arrival ut coffset.
+ *
+ * @return the arrival ut coffset
+ */
+ public Long getArrivalUTCoffset();
+
+ /**
+ * Sets the arrival ut coffset.
+ *
+ * @param arrivalUTCoffset the new arrival ut coffset
+ */
+ public void setArrivalUTCoffset(Long arrivalUTCoffset);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IDocumentData.java b/src/org/uic/ticket/api/spec/IDocumentData.java new file mode 100644 index 0000000..963d545 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IDocumentData.java @@ -0,0 +1,32 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+/**
+ * The Interface IDocumentData.
+ *
+ * IDocumentData is the super class of transport documents and customer cards. It provides a token.
+ *
+ */
+public interface IDocumentData {
+
+ /**
+ * Gets the token.
+ *
+ * @return the token
+ */
+ public IToken getToken();
+
+ /**
+ * Sets the token.
+ *
+ * @param token the new token
+ */
+ public void setToken(IToken token);
+
+
+
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IDocumentExtension.java b/src/org/uic/ticket/api/spec/IDocumentExtension.java new file mode 100644 index 0000000..d34ff94 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IDocumentExtension.java @@ -0,0 +1,14 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+/**
+ * The Interface IDocumentExtension.
+ *
+ * IDocumentExtension provides a transport document that contains purely proprietary extension data.
+ *
+ */
+public interface IDocumentExtension extends IDocumentData, IExtension {
+
+}
diff --git a/src/org/uic/ticket/api/spec/IExtension.java b/src/org/uic/ticket/api/spec/IExtension.java new file mode 100644 index 0000000..9d110ab --- /dev/null +++ b/src/org/uic/ticket/api/spec/IExtension.java @@ -0,0 +1,58 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+
+/**
+ * The Interface IExtension.
+ *
+ * IExtension defines an extension of the data defined in the UIC standard
+ *
+ * If not agreed bilaterally otherwise these extensions must be ignored.
+ *
+ * -- the generic non - standard extension contains:
+ * -- - an extension id to distinguish different extensions
+ * -- - the extension data as binary data
+ * -- proprietary extensions are by definition proprietary. This standard provides
+ * -- the means to identify these extensions
+ * -- within the data and to skip these data.
+ * -- the evaluation of these data and the unique identification of the extensions
+ * -- via the extension id is in the
+ * -- responsibility of the railways which use these extensions.
+ *
+ */
+public interface IExtension {
+
+ /**
+ * Gets the id of the extension.
+ * The id identifies the type of the extension.
+ *
+ * @return the id
+ */
+ public String getId() ;
+
+ /**
+ * Sets the id.
+ * The id identifies the type of the extension.
+ *
+ * @param id the new id
+ */
+ public void setId(String id);
+
+ /**
+ * Gets the binary data content.
+ *
+ * @return the binary data content
+ */
+ public byte[] getBinarydata();
+
+ /**
+ * Sets the binary data content.
+ *
+ * @param binarydata the new binary data content
+ */
+ public void setBinarydata(byte[] binarydata);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IFipTicket.java b/src/org/uic/ticket/api/spec/IFipTicket.java new file mode 100644 index 0000000..73cbc0e --- /dev/null +++ b/src/org/uic/ticket/api/spec/IFipTicket.java @@ -0,0 +1,178 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.TravelClassType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IFipTicket.
+ *
+ * IFipTicket provides a description of the FIP ticket.
+ *
+ */
+public interface IFipTicket extends IDocumentData {
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product id.
+ *
+ * @return the product id
+ */
+ public String getProductId() ;
+
+ /**
+ * Sets the product id.
+ *
+ * @param productId the new product id
+ */
+ public void setProductId(String productId);
+
+ /**
+ * Gets the product owner.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+
+
+ /**
+ * Gets the travel class code.
+ *
+ * @return the travel class code
+ */
+ public TravelClassType getClassCode();
+
+ /**
+ * Sets the class code.
+ *
+ * @param classCode the new class code
+ */
+ public void setClassCode(TravelClassType classCode);
+
+ /**
+ * Gets the valid from date.
+ *
+ * @return the valid from date
+ */
+ public Date getValidFrom();
+
+ /**
+ * Sets the valid from date.
+ *
+ * @param validFrom the new valid from date
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until date.
+ *
+ * @return the valid until date
+ */
+ public Date getValidUntil();
+
+ /**
+ * Sets the valid until date.
+ *
+ * @param validUntil the new valid until date
+ */
+ public void setValidUntil(Date validUntil);
+
+ /**
+ * Gets the number of travel days allowed for traveling within the validity range.
+ *
+ * @return the number of travel days allowed for traveling within the validity range.
+ */
+ public int getNumberOfTravelDates();
+
+ /**
+ * Sets the number of travel days allowed for traveling within the validity range.
+ *
+ * @param numberOfTravelDates the new number of travel days
+ */
+ public void setNumberOfTravelDates(int numberOfTravelDates);
+
+ /**
+ * Checks if supplements are included.
+ *
+ * @return true, if is supplements are included
+ */
+ public boolean isIncludesSupplements();
+
+ /**
+ * Sets whether supplements are included.
+ *
+ * @param includesSuplements the new includes supplements flag
+ */
+ public void setIncludesSupplements(boolean includesSuplements);
+
+ /**
+ * Gets the carriers valid for traveling.
+ *
+ * @return the carriers valid for traveling
+ */
+ public Collection<String> getCarriers();
+
+ /**
+ * Adds a carrier.
+ *
+ * @param carrier the carrier
+ */
+ public void addCarrier(String carrier);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extensionData the new extension
+ */
+ public void setExtension(IExtension extensionData);
+
+ /**
+ * Gets the activated days where the ticket is valid for tarveling.
+ *
+ * @return the activated days
+ */
+ public Collection<Date> getActivatedDays();
+
+ /**
+ * Adds the activated day.
+ *
+ * @param day the day
+ */
+ public void addActivatedDay(Date day);
+
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IGeoCoordinate.java b/src/org/uic/ticket/api/spec/IGeoCoordinate.java new file mode 100644 index 0000000..9fa1ba5 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IGeoCoordinate.java @@ -0,0 +1,136 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import org.uic.ticket.api.asn.omv1.GeoCoordinateSystemType;
+import org.uic.ticket.api.asn.omv1.GeoUnitType;
+import org.uic.ticket.api.asn.omv1.HemisphereLatitudeType;
+import org.uic.ticket.api.asn.omv1.HemisphereLongitudeType;
+
+/**
+ * The Interface IGeoCoordinate.
+ *
+ * IGeoCoordinate provides the data for a geo coordinate.
+ *
+ */
+public interface IGeoCoordinate {
+
+ /**
+ * Gets the unit.
+ *
+ * Default is milliDegree
+ *
+ * @return the unit
+ */
+ public GeoUnitType getUnit();
+
+ /**
+ * Sets the unit.
+ *
+ * Default is milliDegree
+ *
+ * @param unit the new unit
+ */
+ public void setUnit(GeoUnitType unit);
+
+ /**
+ * Gets the accuracy.
+ *
+ * @return the accuracy
+ */
+ public GeoUnitType getAccuracy();
+
+ /**
+ * Sets the accuracy.
+ *
+ * @param accuracy the new accuracy
+ */
+ public void setAccuracy(GeoUnitType accuracy);
+
+ /**
+ * Gets the geo coordinate system.
+ *
+ * Default is wgs84
+ *
+ * @return the geo coordinate
+ */
+ public GeoCoordinateSystemType getSystem();
+
+ /**
+ * Sets the geo coordinate
+ *
+ * Default is wgs84
+ *
+ * @param system the new geo coordinate
+ */
+ public void setSystem(GeoCoordinateSystemType system);
+
+ /**
+ * Gets the longitude hemisphere.
+ *
+ * @return the longitude hemisphere
+ */
+ public HemisphereLongitudeType getHemisphereLongitude() ;
+
+ /**
+ * Sets the longitude hemisphere.
+ *
+ * Default is north
+ *
+ * @param hemispherLongiture the new longitude hemisphere.
+ */
+ public void setHemisphereLongitude(HemisphereLongitudeType hemispherLongiture);
+
+ /**
+ * Gets the latitude hemisphere.
+ *
+ * Default is east
+ *
+ * @return the latitude hemisphere.
+ */
+ public HemisphereLatitudeType getHemisphereLatitude();
+
+ /**
+ * Sets the latitude hemisphere.
+ *
+ * Default is east
+ *
+ * @param hemisphereLatitude the new latitude hemisphere.
+ */
+ public void setHemisphereLatitude(HemisphereLatitudeType hemisphereLatitude);
+
+ /**
+ * Gets the longitude.
+ *
+ * @return the longitude
+ */
+ public Long getLongitude();
+
+ /**
+ * Sets the longitude.
+ *
+ * @param longitude the new longitude
+ */
+ public void setLongitude(long longitude) ;
+
+ /**
+ * Gets the latitude.
+ *
+ * @return the latitude
+ */
+ public Long getLatitude() ;
+
+ /**
+ * Sets the latitude.
+ *
+ * @param latitude the new latitude
+ */
+ public void setLatitude(long latitude);
+
+ public IGeoCoordinate clone();
+
+ public void addLongitude(Long longValue);
+
+ public void addLatitude(Long longValue);
+}
diff --git a/src/org/uic/ticket/api/spec/IIncludedOpenTicket.java b/src/org/uic/ticket/api/spec/IIncludedOpenTicket.java new file mode 100644 index 0000000..ab9ee81 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IIncludedOpenTicket.java @@ -0,0 +1,394 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+import org.uic.ticket.api.asn.omv1.TravelClassType;
+
+/**
+ * The Interface IIncludedOpenTicket.
+ *
+ * IIncludedOpenTicket provides the description of an add on ticket to be added to an open ticket.
+ * E.g. a local transport ticket at the end or begin of the route.
+ *
+ */
+public interface IIncludedOpenTicket {
+
+ /**
+ * Gets the departure date.
+ *
+ * @return the departure date
+ */
+ public Date getDepartureDate();
+
+ /**
+ * Sets the departure date.
+ *
+ * @param departureDate the new departure date
+ */
+ public void setDepartureDate(Date departureDate);
+
+ /**
+ * Gets the arrival date.
+ *
+ * @return the arrival date
+ */
+ public Date getArrivalDate() ;
+
+ /**
+ * Sets the arrival date.
+ *
+ * @param arrivalDate the new arrival date
+ */
+ public void setArrivalDate(Date arrivalDate);
+
+
+ /**
+ * Gets the product id.
+ *
+ * @return the product id
+ */
+ public String getProductId() ;
+
+ /**
+ * Sets the product id.
+ *
+ * @param productId the new product id
+ */
+ public void setProductId(String productId) ;
+
+ /**
+ * Gets the product owner.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the external issuer.
+ *
+ * @return the external issuer
+ */
+ public int getExternalIssuer();
+
+ /**
+ * Sets the external issuer.
+ *
+ * Identification of the issuer provided by an external carrier
+ *
+ * @param externalIssuer the new external issuer
+ */
+ public void setExternalIssuer(int externalIssuer);
+
+ /**
+ * Gets the authorization code.
+ *
+ * Authorization code given by a carrier to the product owner to allow the sale
+ *
+ * @return the authorization code
+ */
+ public int getAuthorizationCode();
+
+ /**
+ * Sets the authorization code.
+ *
+ * An authorization code given by a carrier to the product owner to allow the sale
+ *
+ * @param authorizationCode the new authorization code
+ */
+ public void setAuthorizationCode(int authorizationCode);
+
+ /**
+ * Gets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the from station code.
+ *
+ * @return the from station code
+ */
+ public String getFromStation();
+
+ /**
+ * Sets the from station code.
+ *
+ * @param fromStation the new from station code
+ */
+ public void setFromStation(String fromStation);
+
+ /**
+ * Gets the to station code.
+ *
+ * @return the to station code
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station code.
+ *
+ * @param toStation the new to station code
+ */
+ public void setToStation(String toStation);
+
+ /**
+ * Gets the from station name.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName();
+
+ /**
+ * Sets the from station name.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+
+ /**
+ * Gets the valid region description.
+ *
+ * @return the valid region desc
+ */
+ public String getValidRegionDesc();
+
+ /**
+ * Sets the valid region description.
+ *
+ * @param validRegionDesc the new valid region description
+ */
+ public void setValidRegionDesc(String validRegionDesc);
+
+ /**
+ * Gets the list of valid regions.
+ *
+ * @return the list of valid regions
+ */
+ public Collection<IRegionalValidity> getValidRegionList();
+
+ /**
+ * Adds a valid region.
+ *
+ * @param validRegion the valid region
+ */
+ public void addValidRegionList(IRegionalValidity validRegion);
+
+ /**
+ * Gets the valid from date and time.
+ *
+ * @return the valid from date and time.
+ */
+ public Date getValidFrom();
+
+ /**
+ * Sets the valid from date and time.
+ *
+ * @param validFrom the new valid from date and time.
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until date and time.
+ *
+ * @return the valid until date and time.
+ */
+ public Date getValidUntil();
+
+ /**
+ * Sets the valid until date and time.
+ *
+ * @param validUntil the new valid until date and time.
+ */
+ public void setValidUntil(Date validUntil);
+
+ /**
+ * Gets the travel class code.
+ *
+ * @return the travel class code
+ */
+ public TravelClassType getClassCode();
+
+ /**
+ * Sets the travel class code.
+ *
+ * @param classCode the new travel class code
+ */
+ public void setClassCode(TravelClassType classCode);
+
+ /**
+ * Gets the carriers included in the transport contract.
+ *
+ * @return the included carriers
+ */
+ public Collection<String> getIncludedCarriers();
+
+ /**
+ * Adds the included carrier.
+ *
+ * @param includedCarrier the included carrier
+ */
+ public void addIncludedCarrier(String includedCarrier);
+
+ /**
+ * Gets the included service brands on which the ticket is valid
+ *
+ * The list should be omitted in case all service brands are
+ * included or a list of excluded service brands is provided.
+ *
+ * @return the included service brands
+ */
+ public Collection<Integer> getIncludedServiceBrands();
+
+ /**
+ * Adds an included service brand.
+ *
+ * The list should be omitted in case all service brands are
+ * included or a list of excluded service brands is provided.
+ *
+ * @param includedServiceBrand the included service brand
+ */
+ public void addIncludedServiceBrand(Integer includedServiceBrand);
+
+ /**
+ * Gets the list of excluded service brands.
+ *
+ * The list should be omitted in case a complete
+ * list of included service brands is provided.
+ *
+ * @return the list of excluded service brands
+ */
+ public Collection<Integer> getExcludedServiceBrands();
+
+ /**
+ * Adds an excluded service brand.
+ *
+ * The list should be omitted in case a complete
+ * list of included service brands is provided.
+ *
+ * @param excludedServiceBrand the excluded service brand
+ */
+ public void addExcludedServiceBrand(Integer excludedServiceBrand);
+
+
+ /**
+ * Gets the tariffs.
+ *
+ * @return the tariffs
+ */
+ public Collection<ITariff> getTariffs();
+
+ /**
+ * Adds the tariff.
+ *
+ * @param tariff the tariff
+ */
+ public void addTariff(ITariff tariff);
+
+ /**
+ * Gets the info text.
+ *
+ * @return the info text
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text.
+ *
+ * @param infoText the new info text
+ */
+ public void setInfoText(String infoText);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension() ;
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+
+ /**
+ * Sets the until date and time.
+ *
+ * @param date the new until date and time
+ */
+ public void setUntilDate(Date date);
+
+
+ /**
+ * Gets the validFrom date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validFrom date time UTC offset
+ */
+ public Long getValidFromUTCoffset();
+
+ /**
+ * Sets the validFrom date time.
+ *
+ * @param validFromDateTime the new validFrom date time
+ */
+ public void setValidFromUTCoffset(Long validFromUTCoffset) ;
+
+ /**
+ * Gets the validUntil date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validUntil date time UTC offset
+ */
+ public Long getValidUntilUTCoffset();
+
+ /**
+ * Sets the validUntil date time.
+ *
+ * @param validUntilDateTime the new validUntil date time
+ */
+ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/IIssuingDetail.java b/src/org/uic/ticket/api/spec/IIssuingDetail.java new file mode 100644 index 0000000..afe309d --- /dev/null +++ b/src/org/uic/ticket/api/spec/IIssuingDetail.java @@ -0,0 +1,189 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Date;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IIssuerDetails.
+ */
+public interface IIssuingDetail {
+
+ /**
+ * Gets the issuing date.
+ *
+ * @return the issuing date
+ */
+ public Date getIssuingDate();
+
+ /**
+ * Sets the issuing date.
+ *
+ * @param date the new issuing date
+ */
+ public void setIssuingDate(Date date);
+
+ /**
+ * Gets the issuer.
+ *
+ * @return the issuer
+ */
+ public String getIssuer();
+
+ /**
+ * Sets the issuer.
+ *
+ * @param issuer the new issuer
+ */
+ public void setIssuer(String issuer);
+
+ /**
+ * Gets the security provider.
+ *
+ * @return the security provider
+ */
+ public String getSecurityProvider();
+
+
+ /**
+ * Sets the security provider.
+ *
+ * @param securityProvider the new security provider
+ */
+ public void setSecurityProvider(String securityProvider);
+
+
+ /**
+ * Gets the issuer name.
+ *
+ * @return the issuer name
+ */
+ public String getIssuerName();
+
+
+ /**
+ * Sets the issuer name.
+ *
+ * @param issuerName the new issuer name
+ */
+ public void setIssuerName(String issuerName);
+
+
+ /**
+ * Checks if is specimen.
+ *
+ * @return true, if is specimen
+ */
+ public boolean isSpecimen();
+
+
+ /**
+ * Sets the specimen.
+ *
+ * @param specimen the new specimen
+ */
+ public void setSpecimen(boolean specimen);
+
+
+ /**
+ * Checks if is activated.
+ *
+ * @return true, if is activated
+ */
+ public boolean isActivated();
+
+
+ /**
+ * Sets the activated.
+ *
+ * @param activated the new activated
+ */
+ public void setActivated(boolean activated);
+
+
+ /**
+ * Gets the issuer pnr.
+ *
+ * @return the issuer pnr
+ */
+ public String getIssuerPNR();
+
+
+ /**
+ * Sets the issuer pnr.
+ *
+ * @param issuerPNR the new issuer pnr
+ */
+ public void setIssuerPNR(String issuerPNR);
+
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+
+ /**
+ * Gets the issued on train.
+ *
+ * @return the issued on train
+ */
+ public String getIssuedOnTrain();
+
+
+ /**
+ * Sets the issued on train.
+ *
+ * @param issuedOnTrain the new issued on train
+ */
+ public void setIssuedOnTrain(String issuedOnTrain);
+
+
+ /**
+ * Gets the issued on line.
+ *
+ * @return the issued on line
+ */
+ public int getIssuedOnLine();
+
+
+ /**
+ * Sets the issued on line.
+ *
+ * @param issuedOnLine the new issued on line
+ */
+ public void setIssuedOnLine(int issuedOnLine);
+
+
+ /**
+ * Gets the point of sale.
+ *
+ * @return the point of sale
+ */
+ public IGeoCoordinate getPointOfSale();
+
+
+ /**
+ * Sets the point of sale.
+ *
+ * @param pointOfSale the new point of sale
+ */
+ public void setPointOfSale(IGeoCoordinate pointOfSale);
+
+
+ public boolean isSecurePaperTicket();
+ public void setSecurePaperTicket(boolean securePaperTicket);
+
+}
diff --git a/src/org/uic/ticket/api/spec/ILine.java b/src/org/uic/ticket/api/spec/ILine.java new file mode 100644 index 0000000..f1066f2 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ILine.java @@ -0,0 +1,115 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.HashSet;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ILine.
+ */
+public interface ILine extends IRegionalValidity{
+
+ /**
+ * Gets the carrier.
+ *
+ * @return the carrier
+ */
+ public String getCarrier();
+
+ /**
+ * Sets the carrier.
+ *
+ * @param carrier the new carrier
+ */
+ public void setCarrier(String carrier);
+
+ /**
+ * Gets the line ids.
+ *
+ * @return the line ids
+ */
+ public HashSet<Integer> getLineIds();
+
+ /**
+ * Adds the line id.
+ *
+ * @param lineId the line id
+ */
+ public void addLineId(Integer lineId);
+
+ /**
+ * Gets the station code table.
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the entry station.
+ *
+ * @return the entry station
+ */
+ public String getEntryStation() ;
+
+ /**
+ * Sets the entry station.
+ *
+ * @param entryStation the new entry station
+ */
+ public void setEntryStation(String entryStation);
+
+ /**
+ * Gets the terminating station.
+ *
+ * @return the terminating station
+ */
+ public String getTerminatingStation();
+
+ /**
+ * Sets the terminating station.
+ *
+ * @param terminatingStation the new terminating station
+ */
+ public void setTerminatingStation(String terminatingStation);
+
+ /**
+ * Gets the city.
+ *
+ * @return the city
+ */
+ public int getCity() ;
+
+ /**
+ * Sets the city.
+ *
+ * @param city the new city
+ */
+ public void setCity(int city);
+
+ /**
+ * Gets the binary zone id.
+ *
+ * @return the binary zone id
+ */
+ public byte[] getBinaryZoneId() ;
+
+ /**
+ * Sets the binary zone id.
+ *
+ * @param binatyZoneId the new binary zone id
+ */
+ public void setBinaryZoneId(byte[] binatyZoneId);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/ILuggageRestriction.java b/src/org/uic/ticket/api/spec/ILuggageRestriction.java new file mode 100644 index 0000000..5ee2eec --- /dev/null +++ b/src/org/uic/ticket/api/spec/ILuggageRestriction.java @@ -0,0 +1,56 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ILuggageRestriction.
+ */
+public interface ILuggageRestriction {
+
+ /**
+ * Gets the max hand luggage pieces.
+ *
+ * @return the max hand luggage pieces
+ */
+ public int getMaxHandLuggagePieces();
+
+ /**
+ * Sets the max hand luggage pieces.
+ *
+ * @param maxHandLuggagePieces the new max hand luggage pieces
+ */
+ public void setMaxHandLuggagePieces(int maxHandLuggagePieces);
+
+ /**
+ * Gets the max non hand luggage pieces.
+ *
+ * @return the max non hand luggage pieces
+ */
+ public int getMaxNonHandLuggagePieces();
+
+ /**
+ * Sets the max non hand luggage pieces.
+ *
+ * @param maxNonHandLuggagePieces the new max non hand luggage pieces
+ */
+ public void setMaxNonHandLuggagePieces(int maxNonHandLuggagePieces);
+
+ /**
+ * Gets the registered luggage.
+ *
+ * @return the registered luggage
+ */
+ public Collection<IRegisteredLuggage> getRegisteredLuggage();
+
+ /**
+ * Adds the registered luggage.
+ *
+ * @param registeredLuggage the registered luggage
+ */
+ public void addRegisteredLuggage(IRegisteredLuggage registeredLuggage);
+
+}
diff --git a/src/org/uic/ticket/api/spec/IOpenTicket.java b/src/org/uic/ticket/api/spec/IOpenTicket.java new file mode 100644 index 0000000..f5bb7d2 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IOpenTicket.java @@ -0,0 +1,518 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+import org.uic.ticket.api.asn.omv1.TravelClassType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IOpenTicket.
+ */
+public interface IOpenTicket extends IDocumentData {
+
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product id.
+ *
+ * @return the product id
+ */
+ public String getProductId();
+
+ /**
+ * Sets the product id.
+ *
+ * @param productId the new product id
+ */
+ public void setProductId(String productId);
+
+ /**
+ * Gets the product owner.
+ *
+ * The product owner is the railways responsible for assembling this ticket. As there is currently no
+ * standard interface for open tickets between an product owner and an issuer this is usually
+ * identical to the issuer of an open ticket.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * The product owner is the railways responsible for assembling this ticket. As there is currently no
+ * standard interface for open tickets between an product owner and an issuer this is usually
+ * identical to the issuer of an open ticket.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the external issuer.
+ *
+ * @return the external issuer
+ */
+ public int getExternalIssuer();
+
+ /**
+ * Sets the external issuer.
+ *
+ * Identification of the issuer provided by an external carrier
+ *
+ * @param externalIssuer the new external issuer
+ */
+ public void setExternalIssuer(int externalIssuer);
+
+ /**
+ * Gets the authorization code.
+ *
+ * Authorization code given by a carrier to the product owner to allow the sale
+ *
+ * @return the authorization code
+ */
+ public int getAuthorizationCode();
+
+ /**
+ * Sets the authorization code.
+ *
+ * An authorization code given by a carrier to the product owner to allow the sale
+ *
+ * @param authorizationCode the new authorization code
+ */
+ public void setAuthorizationCode(int authorizationCode);
+
+ /**
+ * Checks if the ticket includes the return trip.
+ *
+ * @return true, if the ticket includes the return trip.
+ */
+ public boolean isReturnIncluded();
+
+ /**
+ * Sets that the ticket includes the return trip.
+ *
+ * @param returnIncluded the new return included
+ */
+ public void setReturnIncluded(boolean returnIncluded);
+
+ /**
+ * Gets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the from station code.
+ *
+ * @return the from station code
+ */
+ public String getFromStation();
+
+ /**
+ * Sets the from station code.
+ *
+ * @param fromStation the new from station code
+ */
+ public void setFromStation(String fromStation);
+
+ /**
+ * Gets the to station code.
+ *
+ * @return the to station code
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station code.
+ *
+ * @param toStation the new to station code
+ */
+ public void setToStation(String toStation);
+
+ /**
+ * Gets the from station name.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName();
+
+ /**
+ * Sets the from station name.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+
+ /**
+ * Gets the valid region description.
+ *
+ * @return the valid region desc
+ */
+ public String getValidRegionDesc();
+
+ /**
+ * Sets the human readable description of the valid region.
+ *
+ * @param validRegionDesc the new human readable description of the valid region
+ */
+ public void setValidRegionDesc(String validRegionDesc);
+
+ /**
+ * Gets the list of valid regions.
+ *
+ * @return the list of valid regions
+ */
+ public Collection<IRegionalValidity> getValidRegionList();
+
+ /**
+ * Adds a valid region.
+ *
+ * @param validRegion the valid region
+ */
+ public void addValidRegionList(IRegionalValidity validRegion);
+
+ /**
+ * Gets the return trip description.
+ *
+ * @return the return trip description
+ */
+ public IReturnRouteDescription getReturnDescription() ;
+
+ /**
+ * Sets the return description.
+ *
+ * @param returnDescription the new return description
+ */
+ public void setReturnDescription(IReturnRouteDescription returnDescription);
+
+ /**
+ * Gets the valid from date and time.
+ *
+ * @return the valid from date and time.
+ */
+ public Date getValidFrom() ;
+
+ /**
+ * Sets the valid from date and time.
+ *
+ * @param validFrom the new valid from date and time
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until date and time.
+ *
+ * @return the valid until date and time.
+ */
+ public Date getValidUntil();
+
+ /**
+ * Sets the valid until date and time.
+ *
+ * @param validUntil the new valid until date and time.
+ */
+ public void setValidUntil(Date validUntil);
+
+ /**
+ * Gets the activated days.
+ *
+ * A list of days where the ticket is valid. This should be omitted if
+ * the ticket is valid on the entire validity range.
+ *
+ * @return the activated days
+ */
+ public Collection<Date> getActivatedDays();
+
+ /**
+ * Adds the activated day.
+ *
+ * A list of days where the ticket is valid. This should be omitted if
+ * the ticket is valid on the entire validity range.
+ *
+ * @param activatedDay the activated day
+ */
+ public void addActivatedDay(Date activatedDay);
+
+ /**
+ * Gets the travel class code.
+ *
+ * @return the travel class code
+ */
+ public TravelClassType getClassCode();
+
+ /**
+ * Sets the travel class code.
+ *
+ * @param classCode the new travel class code
+ */
+ public void setClassCode(TravelClassType classCode);
+
+ /**
+ * Gets the carriers included in the transport contract.
+ *
+ * @return the included carriers
+ */
+ public Collection<String> getIncludedCarriers();
+
+ /**
+ * Adds a carrier to the transport contract.
+ *
+ * @param includedCarrier the carrier
+ */
+ public void addIncludedCarrier(String includedCarrier);
+
+ /**
+ * Gets the included service brands on which the ticket is valid
+ *
+ * The list should be omitted in case all service brands are
+ * included or a list of excluded service brands is provided.
+ *
+ * @return the included service brands
+ */
+ public Collection<Integer> getIncludedServiceBrands();
+
+ /**
+ * Adds an included service brand.
+ *
+ * The list should be omitted in case all service brands are
+ * included or a list of excluded service brands is provided.
+ *
+ * @param includedServiceBrand the included service brand
+ */
+ public void addIncludedServiceBrand(Integer includedServiceBrand);
+
+ /**
+ * Gets the list of excluded service brands.
+ *
+ * The list should be omitted in case a complete
+ * list of included service brands is provided.
+ *
+ * @return the list of excluded service brands
+ */
+ public Collection<Integer> getExcludedServiceBrands();
+
+ /**
+ * Adds an excluded service brand.
+ *
+ * The list should be omitted in case a complete
+ * list of included service brands is provided.
+ *
+ * @param excludedServiceBrand the excluded service brand
+ */
+ public void addExcludedServiceBrand(Integer excludedServiceBrand);
+
+ /**
+ * Gets the tariffs.
+ *
+ * @return the tariffs
+ */
+ public Collection<ITariff> getTariffs();
+
+ /**
+ * Adds the tariff.
+ *
+ * @param tariff the tariff
+ */
+ public void addTariff(ITariff tariff);
+
+ /**
+ * Gets the included add on tickets.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @return the included add ons
+ */
+ public Collection<IIncludedOpenTicket> getIncludedAddOns();
+
+ /**
+ * Adds an included add on ticket.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @param includedAddOn the included add on
+ */
+ public void addIncludedAddOn(IIncludedOpenTicket includedAddOn) ;
+
+ /**
+ * Gets the info text.
+ *
+ * @return the info text
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text.
+ *
+ * @param infoText the new info text
+ */
+ public void setInfoText(String infoText);
+
+ /**
+ * Gets the luggage restriction.
+ *
+ * @return the luggage restriction
+ */
+ public ILuggageRestriction getLuggageRestriction();
+
+ /**
+ * Sets the luggage restriction.
+ *
+ * @param luggageRestriction the new luggage restriction
+ */
+ public void setLuggageRestriction(ILuggageRestriction luggageRestriction);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+
+ /**
+ * Sets the service level.
+ *
+ * The service level codes are defined in UIC leaflet 918.1
+ *
+ * @param serviceLevel the new service level
+ */
+ public void setServiceLevel(String serviceLevel);
+
+
+ /**
+ * Gets the service level.
+ *
+ * The service level codes are defined in UIC leaflet 918.1
+ *
+ * @return the service level
+ */
+ public String getServiceLevel();
+
+
+
+ /**
+ * Sets the price.
+ *
+ *
+ * @param price
+ */
+ public void setPrice(Long price);
+
+
+ /**
+ * Gets the price.
+ *
+ * The price
+ *
+ * @return the price
+ */
+ public Long getPrice();
+
+
+ /**
+ * Gets the included add on tickets.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @return the included add ons
+ */
+ public Collection<IVatDetail> getVatDetails();
+
+ /**
+ * Adds an included add on ticket.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @param includedAddOn the included add on
+ */
+ public void addVatDetail(IVatDetail vatDetail) ;
+
+
+
+
+ /**
+ * Gets the validFrom date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validFrom date time UTC offset
+ */
+ public Long getValidFromUTCoffset();
+
+ /**
+ * Sets the validFrom date time.
+ *
+ * @param validFromDateTime the new validFrom date time
+ */
+ public void setValidFromUTCoffset(Long validFromUTCoffset) ;
+
+ /**
+ * Gets the validUntil date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validUntil date time UTC offset
+ */
+ public Long getValidUntilUTCoffset();
+
+ /**
+ * Sets the validUntil date time.
+ *
+ * @param validUntilDateTime the new validUntil date time
+ */
+ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ;
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IParkingGround.java b/src/org/uic/ticket/api/spec/IParkingGround.java new file mode 100644 index 0000000..55cd55b --- /dev/null +++ b/src/org/uic/ticket/api/spec/IParkingGround.java @@ -0,0 +1,253 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+
+
+/**
+ * The Interface IParkingGround.
+ *
+ * IParkingGround provides the data for a prking ground reservation
+ */
+public interface IParkingGround extends IDocumentData {
+
+ /**
+ * Gets the parking ground id.
+ *
+ * @return the parking ground id
+ */
+ public String getParkingGroundId();
+
+ /**
+ * Sets the id of the parking ground
+ *
+ * @param parkingGroundId the new parking ground id
+ */
+ public void setParkingGroundId(String parkingGroundId);
+
+ /**
+ * Gets the from parking date.
+ *
+ * @return the from parking date
+ */
+ public Date getFromParkingDate();
+
+ /**
+ * Sets the from parking date.
+ *
+ * @param parkingDate the new from parking date
+ */
+ public void setFromParkingDate(Date parkingDate);
+
+ /**
+ * Gets the to parking date.
+ *
+ * @return the to parking date
+ */
+ public Date getToParkingDate();
+
+ /**
+ * Sets the to parking date.
+ *
+ * @param parkingDate the new to parking date
+ */
+ public void setToParkingDate(Date parkingDate);
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the access code to enter the parking ground.
+ *
+ * @return the access code to enter the parking ground
+ */
+ public String getAccessCode();
+
+ /**
+ * Sets the access code to enter the parking ground.
+ *
+ * @param accessCode the new access code to enter the parking ground
+ */
+ public void setAccessCode(String accessCode);
+
+ /**
+ * Gets the human readable location name of the parking ground.
+ *
+ * @return the human readable location name of the parking ground.
+ */
+ public String getLocation();
+
+ /**
+ * Sets the human readable location name of the parking ground.
+ *
+ * @param location the new human readable location name of the parking ground.
+ */
+ public void setLocation(String location);
+
+ /**
+ * Gets the station code in case the parking ground is associated with a station
+ *
+ * @return the station code in case the parking ground is associated with a station
+ */
+ public String getStation();
+
+ /**
+ * Sets the station code in case the parking ground is associated with a station
+ *
+ * @param station the new station code in case the parking ground is associated with a station
+ */
+ public void setStation(String station);
+
+ /**
+ * Gets the special information.
+ *
+ * @return the special information
+ */
+ public String getSpecialInformation();
+
+ /**
+ * Sets the special information.
+ *
+ * @param specialInformation the new special information
+ */
+ public void setSpecialInformation(String specialInformation);
+
+ /**
+ * Gets the entry track to enter the parking ground.
+ *
+ * @return the entry track to enter the parking ground.
+ */
+ public String getEntryTrack();
+
+ /**
+ * Sets the entry track to enter the parking ground..
+ *
+ * @param entryTrack the new entry track to enter the parking ground.
+ */
+ public void setEntryTrack(String entryTrack);
+
+ /**
+ * Gets the number plate.
+ *
+ * @return the number plate
+ */
+ public String getNumberPlate();
+
+ /**
+ * Sets the number plate.
+ *
+ * @param numberPlate the new number plate
+ */
+ public void setNumberPlate(String numberPlate);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extensionData the new extension
+ */
+ public void setExtension(IExtension extensionData);
+
+ /**
+ * Gets the station code table.
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the product owner.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+
+ /**
+ * Gets the product type.
+ *
+ * @return the product type
+ */
+ public String getProductId();
+
+ /**
+ * Sets the product type.
+ *
+ * @param id the new product id
+ */
+ public void setProductId(String type);
+
+ /**
+ * Sets the price.
+ *
+ *
+ * @param price
+ */
+ public void setPrice(Long price);
+
+
+ /**
+ * Gets the price.
+ *
+ * The price
+ *
+ * @return the price
+ */
+ public Long getPrice();
+
+
+ /**
+ * Gets the included add on tickets.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @return the included add ons
+ */
+ public Collection<IVatDetail> getVatDetails();
+
+ /**
+ * Adds an included add on ticket.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @param includedAddOn the included add on
+ */
+ public void addVatDetail(IVatDetail vatDetail) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/IPass.java b/src/org/uic/ticket/api/spec/IPass.java new file mode 100644 index 0000000..339b842 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IPass.java @@ -0,0 +1,415 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.TravelClassType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IPass.
+ *
+ * IPass provides the data for a rail pass ticket.
+ *
+ */
+public interface IPass extends IDocumentData {
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product id.
+ *
+ * @return the product id
+ */
+ public String getProductId();
+
+ /**
+ * Sets the product id.
+ *
+ * @param productId the new product id
+ */
+ public void setProductId(String productId);
+
+ /**
+ * Gets the product owner.
+ *
+ * Company that provides the product.
+ * E.g. The RICS code of Eurail G.E.I. for Eurail passes.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * Company that provides the product.
+ * E.g. The RICS code of Eurail G.E.I. for Eurail passes.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the pass type.
+ *
+ * @return the pass type
+ */
+ public int getPassType();
+
+ /**
+ * Sets the pass type.
+ *
+ * -- type of the pass, code list provided by the product owner
+ *
+ * @param passType the new pass type
+ */
+ public void setPassType(int passType);
+
+ /**
+ * Gets the human readable pass description.
+ *
+ * @return the human readable pass description.
+ */
+ public String getPassDescription();
+
+ /**
+ * Sets the human readable pass description.
+ *
+ * @param passDescription the new human readable pass description.
+ */
+ public void setPassDescription(String passDescription);
+
+ /**
+ * Gets the class code.
+ *
+ * @return the class code
+ */
+ public TravelClassType getClassCode();
+
+ /**
+ * Sets the travel class code.
+ *
+ * @param classCode the new travel class code
+ */
+ public void setClassCode(TravelClassType classCode);
+
+ /**
+ * Gets the valid from date and time.
+ *
+ * @return the valid from date and time
+ */
+ public Date getValidFrom();
+
+ /**
+ * Sets the valid from date and time.
+ *
+ * @param validFrom the new valid from date and time
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until date and time.
+ *
+ * @return the valid until date and time
+ */
+ public Date getValidUntil();
+
+ /**
+ * Sets the valid until date and time.
+ *
+ * @param validUntil the new valid until date and time
+ */
+ public void setValidUntil(Date validUntil);
+
+ /**
+ * Gets the number of validity days in case this is less than the entire validity range and the valid from day is open.
+ *
+ * @return the number of validity days in case this is less than the entire validity range.
+ */
+ public int getNumberOfValidityDays();
+
+ /**
+ * Sets the number of validity days in case this is less than the entire validity range and the valid from day is open.
+ *
+ * @param numberOfValidityDays the new number of validity days in case this is less than the entire validity range.
+ */
+ public void setNumberOfValidityDays(int numberOfValidityDays);
+
+ /**
+ * Gets the number of possible trips.
+ *
+ * @return the number of possible trips
+ */
+ public int getNumberOfPossibleTrips();
+
+ /**
+ * Sets the number of possible trips.
+ *
+ * @param numberOfPossibleTrips the new number of possible trips
+ */
+ public void setNumberOfPossibleTrips(int numberOfPossibleTrips);
+
+ /**
+ * Gets the number of days of travel in case this is less than the entire validity range.
+ *
+ * @return the number of days of travel in case this is less than the entire validity range
+ */
+ public int getNumberOfDaysOfTravel();
+
+ /**
+ * Sets the number of days of travel in case this is less than the entire validity range.
+ *
+ * @param numberOfDaysOfTravel the new number of days of travel in case this is less than the entire validity range
+ */
+ public void setNumberOfDaysOfTravel(int numberOfDaysOfTravel) ;
+
+ /**
+ * Gets the activated days valid for traveling.
+ *
+ * @return the activated days valid for traveling
+ */
+ public Collection<Date> getActivatedDays() ;
+
+ /**
+ * Adds an activated day valid for traveling.
+ *
+ * @param activatedDay the activated day valid for traveling
+ */
+ public void addActivatedDay(Date activatedDay);
+
+ /**
+ * Gets the countries where the pass is valid.
+ *
+ * Code list according to the codes in UIC leaflet 918.2
+ *
+ * @return the countries
+ */
+ public Collection<Integer> getCountries();
+
+ /**
+ * Adds a country.
+ *
+ * Code list according to the codes in UIC leaflet 918.2
+ *
+ * @param country the country
+ */
+ public void addCountry(Integer country);
+
+ /**
+ * Gets the included carriers.
+ *
+ * @return the included carriers
+ */
+ public Collection<String> getIncludedCarriers();
+
+ /**
+ * Adds the included carrier.
+ *
+ * @param carrier the carrier
+ */
+ public void addIncludedCarrier(String carrier);
+
+ /**
+ * Gets the excluded carriers.
+ *
+ * @return the excluded carriers
+ */
+ public Collection<String> getExcludedCarriers();
+
+ /**
+ * Adds the excluded carrier.
+ *
+ * @param carrier the carrier
+ */
+ public void addExcludedCarrier(String carrier);
+
+ /**
+ * Gets the included service brands.
+ *
+ * @return the included service brands
+ */
+ public Collection<Integer> getIncludedServiceBrands();
+
+ /**
+ * Adds the included service brand.
+ *
+ * @param includedServiceBrand the included service brand
+ */
+ public void addIncludedServiceBrand(Integer includedServiceBrand);
+
+ /**
+ * Gets the excluded service brands.
+ *
+ * @return the excluded service brands
+ */
+ public Collection<Integer> getExcludedServiceBrands();
+
+ /**
+ * Adds the excluded service brand.
+ *
+ * @param excludedServiceBrand the excluded service brand
+ */
+ public void addExcludedServiceBrand(Integer excludedServiceBrand);
+
+ /**
+ * Gets the list of valid regions.
+ *
+ * @return the valid region list
+ */
+ public Collection<IRegionalValidity> getValidRegionList();
+
+ /**
+ * Adds a valid region.
+ *
+ * @param validRegion the valid region to be added
+ */
+ public void addValidRegion(IRegionalValidity validRegion);
+
+ /**
+ * Gets the tariffs.
+ *
+ * @return the tariffs
+ */
+ public Collection<ITariff> getTariffs();
+
+ /**
+ * Adds the tariff.
+ *
+ * @param tariff the tariff
+ */
+ public void addTariff(ITariff tariff);
+
+ /**
+ * Gets the info text.
+ *
+ * @return the info text
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text.
+ *
+ * @param infoText the new info text
+ */
+ public void setInfoText(String infoText);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+
+ /**
+ * Sets the validity details containing additional validity ranges and excluded time ranges.
+ *
+ * @param validityDetails the new validity details
+ */
+ public void setValidityDetails(IValidityDetails validityDetails);
+
+
+ /**
+ * Gets the validity details containing additional validity ranges and excluded time ranges.
+ *
+ * @return the validity details
+ */
+ public IValidityDetails getValidityDetails();
+
+ /**
+ * Sets the price.
+ *
+ *
+ * @param price
+ */
+ public void setPrice(Long price);
+
+
+ /**
+ * Gets the price.
+ *
+ * The price
+ *
+ * @return the price
+ */
+ public Long getPrice();
+
+
+ /**
+ * Gets the included add on tickets.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @return the included add ons
+ */
+ public Collection<IVatDetail> getVatDetails();
+
+ /**
+ * Adds an included add on ticket.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @param includedAddOn the included add on
+ */
+ public void addVatDetail(IVatDetail vatDetail) ;
+
+ /**
+ * Sets the until date and time.
+ *
+ * @param date the new until date and time
+ */
+ public void setUntilDate(Date date);
+
+
+ /**
+ * Gets the validFrom date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validFrom date time UTC offset
+ */
+ public Long getValidFromUTCoffset();
+
+ /**
+ * Sets the validFrom date time.
+ *
+ * @param validFromDateTime the new validFrom date time
+ */
+ public void setValidFromUTCoffset(Long validFromUTCoffset) ;
+
+ /**
+ * Gets the validUntil date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validUntil date time UTC offset
+ */
+ public Long getValidUntilUTCoffset();
+
+ /**
+ * Sets the validUntil date time.
+ *
+ * @param validUntilDateTime the new validUntil date time
+ */
+ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/IPlaces.java b/src/org/uic/ticket/api/spec/IPlaces.java new file mode 100644 index 0000000..7033938 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IPlaces.java @@ -0,0 +1,80 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+/**
+ * The Interface IPlaces.
+ *
+ * IPlaces provides data on reserved places
+ */
+public interface IPlaces {
+
+ /**
+ * Gets the coach.
+ *
+ * @return the coach
+ */
+ public String getCoach() ;
+
+ /**
+ * Sets the coach.
+ *
+ * @param coach the new coach
+ */
+ public void setCoach(String coach) ;
+
+ /**
+ * Gets the human readable place string.
+ * E.g.: "15-18, 21, 22"
+ *
+ * @return the place string
+ */
+ public String getPlaceString() ;
+
+ /**
+ * Sets the the human readable place string.
+ * E.g.: "15-18, 21, 22"
+ *
+ * This elements should be avoided if not explicitly required for a special product.
+ *
+ * @param placeString the new place string
+ */
+ public void setPlaceString(String placeString);
+
+ /**
+ * Gets the human readable place description.
+ * E.g. "2 Window, open space"
+ *
+ * This elements should be avoided if not explicitly required for a special product.
+ *
+ * @return the human readable place description
+ */
+ public String getPlaceDescription();
+
+ /**
+ * Sets the human readable place description.
+ * E.g. "2 Window, open space"
+ *
+ * @param placeDescription the new place description
+ */
+ public void setPlaceDescription(String placeDescription);
+
+ /**
+ * Gets the places.
+ *
+ * @return the places
+ */
+ public Collection<String> getPlaces();
+
+ /**
+ * Adds the place.
+ *
+ * @param place the place
+ */
+ public void addPlace(String place);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IPolygone.java b/src/org/uic/ticket/api/spec/IPolygone.java new file mode 100644 index 0000000..36e6cd8 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IPolygone.java @@ -0,0 +1,32 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+/**
+ * The Interface IPolygone.
+ *
+ *
+ * IPolygone provides a description of a region valid for traveling by a polygon of geo-coordinates.
+ *
+ */
+public interface IPolygone extends IRegionalValidity {
+
+ /**
+ * Gets the edges of the polygon.
+ *
+ * @return the edges
+ */
+ public Collection<IGeoCoordinate> getEdges();
+
+ /**
+ * Adds an edge to the polygon.
+ *
+ * @param edge the geo-coordinate of the edge
+ */
+ public void addEdge(IGeoCoordinate edge);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IRegionalValidity.java b/src/org/uic/ticket/api/spec/IRegionalValidity.java new file mode 100644 index 0000000..18590f8 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IRegionalValidity.java @@ -0,0 +1,15 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+/**
+ * The Interface IRegionalValidity.
+ *
+ * IRegionalValidity indicates a description of a region valid for travelling
+ *
+ */
+public interface IRegionalValidity {
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IRegisteredLuggage.java b/src/org/uic/ticket/api/spec/IRegisteredLuggage.java new file mode 100644 index 0000000..87e3ba7 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IRegisteredLuggage.java @@ -0,0 +1,56 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+/**
+ * The Interface IRegisteredLuggage.
+ *
+ * IRegisteredLuggage provides a description for a piece of luggage registered for traveling and
+ * thus exceeding the general restrictions for luggage transport.
+ *
+ */
+public interface IRegisteredLuggage {
+
+ /**
+ * Gets the registration id.
+ *
+ * @return the registration id
+ */
+ public String getRegistrationId();
+
+ /**
+ * Sets the registration id.
+ *
+ * @param registrationId the new registration id
+ */
+ public void setRegistrationId(String registrationId);
+
+ /**
+ * Gets the max weight of the luggage piece in kg.
+ *
+ * @return the max weight
+ */
+ public int getMaxWeight();
+
+ /**
+ * Sets the max weight of the luggage piece in kg.
+ *
+ * @param maxWeight the new max weight
+ */
+ public void setMaxWeight(int maxWeight);
+
+ /**
+ * Gets the max size as sum of length with and height in cm
+ *
+ * @return the max size
+ */
+ public int getMaxSize() ;
+
+ /**
+ * Sets the max size as sum of length with and height in cm.
+ *
+ * @param maxSize the new max size
+ */
+ public void setMaxSize(int maxSize);
+}
diff --git a/src/org/uic/ticket/api/spec/IReservation.java b/src/org/uic/ticket/api/spec/IReservation.java new file mode 100644 index 0000000..3ec90da --- /dev/null +++ b/src/org/uic/ticket/api/spec/IReservation.java @@ -0,0 +1,522 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+import org.uic.ticket.api.asn.omv1.PriceTypeType;
+import org.uic.ticket.api.asn.omv1.ServiceType;
+import org.uic.ticket.api.asn.omv1.TravelClassType;
+
+
+/**
+ * The Interface IReservation.
+ *
+ * IReservation describes a reservation, either a reservation only or an integrated reservation ticket
+ */
+public interface IReservation extends IDocumentData {
+
+ /**
+ * Gets the train.
+ *
+ * @return the train
+ */
+ public String getTrain();
+
+ /**
+ * Sets the train.
+ *
+ * @param train the new train
+ */
+ public void setTrain(String train);
+
+ /**
+ * Gets the departure date and time.
+ *
+ * @return the departure date and time
+ */
+ public Date getDepartureDate();
+
+ /**
+ * Sets the departure date and time.
+ *
+ * @param departureDate the new departure date and time
+ */
+ public void setDepartureDate(Date departureDate);
+
+ /**
+ * Gets the arrival date and time.
+ *
+ * @return the arrival date and time
+ */
+ public Date getArrivalDate();
+
+ /**
+ * Sets the arrival date and time.
+ *
+ * @param arrivalDate the new arrival date and time
+ */
+ public void setArrivalDate(Date arrivalDate);
+
+ /**
+ * Gets the booking reference.
+ *
+ * The booking reference must contain the booking reference exchanged via
+ * booking interface according to UIC leaflet 918.1 in case this interface was used.
+ *
+ * @return the booking reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * The booking reference must contain the booking reference exchanged via
+ * booking interface according to UIC leaflet 918.1 in case this interface was used.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product id.
+ *
+ * @return the product id
+ */
+ public String getProductId();
+
+ /**
+ * Sets the product id.
+ *
+ * @param productId the new product id
+ */
+ public void setProductId(String productId);
+
+ /**
+ * Gets the product owner.
+ *
+ * The company that defined the product. This is the allocating railway in case of car carriage reservations.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner() ;
+
+ /**
+ * Sets the product owner.
+ *
+ * The company that defined the product. This is the allocating railway in case of car carriage reservations.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the service brand of the train.
+ *
+ * Service brand code list provided by UIC
+ *
+ * @return the service brand of the train
+ */
+ public IServiceBrand getServiceBrand();
+
+ /**
+ * Sets the service brand of the train
+ *
+ * Service brand code list provided by UIC
+ *
+ * @param serviceBrand the new service brand of the train
+ */
+ public void setServiceBrand(IServiceBrand serviceBrand);
+
+ /**
+ * Gets the service.
+ *
+ * @return the service
+ */
+ public ServiceType getService();
+
+ /**
+ * Sets the service.
+ *
+ * Services according to UIC leaflet 918.1
+ *
+ * @param service the new service
+ */
+ public void setService(ServiceType service);
+
+
+ /**
+ * Gets the station code table.
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Gets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in case of reservations is the UIC station codes table for reservations
+ *
+ * @return the station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the from station code.
+ *
+ * @return the from station code
+ */
+ public String getFromStation();
+
+ /**
+ * Sets the from station code.
+ *
+ * @param fromStation the new from station code
+ */
+ public void setFromStation(String fromStation);
+
+ /**
+ * Gets the to station code.
+ *
+ * @return the to station code
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station code.
+ *
+ * @param toStation the new to station code
+ */
+ public void setToStation(String toStation);
+
+ /**
+ * Gets the from station name.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName();
+
+ /**
+ * Sets the from station name.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+
+ /**
+ * Gets the carriers responsible for the transport.
+ *
+ * @return the carriers
+ */
+ public Collection<String> getCarriers();
+
+ /**
+ * Adds a carrier responsible for the transport.
+ *
+ * @param carrier the carrier
+ */
+ public void addCarrier(String carrier);
+
+ /**
+ * Gets the travel class code.
+ *
+ * @return the travel class code
+ */
+ public TravelClassType getClassCode();
+
+ /**
+ * Sets the travel class code.
+ *
+ * @param classCode the new travel class code
+ */
+ public void setClassCode(TravelClassType classCode);
+
+ /**
+ * Gets the service level.
+ *
+ * Service level codes as defined in UIC leaflet 918.1
+ *
+ * @return the service level
+ */
+ public String getServiceLevel();
+
+ /**
+ * Sets the service level.
+ *
+ * Service level codes as defined in UIC leaflet 918.1
+ *
+ * @param serviceLevel the new service level
+ */
+ public void setServiceLevel(String serviceLevel);
+
+ /**
+ * Gets the places.
+ *
+ * @return the places
+ */
+ public IPlaces getPlaces();
+
+ /**
+ * Sets the places.
+ *
+ * @param places the new places
+ */
+ public void setPlaces(IPlaces places);
+
+
+ /**
+ * Gets the additional places in a second coach.
+ *
+ * @return the additional places in a second coach.
+ */
+ public IPlaces getAdditionalPlaces();
+
+ /**
+ * Sets the additional places.
+ *
+ * @param places the new places
+ */
+ public void setAdditionalPlaces(IPlaces places);
+
+ /**
+ * Gets the bicycle places.
+ *
+ * @return the bicycle places
+ */
+ public IPlaces getBicyclePlaces();
+
+ /**
+ * Sets the bicycle places.
+ *
+ * @param bicyclePlaces the new bicycle places
+ */
+ public void setBicyclePlaces(IPlaces bicyclePlaces);
+
+ /**
+ * Gets the compartment details.
+ *
+ * @return the compartment details
+ */
+ public ICompartmentDetails getCompartmentDetails();
+
+ /**
+ * Sets the compartment details.
+ *
+ * @param compartmentDetails the new compartment details
+ */
+ public void setCompartmentDetails(ICompartmentDetails compartmentDetails);
+
+ /**
+ * Gets the number of overbooked travelers.
+ *
+ * @return the number of overbooked travelers
+ */
+ public int getNumberOfOverbooked();
+
+ /**
+ * Sets the number of overbooked travelers.
+ *
+ * @param numberOfOverbooked the new number of overbooked travelers
+ */
+ public void setNumberOfOverbooked(int numberOfOverbooked);
+
+ /**
+ * Gets the berths.
+ *
+ * @return the berths
+ */
+ public Collection<IBerth> getBerths();
+
+ /**
+ * Adds the berth.
+ *
+ * @param berth the berth
+ */
+ public void addBerth(IBerth berth);
+
+ /**
+ * Gets the tariffs.
+ *
+ * @return the tariffs
+ */
+ public Collection<ITariff> getTariffs();
+
+ /**
+ * Adds the tariff.
+ *
+ * @param tariff the tariff
+ */
+ public void addTariff(ITariff tariff);
+
+ /**
+ * Gets the price type.
+ *
+ * @return the price type
+ */
+ public PriceTypeType getPriceType();
+
+ /**
+ * Sets the price type.
+ *
+ * @param priceType the new price type
+ */
+ public void setPriceType(PriceTypeType priceType) ;
+
+ /**
+ * Gets the type of supplement.
+ *
+ * Codes according to UIC leaflet 918.1
+ *
+ * @return the type of supplement
+ */
+ public int getTypeOfSupplement() ;
+
+ /**
+ * Sets the type of supplement.
+ *
+ * Codes according to UIC leaflet 918.1
+ *
+ * @param typeOfSupplement the new type of supplement
+ */
+ public void setTypeOfSupplement(int typeOfSupplement);
+
+ /**
+ * Gets the number of supplements.
+ *
+ * @return the number of supplements
+ */
+ public int getNumberOfSupplements();
+
+ /**
+ * Sets the number of supplements.
+ *
+ * @param numberOfSupplements the new number of supplements
+ */
+ public void setNumberOfSupplements(int numberOfSupplements);
+
+
+ /**
+ * Gets the info text.
+ *
+ * @return the info text
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text.
+ *
+ * @param infoText the new info text
+ */
+ public void setInfoText(String infoText) ;
+
+ /**
+ * Gets the luggage restriction.
+ *
+ * @return the luggage restriction
+ */
+ public ILuggageRestriction getLuggageRestriction();
+
+ /**
+ * Sets the luggage restriction.
+ *
+ * @param luggageRestriction the new luggage restriction
+ */
+ public void setLuggageRestriction(ILuggageRestriction luggageRestriction);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extension the new extension
+ */
+ public void setExtension(IExtension extension);
+
+ /**
+ * Sets the price.
+ *
+ *
+ * @param price
+ */
+ public void setPrice(Long price);
+
+
+ /**
+ * Gets the price.
+ *
+ * The price
+ *
+ * @return the price
+ */
+ public Long getPrice();
+
+
+ /**
+ * Gets the included add on tickets.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @return the included add ons
+ */
+ public Collection<IVatDetail> getVatDetails();
+
+ /**
+ * Adds an included add on ticket.
+ *
+ * E.g. an included local transport ticket at the beginning or end of the route.
+ *
+ * @param includedAddOn the included add on
+ */
+ public void addVatDetail(IVatDetail vatDetail) ;
+
+ /**
+ * Gets the departure date time offset to UTC in units of 15 minutes.
+ *
+ * @return the departure date time UTC offset
+ */
+ public Long getDepartureUTCoffset();
+
+ /**
+ * Sets the departure date time.
+ *
+ * @param departureDateTime the new departure date time
+ */
+ public void setDepartureUTCoffset(Long departureUTCoffset) ;
+
+ /**
+ * Gets the arrival date time offset to UTC in units of 15 minutes.
+ *
+ * @return the arrival date time UTC offset
+ */
+ public Long getArrivalUTCoffset();
+
+ /**
+ * Sets the arrival date time.
+ *
+ * @param arrivalDateTime the new arrival date time
+ */
+ public void setArrivalUTCoffset(Long arrivalUTCoffset) ;
+}
diff --git a/src/org/uic/ticket/api/spec/IReturnRouteDescription.java b/src/org/uic/ticket/api/spec/IReturnRouteDescription.java new file mode 100644 index 0000000..6f718da --- /dev/null +++ b/src/org/uic/ticket/api/spec/IReturnRouteDescription.java @@ -0,0 +1,100 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+/**
+ * The Interface IReturnRouteDescription.
+ *
+ * IReturnRouteDescription provides the description of a return route for an open
+ * ticket. The data elements for the route description are repeated.
+ */
+public interface IReturnRouteDescription {
+
+ /**
+ * Gets the from station code.
+ *
+ * @return the from station code
+ */
+ public String getFromStation() ;
+
+ /**
+ * Sets the from station code.
+ *
+ * @param fromStation the new from station code
+ */
+ public void setFromStation(String fromStation);
+
+ /**
+ * Gets the to station code.
+ *
+ * @return the to station code
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station code.
+ *
+ * @param toStation the new to station code
+ */
+ public void setToStation(String toStation) ;
+
+ /**
+ * Gets the from station name.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName() ;
+
+ /**
+ * Sets the from station name.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+
+ /**
+ * Gets the valid region description.
+ *
+ * @return the valid region desc
+ */
+ public String getValidRegionDesc();
+
+ /**
+ * Sets the valid region description.
+ *
+ * @param validRegionDesc the new valid region description
+ */
+ public void setValidRegionDesc(String validRegionDesc);
+
+ /**
+ * Gets the list of valid regions.
+ *
+ * @return the valid region list
+ */
+ public Collection<IRegionalValidity> getValidRegionList() ;
+
+ /**
+ * Adds the valid region list.
+ *
+ * @param validRegion the valid region
+ */
+ public void addValidRegionList(IRegionalValidity validRegion);
+
+}
diff --git a/src/org/uic/ticket/api/spec/IRouteSection.java b/src/org/uic/ticket/api/spec/IRouteSection.java new file mode 100644 index 0000000..ef93426 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IRouteSection.java @@ -0,0 +1,84 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+
+/**
+ * The Interface IRouteSection.
+ *
+ * IRouteSection describes a section of a route by the beginn and end station.
+ */
+public interface IRouteSection {
+
+ /**
+ * Gets the station code table.
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the from station code.
+ *
+ * @return the from station code
+ */
+ public String getFromStation();
+
+ /**
+ * Sets the from station code.
+ *
+ * @param fromStation the new from station code
+ */
+ public void setFromStation(String fromStation) ;
+
+ /**
+ * Gets the to station code.
+ *
+ * @return the to station code
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station code.
+ *
+ * @param toStation the new to station code
+ */
+ public void setToStation(String toStation);
+
+ /**
+ * Gets the from station name.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName();
+
+ /**
+ * Sets the from station name.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+}
diff --git a/src/org/uic/ticket/api/spec/ISeriesDataDetails.java b/src/org/uic/ticket/api/spec/ISeriesDataDetails.java new file mode 100644 index 0000000..7c410a2 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ISeriesDataDetails.java @@ -0,0 +1,66 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+/**
+ * The Interface ISeriesDataDetails.
+ *
+ * ISeriesDataDetails describes details of a series (according to UIC leaflet 108.1
+ *
+ * Series details should be omitted if not explicitely required for a specific product.
+ *
+ *
+ */
+public interface ISeriesDataDetails {
+
+
+
+ /**
+ * Gets the supplying carrier of the series data.
+ *
+ * @return the supplying carrier of the series data
+ */
+ public int getSupplyingCarrier() ;
+
+
+ /**
+ * Sets the supplying carrier of the series data.
+ *
+ * @param supplyingCarrier the new supplying carrier of the series data
+ */
+ public void setSupplyingCarrier(int supplyingCarrier);
+
+
+ /**
+ * Gets the offer identification of the series data.
+ *
+ * @return the offer identification of the series data
+ */
+ public int getOfferIdentification();
+
+
+ /**
+ * Sets the offer identification of the series data.
+ *
+ * @param offerIdentification the new offer identification of the series data
+ */
+ public void setOfferIdentification(int offerIdentification) ;
+
+
+ /**
+ * Gets the series id.
+ *
+ * @return the series id
+ */
+ public int getSeries();
+
+
+ /**
+ * Sets the series id.
+ *
+ * @param series the new series id
+ */
+ public void setSeries(int series) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/IServiceBrand.java b/src/org/uic/ticket/api/spec/IServiceBrand.java new file mode 100644 index 0000000..4a99dad --- /dev/null +++ b/src/org/uic/ticket/api/spec/IServiceBrand.java @@ -0,0 +1,55 @@ +package org.uic.ticket.api.spec;
+
+
+public interface IServiceBrand {
+
+ /**
+ * Gets the service brand of the train.
+ *
+ * Service brand code list provided by UIC
+ *
+ * @return the service brand of the train
+ */
+ public int getServiceBrand();
+
+ /**
+ * Sets the service brand of the train
+ *
+ * Service brand code list provided by UIC
+ *
+ * @param serviceBrand the new service brand of the train
+ */
+ public void setServiceBrand(int serviceBrand);
+
+
+ /**
+ * Gets the service brand description.
+ *
+ * Services according to UIC leaflet 918.1
+ *
+ * @return the service brand description
+ */
+ public String getServiceBrandDescription();
+
+ /**
+ * Sets the service brand description.
+ *
+ * @param serviceBrandDescription the new service brand description
+ */
+ public void setServiceBrandDescription(String serviceBrandDescription);
+
+ /**
+ * Gets the service brand abbreviation.
+ *
+ * @return the service brand abbreviation
+ */
+ public String getServiceBrandAbbreviation();
+
+ /**
+ * Sets the service brand abbreviation.
+ *
+ * @param serviceBrandAbbreviation the new service brand abbreviation
+ */
+ public void setServiceBrandAbbreviation(String serviceBrandAbbreviation);
+
+}
diff --git a/src/org/uic/ticket/api/spec/IStationPassage.java b/src/org/uic/ticket/api/spec/IStationPassage.java new file mode 100644 index 0000000..c98b83d --- /dev/null +++ b/src/org/uic/ticket/api/spec/IStationPassage.java @@ -0,0 +1,241 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IStationPassage.
+ *
+ * IStationPassage describes a ticket to enter or pass a station or platform.
+ *
+ */
+public interface IStationPassage extends IDocumentData {
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference();
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product type.
+ *
+ * @return the product type
+ */
+ public String getProductId();
+
+ /**
+ * Sets the product type.
+ *
+ * @param type the new product id
+ */
+ public void setProductId(String type);
+
+ /**
+ * Gets the product owner.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the valid from date and time.
+ *
+ * @return the valid from date and time
+ */
+ public Date getValidFrom();
+
+ /**
+ * Sets the valid from date and time.
+ *
+ * @param validFrom the new valid from date and time
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until date and time.
+ *
+ * @return the valid until date and time
+ */
+ public Date getValidUntil() ;
+
+ /**
+ * Sets the valid until date and time.
+ *
+ * @param validUntil the new valid until date and time
+ */
+ public void setValidUntil(Date validUntil);
+
+ /**
+ * Gets the station code table.
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the list of station codes of all stations where the passage is allowed.
+ *
+ * @return the stations list
+ */
+ public Collection<String> getStations();
+
+ /**
+ * Adds a station where the passage is allowed.
+ *
+ * @param station the station code
+ */
+ public void addStation(String station);
+
+ /**
+ * Adds a station name of a station where the passage is allowed.
+ *
+ * @param name the name
+ */
+ public void addStationName(String name);
+
+ /**
+ * Gets the station names of all stations where the passage is allowed.
+ *
+ * @return the station names
+ */
+ public Collection<String> getStationNames();
+
+ /**
+ * Gets the number of days allowed the passage is allowed in case the number is smaller that the validity range.
+ *
+ * @return the number of passage days allowed
+ */
+ public int getNumberOfdaysAllowed();
+
+ /**
+ * Sets the number of days allowed the passage is allowed in case the number is smaller that the validity range.
+ *
+ * @param numberOfdaysAllowed the new number of allowed days
+ */
+ public void setNumberOfdaysAllowed(int numberOfdaysAllowed);
+
+
+ /**
+ * Gets the product name.
+ *
+ * @return the product name
+ */
+ public String getProductName();
+
+ /**
+ * Sets the product name.
+ *
+ * @param name the new product name
+ */
+ public void setProductName(String name);
+
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extensionData the new extension
+ */
+ public void setExtension(IExtension extensionData);
+
+
+ /**
+ * Gets the area codes of areas in a station where the access is allowed.
+ *
+ * @return the area codes of areas in a station where the access is allowed
+ */
+ public Collection<String> getAreaCodes();
+
+ /**
+ * Gets the area names of areas in a station where the access is allowed.
+ *
+ * @return the area names of areas in a station where the access is allowed
+ */
+ public Collection<String> getAreaNames();
+
+ /**
+ * Adds an area code of an area in a station where the access is allowed.
+ *
+ * @param code the area code of an area in a station where the access is allowed.
+ */
+ public void addAreaCode(String code);
+
+ /**
+ * Adds an area name of an area in a station where the access is allowed.
+ *
+ * @param name the name of an area in a station where the access is allowed
+ */
+ public void addAreaName(String name);
+
+ /**
+ * Sets the until date and time.
+ *
+ * @param date the new until date and time
+ */
+ public void setUntilDate(Date date);
+
+
+ /**
+ * Gets the validFrom date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validFrom date time UTC offset
+ */
+ public Long getValidFromUTCoffset();
+
+ /**
+ * Sets the validFrom date time.
+ *
+ * @param validFromDateTime the new validFrom date time
+ */
+ public void setValidFromUTCoffset(Long validFromUTCoffset) ;
+
+ /**
+ * Gets the validUntil date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validUntil date time UTC offset
+ */
+ public Long getValidUntilUTCoffset();
+
+ /**
+ * Sets the validUntil date time.
+ *
+ * @param validUntilDateTime the new validUntil date time
+ */
+ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/ITariff.java b/src/org/uic/ticket/api/spec/ITariff.java new file mode 100644 index 0000000..5bd4a15 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ITariff.java @@ -0,0 +1,207 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+import org.uic.ticket.api.asn.omv1.PassengerType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ITariff.
+ *
+ * ITariff describes the tariff of an open ticket, reservation or or IRT
+ *
+ *
+ */
+public interface ITariff {
+
+ /**
+ * Gets the number of passengers associated with that tariff.
+ *
+ * @return the number of passengers associated with that tariff
+ */
+ public int getNumberOfPassengers();
+
+
+ /**
+ * Sets the number of passengers associated with that tariff.
+ *
+ * @param numberOfPassengers the new number of passengers associated with that tariff
+ */
+ public void setNumberOfPassengers(int numberOfPassengers);
+
+
+ /**
+ * Gets the passenger type.
+ *
+ * @return the passenger type
+ */
+ public PassengerType getPassengerType();
+
+
+ /**
+ * Sets the passenger type.
+ *
+ * @param passengerType the new passenger type
+ */
+ public void setPassengerType(PassengerType passengerType);
+
+ /**
+ * Gets the upper limit of the age of the passenger to qualify for that tariff.
+ *
+ * @return the upper age limit
+ */
+ public int getAgeBelow();
+
+ /**
+ * Sets the upper limit of the age of the passenger to qualify for that tariff.
+ *
+ * @param ageBelow the new upper limit of the age of the passenger to qualify for that tariff
+ */
+ public void setAgeBelow(int ageBelow);
+
+
+ /**
+ * Gets the lower limit of the age of the passenger to qualify for that tariff.
+ *
+ * @return the lower limit of the age of the passenger to qualify for that tariff
+ */
+ public int getAgeAbove();
+
+
+ /**
+ * Sets the lower limit of the age of the passenger to qualify for that tariff.
+ *
+ * @param ageAbove the new lower limit of the age of the passenger to qualify for that tariff
+ */
+ public void setAgeAbove(int ageAbove);
+
+
+ /**
+ * Gets the traveler ids.
+ *
+ * This provides a link to the travelers listed in the data in case the travelers have to be named (e.g. Eurail passes)
+ * -- the number indicates the position in the traveler list starting from 1
+ *
+ * @return the traveler ids
+ */
+ public Collection<Integer> getTravelerIds() ;
+
+
+ /**
+ * Adds the traveler id.
+ *
+ * This provides a link to the travelers listed in the data in case the travelers have to be named (e.g. Eurail passes)
+ * -- the number indicates the position in the traveler list starting from 1
+ *
+ * @param travelerId the traveler id
+ */
+ public void addTravelerId(Integer travelerId);
+
+ /**
+ * Checks if this tariff is restricted to the country of residence given in the traveler data.
+ *
+ * @return true, if is restricted to country of residence
+ */
+ public boolean isRestrictedToCountryOfResidence();
+
+
+
+ /**
+ * Sets if this tariff is restricted to the country of residence given in the traveler data.
+ *
+ * @param restrictedToCountryOfResidence the new restricted to country of residence
+ */
+ public void setRestrictedToCountryOfResidence(boolean restrictedToCountryOfResidence);
+
+
+ /**
+ * Gets the restricted to route section.
+ *
+ * This limits the tariff to a route section.
+ * This could be used in case the age restrictions vary along the route.
+ *
+ * @return the restricted to route section
+ */
+ public IRouteSection getRestrictedToRouteSection();
+
+
+ /**
+ * Sets the restricted to route section.
+ *
+ * This limits the tariff to a route section.
+ * This could be used in case the age restrictions vary along the route.
+ *
+ * @param restrictedToRouteSection the new restricted to route section
+ */
+ public void setRestrictedToRouteSection(IRouteSection restrictedToRouteSection);
+
+
+ /**
+ * Sets the series data details.
+ *
+ * Add series details in case the tariff is based on data from UIC leaflet 108.1.
+ *
+ * @param seriesDataDetails the new series data details
+ */
+ public void setSeriesDataDetails(ISeriesDataDetails seriesDataDetails);
+
+
+ /**
+ * Gets the series data details.
+ *
+ * Add series details in case the tariff is based on data from UIC leaflet 108.1.
+ *
+ * @return the series data details
+ */
+ public ISeriesDataDetails getSeriesDataDetails();
+
+ /**
+ * Gets the tariff code.
+ *
+ * @return the tariff code
+ */
+ public String getTariffId() ;
+
+
+ /**
+ * Sets the tariff code.
+ *
+ * @param tariffId the new tariff code
+ */
+ public void setTariffId(String tariffId);
+
+
+ /**
+ * Gets the human readable tariff description.
+ *
+ * @return the human readable tariff description
+ */
+ public String getTariffDescription();
+
+
+ /**
+ * Sets the human readable tariff description.
+ *
+ * @param tariffDescription the new human readable tariff description
+ */
+ public void setTariffDescription(String tariffDescription);
+
+ /**
+ * Gets the list of reduction cards required to qualify for that tariff.
+ *
+ *
+ * @return the reduction cards required to qualify for that tariff
+ */
+ public Collection<ICardReference> getReductionCards();
+
+
+ /**
+ * Adds a reduction card required to qualify for that tariff.
+ *
+ * @param reductionCard the reduction card
+ */
+ public void addReductionCard(ICardReference reductionCard);
+}
diff --git a/src/org/uic/ticket/api/spec/ITicketLink.java b/src/org/uic/ticket/api/spec/ITicketLink.java new file mode 100644 index 0000000..2c180c4 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ITicketLink.java @@ -0,0 +1,99 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import org.uic.ticket.api.asn.omv1.LinkMode;
+import org.uic.ticket.api.asn.omv1.TicketType;
+
+/**
+ * The Interface ITicketLink.
+ *
+ * ITicketLink provides data to reference an external separate ticket
+ */
+public interface ITicketLink {
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference() ;
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the issuer.
+ *
+ * @return the issuer
+ */
+ public String getIssuer();
+
+ /**
+ * Sets the issuer.
+ *
+ * @param issuer the new issuer
+ */
+ public void setIssuer(String issuer) ;
+
+ /**
+ * Gets the product owner.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+ /**
+ * Gets the ticket type.
+ *
+ * @return the ticket type
+ */
+ public TicketType getTicketType();
+
+ /**
+ * Sets the ticket type.
+ *
+ * @param ticketType the new ticket type
+ */
+ public void setTicketType(TicketType ticketType);
+
+ /**
+ * Gets the link mode.
+ *
+ * @return the link mode
+ */
+ public LinkMode getLinkMode();
+
+ /**
+ * Sets the link mode.
+ *
+ * @param linkMode the new link mode
+ */
+ public void setLinkMode(LinkMode linkMode);
+
+ /**
+ * Gets the issuer PNR.
+ *
+ * @return the issuer PNR
+ */
+ public String getIssuerPNR() ;
+
+ /**
+ * Sets the issuer PNR.
+ *
+ * @param train the new train
+ */
+ public void setIssuerPNR(String issuerPNR);
+}
diff --git a/src/org/uic/ticket/api/spec/ITimeRange.java b/src/org/uic/ticket/api/spec/ITimeRange.java new file mode 100644 index 0000000..82164d1 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ITimeRange.java @@ -0,0 +1,72 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+
+
+/**
+ * The Interface ITimeRange.
+ *
+ * ITimeRange defines a range of times. The times are encoded as Minutes of the day (0 = 0:00 , 1440 = 24:00)
+ */
+public interface ITimeRange {
+
+ /**
+ * Gets the from time.
+ *
+ * @return the from time
+ */
+ public int getFromTime();
+
+ /**
+ * Gets the until time.
+ *
+ * @return the until time
+ */
+ public int getUntilTime();
+
+ /**
+ * Sets the from time.
+ *
+ * @param minutes the new from time
+ */
+ public void setFromTime(int minutes);
+
+ /**
+ * Sets the until time.
+ *
+ * @param minutes the new until time
+ */
+ public void setUntilTime(int minutes);
+
+
+ /**
+ * Gets the validFrom date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validFrom date time UTC offset
+ */
+ public Long getValidFromUTCoffset();
+
+ /**
+ * Sets the validFrom date time.
+ *
+ * @param validFromDateTime the new validFrom date time
+ */
+ public void setValidFromUTCoffset(Long validFromUTCoffset) ;
+
+ /**
+ * Gets the validUntil date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validUntil date time UTC offset
+ */
+ public Long getValidUntilUTCoffset();
+
+ /**
+ * Sets the validUntil date time.
+ *
+ * @param validUntilDateTime the new validUntil date time
+ */
+ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ;
+
+}
diff --git a/src/org/uic/ticket/api/spec/IToken.java b/src/org/uic/ticket/api/spec/IToken.java new file mode 100644 index 0000000..5f38183 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IToken.java @@ -0,0 +1,52 @@ +package org.uic.ticket.api.spec;
+
+
+/**
+ * The Interface IToken.
+ *
+ * IToken specifies a unique token
+ */
+public interface IToken {
+
+ /**
+ * Gets the token provider.
+ *
+ * @return the token provider
+ */
+ public String getTokenProvider();
+
+ /**
+ * Gets the token specification.
+ *
+ * @return the token specification
+ */
+ public String getTokenSpecification();
+
+ /**
+ * Gets the token.
+ *
+ * @return the token
+ */
+ public byte[] getToken();
+
+ /**
+ * Sets the token provider.
+ *
+ * @param provider the new token provider
+ */
+ public void setTokenProvider(String provider);
+
+ /**
+ * Sets the token specification.
+ *
+ * @param specification the new token specification
+ */
+ public void setTokenSpecification(String specification);
+
+ /**
+ * Sets the token.
+ *
+ * @param token the new token
+ */
+ public void setToken(byte[] token);
+}
diff --git a/src/org/uic/ticket/api/spec/ITrainLink.java b/src/org/uic/ticket/api/spec/ITrainLink.java new file mode 100644 index 0000000..b647db7 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ITrainLink.java @@ -0,0 +1,122 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Date;
+
+/**
+ * The Interface ITrainLink.
+ *
+ * ITrainLink specifies the mandatory use of a train within the route of an open ticket or counter mark.
+ */
+public interface ITrainLink extends IRegionalValidity {
+
+ /**
+ * Gets the train.
+ *
+ * @return the train
+ */
+ public String getTrain() ;
+
+ /**
+ * Sets the train.
+ *
+ * @param train the new train
+ */
+ public void setTrain(String train);
+
+ /**
+ * Gets the departure date time.
+ *
+ * @return the departure date time
+ */
+ public Date getDepartureDateTime();
+
+ /**
+ * Sets the departure date time.
+ *
+ * @param departureDateTime the new departure date time
+ */
+ public void setDepartureDateTime(Date departureDateTime) ;
+
+
+ /**
+ * Gets the departure date time offset to UTC in units of 15 minutes.
+ *
+ * @return the departure date time UTC offset
+ */
+ public Long getDepartureUTCoffset();
+
+ /**
+ * Sets the departure date time.
+ *
+ * @param departureDateTime the new departure date time
+ */
+ public void setDepartureUTCoffset(Long departureUTCoffset) ;
+
+
+
+
+ /**
+ * Gets the from station code.
+ *
+ * @return the from station code
+ */
+ public String getFromStation();
+
+ /**
+ * Sets the from station code.
+ *
+ * @param fromStation the new from station code
+ */
+ public void setFromStation(String fromStation);
+
+ /**
+ * Gets the to station code.
+ *
+ * @return the to station code
+ */
+ public String getToStation();
+
+ /**
+ * Sets the to station code.
+ *
+ * @param toStation the new to station code
+ */
+ public void setToStation(String toStation);
+
+ /**
+ * Gets the from station name.
+ *
+ * @return the from station name
+ */
+ public String getFromStationName() ;
+
+ /**
+ * Sets the from station name.
+ *
+ * @param fromStationName the new from station name
+ */
+ public void setFromStationName(String fromStationName);
+
+ /**
+ * Gets the to station name.
+ *
+ * @return the to station name
+ */
+ public String getToStationName();
+
+ /**
+ * Sets the to station name.
+ *
+ * @param toStationName the new to station name
+ */
+ public void setToStationName(String toStationName);
+
+
+
+
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/ITraveler.java b/src/org/uic/ticket/api/spec/ITraveler.java new file mode 100644 index 0000000..b3d6480 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ITraveler.java @@ -0,0 +1,253 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+import java.util.Date;
+
+import org.uic.ticket.api.asn.omv1.GenderType;
+import org.uic.ticket.api.asn.omv1.PassengerType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ITravelerData.
+ *
+ * ITravelerData specifies the details of a traveler.
+ *
+ */
+public interface ITraveler {
+
+ /**
+ * Gets the first name.
+ *
+ * @return the first name
+ */
+ public String getFirstName();
+
+ /**
+ * Sets the first name.
+ *
+ * @param firstName the new first name
+ */
+ public void setFirstName(String firstName);
+
+ /**
+ * Gets the second name.
+ *
+ * @return the second name
+ */
+ public String getSecondName() ;
+
+ /**
+ * Sets the second name.
+ *
+ * @param secondName the new second name
+ */
+ public void setSecondName(String secondName);
+
+ /**
+ * Gets the last name.
+ *
+ * @return the last name
+ */
+ public String getLastName();
+
+ /**
+ * Sets the last name.
+ *
+ * @param lastName the new last name
+ */
+ public void setLastName(String lastName);
+
+ /**
+ * Gets the id card.
+ *
+ * @return the id card
+ */
+ public String getIdCard();
+
+ /**
+ * Sets the id card.
+ *
+ * @param idCard the new id card
+ */
+ public void setIdCard(String idCard) ;
+
+ /**
+ * Gets the passport id.
+ *
+ * @return the passport id
+ */
+ public String getPassportId() ;
+
+ /**
+ * Sets the passport id.
+ *
+ * @param passportId the new passport id
+ */
+ public void setPassportId(String passportId);
+
+ /**
+ * Gets the title.
+ *
+ * @return the title
+ */
+ public String getTitle();
+
+ /**
+ * Sets the title.
+ *
+ * @param title the new title
+ */
+ public void setTitle(String title);
+
+ /**
+ * Gets the gender.
+ *
+ * @return the gender
+ */
+ public GenderType getGender();
+
+ /**
+ * Sets the gender.
+ *
+ * @param gender the new gender
+ */
+ public void setGender(GenderType gender);
+
+ /**
+ * Gets the customer id.
+ *
+ * @return the customer id
+ */
+ public String getCustomerId();
+
+ /**
+ * Sets the customer id.
+ *
+ * @param customerId the new customer id
+ */
+ public void setCustomerId(String customerId);
+
+ /**
+ * Gets the date of birth.
+ *
+ * @return the date of birth
+ */
+ public Date getDateOfBirth();
+
+ /**
+ * Sets the date of birth.
+ *
+ * @param dateOfBirth the new date of birth
+ */
+ public void setDateOfBirth(Date dateOfBirth);
+
+ /**
+ * Checks if is ticket holder.
+ *
+ * @return true, if is ticket holder
+ */
+ public boolean isTicketHolder();
+
+ /**
+ * Sets the ticket holder.
+ *
+ * @param ticketHolder the new ticket holder
+ */
+ public void setTicketHolder(boolean ticketHolder);
+
+ /**
+ * Gets the passenger type.
+ *
+ * @return the passenger type
+ */
+ public PassengerType getPassengerType();
+
+ /**
+ * Sets the passenger type.
+ *
+ * @param passengerType the new passenger type
+ */
+ public void setPassengerType(PassengerType passengerType);
+
+ /**
+ * Checks if is passenger with reduced mobility.
+ *
+ * @return true, if is passenger with reduced mobility
+ */
+ public boolean isPassengerWithReducedMobility();
+
+ /**
+ * Sets the passenger with reduced mobility.
+ *
+ * @param passengerWithReducedMobility the new passenger with reduced mobility
+ */
+ public void setPassengerWithReducedMobility(boolean passengerWithReducedMobility);
+
+ /**
+ * Gets the country of residence (numeric ISO country code) .
+ *
+ * @return the country of residence (numeric ISO country code)
+ */
+ public int getCountryOfResidence();
+
+ /**
+ * Sets the country of residence (numeric ISO country code) .
+ *
+ * @param countryOfResidence the new country of residence (numeric ISO country code)
+ */
+ public void setCountryOfResidence(int countryOfResidence);
+
+
+
+ /**
+ * Gets the passport country (numeric ISO country code) .
+ *
+ * @return the passport country (numeric ISO country code)
+ */
+ public int getPassportCountry();
+
+
+ /**
+ * Sets the passport country (numeric ISO country code) .
+ *
+ * @param passportCountry the new passport country (numeric ISO country code)
+ */
+ public void setPassportCountry(int passportCountry);
+
+
+ /**
+ * Gets the ID card country (numeric ISO country code) .
+ *
+ * @return the ID card country (numeric ISO country code)
+ */
+ public int getIDCardCountry();
+
+
+ /**
+ * Sets the ID card country (numeric ISO country code) .
+ *
+ * @param idcardCountry the new ID card country (numeric ISO country code)
+ */
+ public void setIDCardCountry(int idcardCountry);
+
+ /**
+ * Gets the status collection.
+ *
+ * @return the status collection
+ */
+ public Collection<ICustomerStatusDescription> getStatusCollection();
+
+ /**
+ * Adds the status description.
+ *
+ * @param statusDescription the status description
+ */
+ public void addStatusDescription(ICustomerStatusDescription statusDescription) ;
+
+
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/ITravelerDetail.java b/src/org/uic/ticket/api/spec/ITravelerDetail.java new file mode 100644 index 0000000..9368bc2 --- /dev/null +++ b/src/org/uic/ticket/api/spec/ITravelerDetail.java @@ -0,0 +1,61 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+
+import java.util.Set;
+
+/**
+ * The Interface ITravelerDetail.
+ *
+ * ITravelerDetail provides a list of traveler data.
+ */
+public interface ITravelerDetail {
+
+ /**
+ * Gets the group name.
+ *
+ * @return the group name
+ */
+ public String getGroupName() ;
+
+ /**
+ * Sets the group name.
+ *
+ * @param groupName the new group name
+ */
+ public void setGroupName(String groupName) ;
+
+ /**
+ * Adds the traveler.
+ *
+ * @param traveler the traveler
+ */
+ public void addTraveler (ITraveler traveler) ;
+
+ /**
+ * Gets the travelers.
+ *
+ * @return the travelers
+ */
+ public Set<ITraveler> getTravelers() ;
+
+ /**
+ * Gets the preferred language.
+ * ISO 639-1 coding of the language preferred for the traveler / ticket holder
+ *
+ * @return the preferred language
+ */
+ public String getPreferredLanguage();
+
+ /**
+ * Sets the preferred language.
+ * ISO 639-1 coding of the language preferred for the traveler / ticket holder
+ *
+ * @param language the new preferred language
+ */
+ public void setPreferredLanguage(String language);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IUicRailTicket.java b/src/org/uic/ticket/api/spec/IUicRailTicket.java new file mode 100644 index 0000000..4b95d57 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IUicRailTicket.java @@ -0,0 +1,192 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+
+/**
+ * The Interface IUicRailTicket.
+ *
+ * This class provides the top level of the data for a document to be encoded
+ * according to the:
+ * UIC standard for ticket control data in asn.1 / PER unaligned encoding.
+ * version 1.0
+ *
+ * The data contains:
+ * -- -issuer informations
+ * -- -the details of the transport document
+ * -- -informations required for the control process
+ * -- -informations on the travelers independent from the transport document
+ * -- -proprietary extensions
+ *
+ */
+public interface IUicRailTicket {
+
+ /**
+ * Gets the issuer details.
+ *
+ * @return the issuer details
+ */
+ public IIssuingDetail getIssuerDetails();
+
+ /**
+ * Gets the traveler details.
+ *
+ * @return the traveler details
+ */
+ public ITravelerDetail getTravelerDetails();
+
+ /**
+ * Gets the traveler details.
+ *
+ * @return the traveler details
+ */
+ public IControlDetail getControlDetails();
+
+ /**
+ * Gets the extensions.
+ *
+ * @return the extensions
+ */
+ public Collection<IExtension> getExtensions();
+
+ /**
+ * Adds an extension
+ *
+ * @param extension the extension
+ */
+ public void addExtension(IExtension extension);
+
+ /**
+ * Gets the transport documents.
+ *
+ * @return the transport documents
+ */
+ public Collection<IDocumentData> getDocuments();
+
+
+ /**
+ * Sets the issuer details.
+ *
+ * @param issuerDetails the new issuer details
+ */
+ public void setIssuerDetails(IIssuingDetail issuerDetails);
+
+ /**
+ * Sets the traveler details.
+ *
+ * @param travelerDetails the new traveler details
+ */
+ public void setTravelerDetails(ITravelerDetail travelerDetails);
+
+ /**
+ * Sets the control details
+ *
+ * @param controlDetails the new control details
+ */
+ public void setControlDetails(IControlDetail controlDetails);
+
+
+ /**
+ * Gets the travel document data.
+ *
+ * @return the travel document data
+ */
+ public Collection<IDocumentData> getDocumentData();
+
+ /**
+ * Adds the reservation.
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the reservation
+ */
+ public void addReservation(IReservation document);
+
+ /**
+ * Adds the open ticket.
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the open ticket
+ */
+ public void addOpenTicket(IOpenTicket document);
+
+ /**
+ * Adds the car carriage reservation.
+ *
+ * @param document the car carriage reservation
+ */
+ public void addCarCarriageReservation(ICarCarriageReservation document);
+
+ /**
+ * Adds the rail pass.
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the rail pass
+ */
+ public void addPass(IPass document);
+
+ /**
+ * Adds the voucher.
+ *
+ * @param document the voucher
+ */
+ public void addVoucher(IVoucher document);
+
+ /**
+ * Adds the customer card.
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the customer card
+ */
+ public void addCustomerCard(ICustomerCard document);
+
+ /**
+ * Adds the group ticket counter mark.
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the group ticket counter mark
+ */
+ public void addCounterMark(ICounterMark document);
+
+ /**
+ * Adds the parking ground reservation
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the parking ground reservation
+ */
+ public void addParkingGround(IParkingGround document);
+
+ /**
+ * Adds the FIP ticket.
+ *
+ * @param document the FIP ticket
+ */
+ public void addFipTicket (IFipTicket document);
+
+ /**
+ * Adds the station passage allowance.
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the station passage allowance
+ */
+ public void addStationPassage(IStationPassage document);
+
+ /**
+ * Adds the delay confirmation
+ * -- more than one document to be used on bilateral agreement only
+ *
+ * @param document the delay confirmation
+ */
+ public void addDelayConfirmation(IDelayConfirmation document);
+
+ /**
+ * Adds a proprietary document.
+ * if not bilaterally agreed otherwise proprietary extensions must be ignored
+ *
+ * @param document the proprietary document
+ */
+ public void addDocumentExtension(IDocumentExtension document);
+
+}
diff --git a/src/org/uic/ticket/api/spec/IUicTicketObjectFactory.java b/src/org/uic/ticket/api/spec/IUicTicketObjectFactory.java new file mode 100644 index 0000000..f47f26b --- /dev/null +++ b/src/org/uic/ticket/api/spec/IUicTicketObjectFactory.java @@ -0,0 +1,51 @@ +package org.uic.ticket.api.spec;
+
+public interface IUicTicketObjectFactory {
+
+ public abstract IBerth createBerth();
+ public abstract ICarCarriageReservation createCarCarriageReservation();
+ public abstract ICardReference createCardReference();
+ public abstract ICompartmentDetails createCompartmentDetails();
+ public abstract IControlDetail createControlDetail();
+ public abstract ICounterMark createCounterMark();
+ public abstract ICustomerCard createCustomerCard();
+ public abstract ICustomerStatusDescription createCustomerStatusDescription();
+ public abstract IDelayConfirmation createDelayConfirmation();
+ public abstract IDocumentData createDocumentData();
+ public abstract IExtension createExtension();
+ public abstract IFipTicket createFipTicket();
+ public abstract IGeoCoordinate createGeoCoordinate();
+ public abstract IIncludedOpenTicket createIncludedOpenTicket();
+ public abstract IIssuingDetail createIssuingDetail();
+ public abstract ILine createLine();
+ public abstract ILuggageRestriction createLuggageRestriction();
+ public abstract IOpenTicket createOpenTicket();
+ public abstract IParkingGround createParkingGround();
+ public abstract IPass createPass();
+ public abstract IPlaces createPlaces();
+ public abstract IPolygone createPolygone();
+ public abstract IRegisteredLuggage createRegisteredLuggage();
+ public abstract IReservation createReservation();
+ public abstract IReturnRouteDescription createReturnRouteDescription();
+ public abstract IRouteSection createRouteSection();
+ public abstract ISeriesDataDetails createSeriesDataDetails();
+ public abstract IStationPassage createStationPassage();
+ public abstract ITariff createTariff();
+ public abstract ITicketLink createTicketLink();
+ public abstract ITimeRange createTimeRange();
+ public abstract IToken createToken();
+ public abstract ITrainLink createTrainLink();
+ public abstract ITraveler createTraveler();
+ public abstract ITravelerDetail createTravelerDetail();
+ public abstract IUicRailTicket createUicRailTicket();
+ public abstract IValidityDetails createValidityDetails();
+ public abstract IValidityRange createValidityRange();
+ public abstract IViaStation createViaStation();
+ public abstract IVoucher createVoucher();
+ public abstract IZone createZone();
+ public abstract IDocumentExtension createDocumentExtension();
+ public abstract IServiceBrand createServiceBrand();
+ public abstract IVatDetail createVatDetail();
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IValidityDetails.java b/src/org/uic/ticket/api/spec/IValidityDetails.java new file mode 100644 index 0000000..3745009 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IValidityDetails.java @@ -0,0 +1,45 @@ +package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+/**
+ * The Interface IValidityDetails.
+ *
+ * IValidityDetails provides a more detailed validity description:
+ *
+ * a list of date/time ranges
+ * a list of excluded time ranges
+ *
+ */
+public interface IValidityDetails {
+
+
+ /**
+ * Gets the validity ranges.
+ *
+ * @return the validity ranges
+ */
+ public Collection<IValidityRange> getValidityRanges();
+
+ /**
+ * Gets the time ranges.
+ *
+ * @return the time ranges
+ */
+ public Collection<ITimeRange> getTimeRanges();
+
+ /**
+ * Adds the validity ranges.
+ *
+ * @param range the range
+ */
+ public void addValidityRanges(IValidityRange range);
+
+ /**
+ * Adds the time ranges.
+ *
+ * @param range the range
+ */
+ public void addTimeRanges(ITimeRange range);
+
+}
diff --git a/src/org/uic/ticket/api/spec/IValidityRange.java b/src/org/uic/ticket/api/spec/IValidityRange.java new file mode 100644 index 0000000..84bb3c1 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IValidityRange.java @@ -0,0 +1,72 @@ +package org.uic.ticket.api.spec;
+
+import java.util.Date;
+
+/**
+ * The Interface IValidityRange.
+ *
+ * IValidityRange describes a validity range by from / until date and time
+ */
+public interface IValidityRange {
+
+
+ /**
+ * Gets the from date and time.
+ *
+ * @return the from date and time
+ */
+ public Date getFromDate();
+
+ /**
+ * Gets the until date and time.
+ *
+ * @return the until date and time
+ */
+ public Date getUntilDate();
+
+
+ /**
+ * Sets the from date and time.
+ *
+ * @param date the new from date and time
+ */
+ public void setFromDate(Date date);
+
+ /**
+ * Sets the until date and time.
+ *
+ * @param date the new until date and time
+ */
+ public void setUntilDate(Date date);
+
+
+ /**
+ * Gets the validFrom date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validFrom date time UTC offset
+ */
+ public Long getValidFromUTCoffset();
+
+ /**
+ * Sets the validFrom date time.
+ *
+ * @param validFromDateTime the new validFrom date time
+ */
+ public void setValidFromUTCoffset(Long validFromUTCoffset) ;
+
+ /**
+ * Gets the validUntil date time offset to UTC in units of 15 minutes.
+ *
+ * @return the validUntil date time UTC offset
+ */
+ public Long getValidUntilUTCoffset();
+
+ /**
+ * Sets the validUntil date time.
+ *
+ * @param validUntilDateTime the new validUntil date time
+ */
+ public void setValidUntilUTCoffset(Long validUntilUTCoffset) ;
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IVatDetail.java b/src/org/uic/ticket/api/spec/IVatDetail.java new file mode 100644 index 0000000..0fba019 --- /dev/null +++ b/src/org/uic/ticket/api/spec/IVatDetail.java @@ -0,0 +1,22 @@ +package org.uic.ticket.api.spec;
+
+public interface IVatDetail {
+
+ public int getCountry();
+
+ public void setCountry(int country);
+
+ public int getPercentage();
+
+ public void setPercentage(int percentage);
+
+ public Long getAmount();
+
+ public void setAmount(Long amount);
+
+ public String getVatId();
+
+ public void setVatId(String vatId);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IViaStation.java b/src/org/uic/ticket/api/spec/IViaStation.java new file mode 100644 index 0000000..71ffbbc --- /dev/null +++ b/src/org/uic/ticket/api/spec/IViaStation.java @@ -0,0 +1,172 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IViaStation.
+ *
+ * IViaStation describes a route description or a part of a route description by
+ * via station according to UIC leaflet 108.1
+ *
+ * Note: as route description with via stations can contain alternative routes and can include
+ * other routes the data structure is used recursively!
+ *
+ *
+ * ViaStation could be
+ * - a simple station
+ * or
+ * - a list of alternative routes defined as a list of other IViaStations
+ * or
+ * - a route defined as a list of other IViaStations
+ *
+ *
+ *
+ */
+public interface IViaStation extends IRegionalValidity {
+
+ /**
+ * Gets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * The station code table should be included only in case it differs from the station
+ * code table used in the travel document!
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * Defines the station code table to be used to retrieve station information.
+ * Default in this case is the UIC station codes table for standard UIC
+ * station code from MERITS (UIC country code + 5 digit local code)
+ *
+ * The station code table should be included only in case it differs from the station
+ * code table used in the travel document!
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the station code.
+ *
+ * @return the station code
+ */
+ public String getStation();
+
+ /**
+ * Sets the station code.
+ *
+ * @param station the new station code
+ */
+ public void setStation(String station);
+
+
+ /**
+ * Gets the alternative routes.
+ *
+ * @return the alternative routes
+ */
+ public Collection<IViaStation> getAlternativeRoutes();
+
+ /**
+ * Adds an alternative route.
+ *
+ * @param route the alternative route
+ */
+ public void addAlternativeRoute(IViaStation route);
+
+ /**
+ * Gets the route.
+ *
+ * @return the route
+ */
+ public Collection<IViaStation> getRoute();
+
+ /**
+ * Adds the route station.
+ *
+ * @param viaStation the via station
+ */
+ public void addRouteStation(IViaStation viaStation);
+
+ /**
+ * Checks if the via station is a border point.
+ *
+ * @return true, if is border point
+ */
+ public boolean isBorder();
+
+ /**
+ * Sets if the via station is a border point.
+ *
+ * @param border the new border point flag
+ */
+ public void setBorder(boolean border);
+
+ /**
+ * Gets the carriers.
+ *
+ * The carriers along the route should preferably be indicated as a list within
+ * the ticket, and not in the via stations.
+ *
+ * @return the carriers
+ */
+ public Collection<String> getCarriers();
+
+ /**
+ * Adds the carrier.
+ *
+ * The carriers along the route should preferably be indicated as a list within
+ * the ticket, and not in the via stations.
+ * *
+ * @param carrier the carrier
+ */
+ public void addCarrier(String carrier);
+
+ /**
+ * Gets the route id.
+ *
+ * A route id indicating the route in a lookup table.
+ *
+ * @return the route id
+ */
+ public int getRouteId();
+
+ /**
+ * Sets the route id.
+ *
+ * A route id indicating the route in a lookup table.
+ *
+ * @param routeId the new route id
+ */
+ public void setRouteId(int routeId);
+
+
+ /**
+ * Gets the series id as defined in the price data according to UIC leaflet 108.1.
+ *
+ * @return the series id as defined in the price data according to UIC leaflet 108.1.
+ */
+ public int getSeriesId();
+
+ /**
+ * Sets the series id as defined in the price data according to UIC leaflet 108.1..
+ *
+ * @param seriesId the new series id as defined in the price data according to UIC leaflet 108.1.
+ */
+ public void setSeriesId(int seriesId);
+
+
+}
diff --git a/src/org/uic/ticket/api/spec/IVoucher.java b/src/org/uic/ticket/api/spec/IVoucher.java new file mode 100644 index 0000000..c1b59bc --- /dev/null +++ b/src/org/uic/ticket/api/spec/IVoucher.java @@ -0,0 +1,146 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Date;
+
+/**
+ * The Interface IVoucher.
+ *
+ * IVoucher provides the description of a voucher.
+ *
+ */
+public interface IVoucher extends IDocumentData {
+
+ /**
+ * Gets the reference.
+ *
+ * @return the reference
+ */
+ public String getReference() ;
+
+ /**
+ * Sets the reference.
+ *
+ * @param reference the new reference
+ */
+ public void setReference(String reference);
+
+ /**
+ * Gets the product owner.
+ *
+ * @return the product owner
+ */
+ public String getProductOwner();
+
+ /**
+ * Sets the product owner.
+ *
+ * @param productOwner the new product owner
+ */
+ public void setProductOwner(String productOwner);
+
+
+ /**
+ * Gets the product type.
+ *
+ * @return the product type
+ */
+ public String getProductId();
+
+ /**
+ * Sets the product type.
+ *
+ * @param id the new product id
+ */
+ public void setProductId(String type);
+
+
+ /**
+ * Gets the valid from date.
+ *
+ * @return the valid from date
+ */
+ public Date getValidFrom();
+
+ /**
+ * Sets the valid from date.
+ *
+ * @param validFrom the new valid from date
+ */
+ public void setValidFrom(Date validFrom);
+
+ /**
+ * Gets the valid until date.
+ *
+ * @return the valid until date
+ */
+ public Date getValidUntil();
+
+ /**
+ * Sets the valid until date.
+ *
+ * @param validUntil the new valid until date
+ */
+ public void setValidUntil(Date validUntil);
+
+
+ /**
+ * Gets the info text.
+ *
+ * @return the info text
+ */
+ public String getInfoText();
+
+ /**
+ * Sets the info text.
+ *
+ * @param infoText the new info text
+ */
+ public void setInfoText(String infoText) ;
+
+
+ /**
+ * Gets the amount in the currency and the fraction indicated in the issuer detail data.
+ *
+ * @return the amount in the currency and the fraction indicated in the issuer detail data
+ */
+ public Integer getAmount() ;
+
+ /**
+ * Sets the amount in the currency and the fraction indicated in the issuer detail data.
+ *
+ * @param amount the new amount in the currency and the fraction indicated in the issuer detail data
+ */
+ public void setAmount(Integer amount);
+
+ /**
+ * Gets the type of the voucher (code list defined by the product owner).
+ *
+ * @return the type of the voucher
+ */
+ public Integer getType() ;
+
+ /**
+ * Sets the type of the voucher (code list defined by the product owner).
+ *
+ * @param type the new type
+ */
+ public void setType(Integer type);
+
+ /**
+ * Gets the extension.
+ *
+ * @return the extension
+ */
+ public IExtension getExtension();
+
+ /**
+ * Sets the extension.
+ *
+ * @param extensionData the new extension
+ */
+ public void setExtension(IExtension extensionData);
+
+}
diff --git a/src/org/uic/ticket/api/spec/IZone.java b/src/org/uic/ticket/api/spec/IZone.java new file mode 100644 index 0000000..296ecbb --- /dev/null +++ b/src/org/uic/ticket/api/spec/IZone.java @@ -0,0 +1,144 @@ +/*
+ *
+ */
+package org.uic.ticket.api.spec;
+
+import java.util.Collection;
+
+import org.uic.ticket.api.asn.omv1.CodeTableType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IZone.
+ *
+ *
+ * IZone describes a regional validity in a zone.
+ *
+ */
+public interface IZone extends IRegionalValidity{
+
+ /**
+ * Gets the carrier.
+ *
+ * @return the carrier
+ */
+ public String getCarrier();
+
+ /**
+ * Sets the carrier.
+ *
+ * @param carrier the new carrier
+ */
+ public void setCarrier(String carrier);
+
+ /**
+ * Gets the station code table.
+ *
+ * @return the station code table
+ */
+ public CodeTableType getStationCodeTable();
+
+ /**
+ * Sets the station code table.
+ *
+ * @param stationCodeTable the new station code table
+ */
+ public void setStationCodeTable(CodeTableType stationCodeTable);
+
+ /**
+ * Gets the entry station in case the journey in the zone has to start at a specific station in the zone
+ * E.g. city traffic at the end of a train journey starting at the final train station.
+ *
+ * @return the entry station
+ */
+ public String getEntryStation() ;
+
+ /**
+ * Sets the entry station in case the journey in the zone has to start at a specific station in the zone
+ * E.g. city traffic at the end of a train journey starting at the final train station.
+ *
+ * @param entryStation the new entry station
+ */
+ public void setEntryStation(String entryStation);
+
+ /**
+ * Gets the terminating station in case the journey in the zone has to end at a specific station in the zone
+ * E.g. city traffic at the begin of a train journey starting at the first train station.
+ *
+ * @return the terminating station
+ */
+ public String getTerminatingStation();
+
+ /**
+ * Sets the terminating station in case the journey in the zone has to end at a specific station in the zone
+ * E.g. city traffic at the begin of a train journey starting at the first train station.
+ *
+ * @param terminatingStation the new terminating station
+ */
+ public void setTerminatingStation(String terminatingStation);
+
+ /**
+ * Gets the city code of the local city in case the zone is part of regional
+ * city transport: code list of the local carrier.
+ *
+ * @return the city
+ */
+ public int getCity() ;
+
+ /**
+ * Sets the city code of the local city in case the zone is part of regional
+ * city transport: code list of the local carrier
+ *
+ * @param city the new city
+ */
+ public void setCity(int city);
+
+ /**
+ * Gets the binary zone id.
+ * binary encoding of zones, encoding specification provided by
+ * the local service provider
+ *
+ * @return the binary zone id
+ */
+ public byte[] getBinaryZoneId() ;
+
+ /**
+ * Sets the binary zone id.
+ * binary encoding of zones, encoding specification provided by
+ * the local service provider
+ *
+ * @param binatyZoneId the new binaty zone id
+ */
+ public void setBinaryZoneId(byte[] binatyZoneId);
+
+ /**
+ * Gets the zone ids.
+ * ids of the valid zones known by the local carriers in that zone
+ *
+ * @return the zone ids
+ */
+ public Collection<Integer> getZoneIds() ;
+
+ /**
+ * Adds a zone id.
+ * id of the valid zones known by the local carriers in that zone
+ *
+ * @param zoneId the zone id
+ */
+ public void addZoneId(int zoneId);
+
+ /**
+ * Gets the European NUTS code in case this code is used to encode the zone.
+ *
+ * @return the NUTS code
+ */
+ public String getNUTScode();
+
+ /**
+ * Sets the European NUTS code in case this code is used to encode the zone.
+ *
+ * @param code the new NUTS code
+ */
+ public void setNUTScode(String code);
+
+}
diff --git a/src/org/uic/ticket/api/spec/package.html b/src/org/uic/ticket/api/spec/package.html new file mode 100644 index 0000000..18d8b53 --- /dev/null +++ b/src/org/uic/ticket/api/spec/package.html @@ -0,0 +1,7 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>UIC ticket interface</head>
+<body>
+ Provides the interface specification of the ticket data. Any ticket data implementation which wants to use the provided encoder / decoder function must implement this interface. A simple implementation is provided in package <b>impl</p>.
+</body>
+</html>
\ No newline at end of file diff --git a/src/org/uic/ticket/api/spec/uicBarcodeHeader0.1.asn b/src/org/uic/ticket/api/spec/uicBarcodeHeader0.1.asn new file mode 100644 index 0000000..2999d18 --- /dev/null +++ b/src/org/uic/ticket/api/spec/uicBarcodeHeader0.1.asn @@ -0,0 +1,151 @@ +-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net) +-- Author: ClemensGantert +-- Created: Tue Aug 11 11:40:28 CEST 2015 +ASN-Module DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +-- imports and exports +-- EXPORTS ALL; + + +-- ############################################################################################## +-- # +-- # UIC barcode header - first draft +-- # +-- ############################################################################################## + + +-- ############################################################################################## +-- # +-- # Naming and encoding conventions +-- # +-- # Elements included as String and as Numeric values: +-- # Some elements are included in different formats to reduce the data size. +-- # These elements must be included only once. +-- # These elements are named with the same name and appendix +-- # Num (numeric values) +-- # IA5 (String values according to ASN IA5String (7Bit)) +-- # +-- # RICS codes must be used to encode companies (issuer, product owner, ...) where available +-- # other codes are possible based on bilateral agreements +-- # the format is kept more flexible to cover upcoming extensions of the RICS code by ERA +-- # +-- # Stations can be coded using the UIC and upcoming ERA code lists. Proprietary codes are +-- # possible based on bilateral agreements. Format: 1..9999999 or alphanumeric without +-- # special character (IA5String) +-- # +-- # +-- # ! INTEGERS must not exceed the value of 9,223,372,036,854,775,807 (64 bit) even in case +-- # ! they are unrestricted!!! +-- # ! +-- # ! Some elements like ReferenceNum or cardIdNum are defined as an unrestricted integer. +-- # ! Unlike other numerical values the cardIdNum and referenceNum can be larger than a usual 32 bit Integer +-- # ! Some ASN.1 implementation tools are limited to 32 bit integers which is too small. +-- # ! Please ensure to use a tool capable of dealing with larger numbers. +-- # +-- # BOOLEAN is always non optional +-- # +-- # Encoding of time: +-- # time is encoded as the number of minutes of the day 0 = 00:00, 1440 = 24:00, +-- # time data elements end with "time" in their name +-- # +-- # Encoding of date: +-- # ......................................................................................................... +-- # The issuing date is given in UTC, but some other date values are given in local time where the exact time zone is not known. +-- # +-- # +-- # +-- # ASN.1 Extensions: +-- # +-- # The specification makes use of extension (",..."). +-- # These extesions might be defined in future versions of the UIC specification +-- # Implementations must support the extension feature of ASN.1, at least they must be able to ignore extensions while decoding the data +-- # ASN.1 extensions will be defined by UIC. It is not allowed to define bilateral extensions. +-- # +-- # Bilateral Extensions: +-- # Bilateral extensions can be included in the data element "ExtensionData". +-- # +-- # +-- # +-- ######################################################################################### + + +-- ############################################################################################ + + +-- type assignments + + -- ######################################################################################### + -- the basic entry point of the data structure + -- the data include: + -- -issuer informations + -- -the details of the transport document + -- -informations required for the control process + -- -informations on the travelers independent from the transport document + -- -proprietary extensions + -- + -- ########################################################################################## + UicBarcodeHeader ::= SEQUENCE { + -- format type + format IA5String, + -- "UIC" = UIC ticket + + version Integer (1..16), + + -- provider of the signature (RICS code) + securityProviderNum INTEGER (1..32000) OPTIONAL, + securityProviderIA5 IA5String OPTIONAL, + + + staticData SEQUENCE OF DataType, + staticSignature SignatureType OPTIONAL, + + + + -- additional dynamic data i.e. phone number, IMEI, timestamp , .... --> To be defined separately + dynamicDataFormat IA5String OPTIONAL, + dynamicData OCTET STRING OPTIONAL, + dynamicPublicKey OCTET STRING OPTIONAL, + dynamicSignature SignatureType OPTIONAL + + -- proprietary data defined bilaterally + extension SEQUENCE OF ExtensionData OPTIONAL + ,... + + } + + DataType ::= SEQUENCE { + staticDataFormat IA5String DEFAULT "FCB1", + -- FCB1 FCB version 1 + -- 1080XYZ + staticData OCTET STRING + } + + + + SignatureType ::= SEQUENCE { + signingAlg IA5String, + keyId IA5String (SIZE(1..5)), + signature OCTET STRING, + } + + + + -- ########################################################################################### + -- generic non standard extension element + -- the generic non - standard element contains: + -- - an extension id to distinguish different extensions + -- - the extension data as binary data + -- proprietary extensions are by definition proprietary. This standard provides + -- the means to identify these extensions + -- within the data and to skip these data. + -- the evaluation of these data and the unique identification of the extensions + -- via the extension id is in the + -- responsibility of the railways which use these extensions. + -- ########################################################################################### + ExtensionData ::= SEQUENCE { + extensionId IA5String, + extensionData OCTET STRING + } + + +END
\ No newline at end of file diff --git a/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation.asn b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation.asn new file mode 100644 index 0000000..b4d23a0 --- /dev/null +++ b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation.asn @@ -0,0 +1,1789 @@ +-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net) +-- Author: ClemensGantert +-- Created: Tue Aug 11 11:40:28 CEST 2015 +ASN-Module DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +-- imports and exports +-- EXPORTS ALL; + + +-- ############################################################################################## +-- # +-- # Final version 1.0 +-- # +-- ############################################################################################## + + +-- ############################################################################################## +-- # +-- # Naming and encoding conventions +-- # +-- # Elements included as String and as Numeric values: +-- # Some elements are included in different formats to reduce the data size. +-- # These elements must be included only once. +-- # These elements are named with the same name and appendix +-- # Num (numeric values) +-- # IA5 (String values according to ASN IA5String (7Bit)) +-- # Example: +-- # trainNum - in case of a numeric train number +-- # trainIA5 - in case of a alphanumeric train Id +-- # +-- # +-- # RICS codes must be used to encode companies (issuer, product owner, ...) where available +-- # other codes are possible based on bilateran agreements +-- # the format is kept more flexible to cover upcomng extensions of the RICS code by ERA +-- # encoding: binaby up to code 32000 or alphanumerical without +-- # special character (IA5String) +-- # +-- # Stations can be coded using the UIC and upcoming ERA code lists. Proprietary codes are +-- # possible based on bilateral agreements. Format: 1..9999999 or alphanumeric without +-- # special character (IA5String) +-- # +-- # +-- # INTEGERS must not exceed the value of 9,223,372,036,854,775,807 even in case +-- # they are unrestricted!!! +-- # +-- # BOOLEAN is always non optional +-- # +-- # Encoding of time: +-- # time is encoded as the number of minutes of the day 0 = 00:00, 1440 = 24:00, +-- # time data elements end with "time" in their name +-- # +-- ############################################################################################ + + +-- type assignments + + -- ######################################################################################### + -- the basic entry point of the data structure + -- the data include: + -- -issuer informations + -- -the details of the transport document + -- -informations required for the control process + -- -informations on the travelers independent from the transport document + -- -proprietary extensions + -- + -- ########################################################################################## + UicRailTicketData ::= SEQUENCE { + -- data specific to the issuer + issuingDetail IssuingData, + + -- data on the travelers + travelerDetail TravelerData OPTIONAL, + + -- data of the transport document + -- more than one document to be used on bilateral agreement only + transportDocument SEQUENCE OF DocumentData OPTIONAL, + + -- data specific to support the ticket control process + controlDetail ControlData OPTIONAL, + + -- proprietary data defined bilaterally + extension SEQUENCE OF ExtensionData OPTIONAL + ,... + } + + + + -- ########################################################################################### + -- the choice on the different transport documents that can be included in the bar code data: + -- - reservation of seat / couchette or berths (IRT, RES, BOA) + -- - reservation of car carriage (VET) + -- - open ticket (NRT including NRT group ticket) (NRT, GRT, SUP, UPD, COI) + -- - Rail passes (including Eurail, Interail and local passes) (RPT) + -- - Voucher (TRV) + -- - Customer Cards (including bonus cards and reduction cards) + -- - counter marks issued for group tickets + -- - parking ground tickets + -- - FIP tickets + -- - station access / station passage tickets + -- - proprietary documents as an extension + -- ############################################################################################ + DocumentData ::= SEQUENCE { + + -- token + token TokenType OPTIONAL, + + -- choice of the ticket + ticket CHOICE + { + + -- Reservation (without car carriage) (IRT and RES) + reservation ReservationData, + + -- Reservation of car carriage + carCarriageReservation CarCarriageReservationData, + + -- open ticket specification (NRT) + openTicket OpenTicketData, + + -- pass specification (RPT) including Eurail and Interrail + pass PassData, + + -- voucher + voucher VoucherData, + + -- customer card either to identify a customer and / or to provide reductions + customerCard CustomerCardData, + + -- countermark to accompagny a group ticket + counterMark CountermarkData, + + -- car parking slot + parkingGround ParkingGroundData, + + -- FIP duty ticket + fipTicket FIPTicketData, + + -- ticket to pass the gates at a station + stationPassage StationPassageData, + + -- proprietary data defined bilaterally + extension ExtensionData, + + -- delay confirmation + delayConfirmation DelayConfirmation + + ,... + } + ,... + } + + -- ######################################################################################## + -- confirmation of the delay of a train + -- + -- ######################################################################################## + DelayConfirmation ::= SEQUENCE { + + -- reference of the delay confirmation + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- train number of the delayed train - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date of the delayed train + -- number of year from 2015 onwards (2015 = 0) + departureYear INTEGER (1..200) OPTIONAL, + -- number of the day in the year (1.1. = 1) + departureDay INTEGER (1..366) OPTIONAL, + departureTime INTEGER (0..1440) OPTIONAL, + + -- station where the delay became relevant + stationCodeTable CodeTableType DEFAULT stationUIC, + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- delay in minutes at the mentioned station + delay INTEGER (1..999), + + -- indication that the train was cancelled + trainCancelled BOOLEAN, + + -- type of confirmation provided + confirmationType ConfirmationType DEFAULT travelerDelayConfirmation, + + -- affected original ticket(s) + affectedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- info text + infoText UTF8String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + ConfirmationType ::= ENUMERATED { + trainDelayConfirmation (0), -- confirmation of train delay, whether the traveler was on board in unconfirmed + travelerDelayConfirmation (1), -- confirmation that the traveler was on board of the delayed train + trainLinkedTicketDelay (2) -- confirmation that a ticket linked to the delayed train was issued + ,... + } + + + -- ######################################################################################## + -- Details of the issuer and the issue of the ticket + -- - details on the issuer + -- - indication of test tickets (specimen) + -- - payment details: method of payment, currency + -- - proprietary PNR of the issuer to be used to identify the sale within + -- the issuers ecosystem + -- - web link to display more information for the customer + -- - proprietary extension data + -- ######################################################################################## + IssuingData ::= SEQUENCE { + + -- provider of the signature (RICS code) + securityProviderNum INTEGER (1..32000) OPTIONAL, + securityProviderIA5 IA5String OPTIONAL, + + -- issuer of the transport document if different from the security provider + -- (RICS code) + issuerNum INTEGER (1..32000) OPTIONAL, + issuerIA5 IA5String OPTIONAL, + + -- issuing time stamp + -- number of year from 2015 onwards (2015 = 0) + issuingYear INTEGER (1..200) OPTIONAL, + -- number of the day in the year (1.1. = 1) + issuingDay INTEGER (1..366) OPTIONAL, + -- The number of the minutes of issue might be used in case of account + -- based ticketing whith a delay of n minutes for the replication of central + -- booking data to the control devices (e.g. at SBB) + -- The time can be compared with the last synchronization time of + -- the control device + issuingTime INTEGER (0..1440) OPTIONAL, + + -- name of the issuer (E.g. short name mentioned in RICS code table) + issuerName UTF8String OPTIONAL, + + -- specimen indicates a test specimen not valid for travelling + specimen BOOLEAN, + + -- secure paper indicates that this barcode is issued with a secure paper ticket + -- to ensure the uniqueness of the ticket. This allows to use the same control + -- procedure as for e-tickets also for anonymous tickets + -- the double use of the ticket is in this case excluded by the secure paper + securePaperTicket BOOLEAN, + + -- indicates that the ticket is valid for traveling or still needs activation + activated BOOLEAN, + + -- currency of the prices + currency IA5String (SIZE(3)) DEFAULT "EUR", + + -- fraction of the prices included + currencyFract INTEGER (1..3) DEFAULT 2, + + -- PNR used by the issuer to identify the document + issuerPNR IA5String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL, + + -- location of sale in case of a sale on board of a train + -- numeric train number or aphanumeric id of the train where the ticket was sold + issuedOnTrainNum INTEGER OPTIONAL, + issuedOnTrainIA5 IA5String OPTIONAL, + -- line number + issuedOnLine INTEGER OPTIONAL, + + -- point oof sale + pointOfSale GeoCoordinateType OPTIONAL + ,... + } + + -- ################################################################################### + -- data supporting the control process + -- - list of items which the travelder can use to identify himself or the unique + -- usage of the ticket + -- (card ids, parts or identity card numbers, credit card numbers,..) + -- - hints on the validation to be made on board + -- + -- ################################################################################### + ControlData ::= SEQUENCE { + + -- cards that can be used to identify the ticket holder + identificationByCardReference SEQUENCE OF CardReferenceType OPTIONAL, + + -- idcard id must be checked to identify the traveler + identificationByIdCard BOOLEAN, -- DEFAULT FALSE, + + -- passport id must be checked to identify the traveler + identificationByPassportId BOOLEAN, -- DEFAULT FALSE, + + -- other items which could be used to identify the ticket holder + -- (for future use, code list to be defined) + identificationItem INTEGER OPTIONAL, + + -- validation of the passport is required (e.g. in case of Eurail) + passportValidationRequired BOOLEAN, -- DEFAULT FALSE, + + -- online validation of the ticket required + onlineValidationRequired BOOLEAN, -- DEFAULT FALSE, + + -- percentage of the tickets to be validated in more detail + -- (i.e. via online check or detailed checks lateron) + randomDetailedValidationRequired INTEGER (0..99) OPTIONAL, + + -- manual validation of the traveler age required (in case of reductions) + ageCheckRequired BOOLEAN, -- DEFAULT FALSE, + + -- manual validation of the travelers reduction card required (in case of reductions) + reductionCardCheckRequired BOOLEAN, -- DEFAULT FALSE, + + -- controler info text + infoText UTF8String OPTIONAL, + + -- additional tickets that should be controlled + includedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################ + -- Traveler data + -- these data do not include tariff details of the booked tariffs, + -- tariff data are included in the transport document details and might + -- have a reference to the traveler defined here. + -- - personal data of the travellers + -- - the index of the list can be used to identify the + -- traveler within other contexts (e.g. in assigned tariffs) + -- ################################################################################ + TravelerData ::= SEQUENCE { + -- traveler list + traveler SEQUENCE OF TravelerType OPTIONAL, + + -- ISO 639-1 coding of the language preferred for the traveler / ticket holder + preferedLanguage IA5String (SIZE(2)) OPTIONAL, + + -- name of the group in case of a group ticket + groupName UTF8String OPTIONAL + ,... + } + + -- #################################################################################### + -- the following part contains the different transport document specifications + -- #################################################################################### + + + -- #################################################################################### + -- reservations of seats , couchettes and berths + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- - information on trach an dplafoorm where the coach stops + -- - additional second coach for large groups + -- #################################################################################### + ReservationData ::= SEQUENCE { + + -- train number - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date + -- number of the days calculated from the issuing date + -- (0 = issuing date) + departureDate INTEGER (0..370) DEFAULT 0, + + -- reservation reference according ton 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code to be used as standard) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + serviceBrand INTEGER (0..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + -- service code list from 918.1 (seat couchette,..) + service ServiceType DEFAULT seat, + + -- code table used to encode stations + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + -- origin station code + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + -- destination station code + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + -- origin station name + fromStationNameUTF8 UTF8String OPTIONAL, + + -- destination station name + toStationNameUTF8 UTF8String OPTIONAL, + + -- departure time + departureTime INTEGER (0..1440), + + -- arrival date and time + -- number of days counted from the departure date + arrivalDate INTEGER (0..20) DEFAULT 0, + arrivalTime INTEGER (0..1440) OPTIONAL, + + -- responsible carriers on the route + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- travel class + classCode TravelClassType DEFAULT second, + + -- service level code list from 918.1 + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- places + places PlacesType OPTIONAL, + + -- additional places in a second coach + additionalPlaces PlacesType OPTIONAL, + + --bicycle places + bicyclePlaces PlacesType OPTIONAL, + + -- compartment details (open space, wheelchair,..) + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- number of persons on the ticket without place numbers (on IRT) + numberOfOverbooked INTEGER (0..200) DEFAULT 0, + + -- description of berths + berth SEQUENCE OF BerthDetailData OPTIONAL, + + -- tariffs included (Adult, Children,... ) + tariff SEQUENCE OF TariffType OPTIONAL, + + -- type of the price (supplement,... ) + priceType PriceTypeType DEFAULT travelPrice, + + -- type of supplement - code list from 018.1 + typeOfSupplement INTEGER (0..9) DEFAULT 0, + + numberOfSupplements INTEGER (0..200) DEFAULT 0, + + -- luggage restrictions and registered luggage + -- in case the luggage restrictions are general and do not depend on the + -- ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + infoText UTF8String OPTIONAL, + + -- bilaterally agreed proprietary extension + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################# + -- reservations of car carriage + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- ################################################################################# + CarCarriageReservationData ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + + -- loading / unloading of the car + -- begin of loading (date) + -- number of the days calculated from the issuing date + -- (0 = issuing date) + beginLoadingDate INTEGER (0..370) DEFAULT 0, + beginLoadingTime INTEGER (0..1440) OPTIONAL, + endLoadingTime INTEGER (0..1440) OPTIONAL, + + -- reservation reference according on 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition (RICS Code/proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + serviceBrand INTEGER (1..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + coach IA5String OPTIONAL, + place IA5String OPTIONAL, + + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- description of the car + numberPlate IA5String, + trailerPlate IA5String OPTIONAL, + carCategory INTEGER (0..9), + boatCategory INTEGER (0..6) OPTIONAL, + textileRoof BOOLEAN, + roofRackType RoofRackType DEFAULT norack, + + -- heigth of a roof rack in cm + roofRackHeight INTEGER (0..99) OPTIONAL, + + -- number of boats on a rack + attachedBoats INTEGER (0..2) OPTIONAL, + + -- number of biycles on a rack + attachedBicycles INTEGER (0..4) OPTIONAL, + + -- number of surf boards on a rack + attachedSurfboards INTEGER (0..5) OPTIONAL, + + -- reference to an entry on the loading list + loadingListEntry INTEGER (0..999) OPTIONAL, + loadingDeck LoadingDeckType DEFAULT upper, + + -- responsible carriers on the route + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + tariff TariffType, + priceType PriceTypeType DEFAULT travelPrice, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + + -- ##################################################################################### + -- data for open tickets (NRT and group tickets) + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- - additional data based on 108.1 with some extensions as 108.1 + -- does not provide well structured data, + -- especially concerning regional validity + -- + -- ##################################################################################### + + OpenTicketData ::= SEQUENCE { + + -- reference must be given either in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code/proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- to support other content (e.g. VDV, UTPF, VÖV, CALYPSO) + -- issuer code using the default code table of the product owner + extIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the product owner + issuerAutorizationId INTEGER OPTIONAL, + + -- ticket includes the return trip + returnIncluded BOOLEAN, -- DEFAULT FALSE, + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- return route description + -- the return route description can be omitted if it is identical to the + -- inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- temporal validity data + -- number of days from issuing date + validFromDay INTEGER (0..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- number of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 1 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- servicelevel code according to leaflet 918.1 to encode other products + -- (e.g. PREMIUM, ...) + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- carriers are mandatory on international routes, but can also + -- be included in via details + carriersNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carriersIA5 SEQUENCE OF IA5String OPTIONAL, + + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + infoText UTF8String OPTIONAL, + + -- additional included open tickets + -- e.g. to include local city traffic on parts of a the route + includedAddOns SEQUENCE OF IncludedOpenTicketType OPTIONAL, + + -- in case the luggage restrictions are general and do not depend + -- on the ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + + + -- #################################################################################### + -- data for passes + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- #################################################################################### + PassData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code/proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- type of the pass, code list provided by the product owner + -- in case of Eurail: + -- 1 = Interrail + -- 2 = Eurail + -- 3 = Eurail Global (all countries) + passType INTEGER (1..250) OPTIONAL, + + -- literal name of the pass + passDescription UTF8String OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- begin of validity + -- number of days from issuing date (0 = issuing date) + validFromDay INTEGER (0..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + -- end of validity + -- number of days from valid from day, 0 = valid on valid-from-date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- additional validity periods and excluded time ranges + validityPeriodDetails ValidityPeriodDetailType OPTIONAL, + + -- max number of days of validity in case the valid from day is open + numberOfValidityDays INTEGER (0..370) OPTIONAL, + + -- max number of possible trips to be activated + numberOfPossibleTrips INTEGER (1..250) OPTIONAL, + numberOfDaysOfTravel INTEGER (1..250) OPTIONAL, + + -- number of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 1 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included countries, code table according to UIC leaflet 918.2 + countries SEQUENCE OF INTEGER (1..250) OPTIONAL, + + -- included carriers (RICS codes) + includedCarriersNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + includedCarriersIA5 SEQUENCE OF IA5String OPTIONAL, + + -- excluded carriers (RICS codes) + excludedCarriersNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedCarriersIA5 SEQUENCE OF IA5String OPTIONAL, + + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- region description to cover local zones + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + ValidityPeriodDetailType ::= SEQUENCE { + validityPeriod SEQUENCE OF ValidityPeriodType OPTIONAL, + excludedTimeRange SEQUENCE OF TimeRangeType OPTIONAL + } + + ValidityPeriodType ::= SEQUENCE { + -- number of days from issuing date (0 = issuing date) + validFromDay INTEGER (0..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid from day, 0 = valid on valid from date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL + } + + TimeRangeType ::= SEQUENCE { + fromTime INTEGER (0..1440), + untilTime INTEGER (0..1440) + } + + -- ###################################################################################### + -- data for vouchers + -- included are quite basic further study is required + -- ###################################################################################### + VoucherData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code/proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- begin of validity + -- number of year from 2015 onwards (2015 = 0) + validFromYear INTEGER (1..200), + -- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370), + -- end of validity + -- number of year from 2015 onwards (2015 = 0) + validUntilYear INTEGER (1..200), + -- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370), + + value INTEGER DEFAULT 0, + + -- type of the voucher, code list defined by the product owner + type INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + -- ################################################################################### + -- data for FIP tickets + -- included are data from the FIP ticket layout, + -- ################################################################################### + FIPTicketData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code/proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- first day of validity + --- number of days from issuing date 0 = issuing day + validFromDay INTEGER (0..700) DEFAULT 0, + -- last day of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + + -- activated days + -- the day is given by the number of days from the first day of validity + -- 1 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- number of travel days allowed + numberOfTravelDays INTEGER (1..200), + includesSupplements BOOLEAN, + + -- travel class + classCode TravelClassType DEFAULT second, + extension ExtensionData OPTIONAL + ,... + } + + -- ##################################################################################### + -- data station passage and access + -- ticket used to enter, exit or pass a station without travelling by train. + -- E.g. for staff working in a station. + -- ##################################################################################### + StationPassageData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition (RICS Code/proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + productName UTF8String OPTIONAL, + + -- code table used to encode he stations + stationCodeTable CodeTableType DEFAULT stationUIC, + -- list of station where the passage is allowed + stationNum SEQUENCE OF INTEGER OPTIONAL, + stationIA5 SEQUENCE OF IA5String OPTIONAL, + -- station names + stationNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- list of areas in a station where the access is allowed + areaCodeNum SEQUENCE OF INTEGER OPTIONAL, + areaCodeIA5 SEQUENCE OF IA5String OPTIONAL, + -- area names + areaNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- begin of validity + -- number of days from issiung date + validFromDay INTEGER (0..700), + validFromTime INTEGER (0..1440) OPTIONAL, + -- end of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- number of days for station passage in case the number of days + -- is limited and less that the validity period + numberOfDaysValid INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - ÖBB requirements on card data + -- - DB Bahncard as HandyTicket + -- note: customer data are included in the traveler data structure + -- ###################################################################################### + CustomerCardData ::= SEQUENCE { + + -- customer details + -- optional, as there might be an anonymous cards + customer TravelerType OPTIONAL, + + -- card id might be numerical or alphanumerical + cardIdIA5 IA5String OPTIONAL, + cardIdNum INTEGER OPTIONAL, + + -- issuing date in case it is not given + -- number of year from 2015 onwards (2015 = 0) + validFromYear INTEGER (1..250), + --- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370) OPTIONAL, + + --- number of year from valid from year onwards + validUntilYear INTEGER (0..250) DEFAULT 0, + --- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370) OPTIONAL, + + classCode TravelClassType OPTIONAL, + + -- code of the card type code list defined by the issuer + cardType INTEGER (1..1000) OPTIONAL, + + -- readable description of the card type + cardTypeDescr UTF8String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- readable customer status "e.g. gold", + customerStatusDescr IA5String OPTIONAL, + + -- list of included services, + -- 1 = Rail Plus + -- 2 = access to launch + -- > 50 code list of the issuer + includedServices SEQUENCE OF INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - DB parking ground reservation + -- ####################################################################################### + ParkingGroundData ::= SEQUENCE { + + -- booking reference + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + parkingGroundId IA5String, + + -- number of days from the issuing date + fromParkingDate INTEGER (0..370), + -- number of days from the from parking date in case it is different from that date + toParkingDate INTEGER (0..370) DEFAULT 0, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- code needed to access the parking lot + accessCode IA5String OPTIONAL, + + location UTF8String, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the parking ground is associated with a station + stationNum INTEGER OPTIONAL, + stationIA5 UTF8String OPTIONAL, + + specialInformation UTF8String OPTIONAL, + entryTrack UTF8String OPTIONAL, + numberPlate IA5String OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ####################################################################### + -- data for countermarks issued with group tickets + -- included are data from: + -- - version 3 bar code (leaflet 918.2) + -- - printed layout (leaflet 918.2) + -- ######################################################################## + CountermarkData ::= SEQUENCE { + + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition (RICS Code/proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- reference of the group ticket + ticketReferenceIA5 IA5String OPTIONAL, + ticketReferenceNum INTEGER OPTIONAL, + + -- sequential number of the countermark + numberOfCountermark INTEGER (1..200), + -- total number of countermarks + totalOfCountermarks INTEGER (1..200), + -- name of the group + groupName UTF8String, + + + stationCodeTable CodeTableType DEFAULT stationUIC, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + + -- ticket includes the return trip + returnIncluded BOOLEAN, -- DEFAULT FALSE, + -- retrurn route description + -- can be omitted if it is identical to the inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + --- number of days from issiung date + validFromDay INTEGER (0..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- valid carriers + carriersNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carriersIA5 SEQUENCE OF IA5String OPTIONAL, + + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + infoText UTF8String OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + + -- ########################################################################################### + -- generic non standard extension element + -- the generic non - standard element contains: + -- - an extension id to distinguish different extensions + -- - the extension data as binary data + -- proprietary extensions are by definition proprietary. This standard provides + -- the means to identify these extensions + -- within the data and to skip these data. + -- the evaluation of these data and the unique identification of the extensions + -- via the extension id is in the + -- responsibility of the railways which use these extensions. + -- ########################################################################################### + ExtensionData ::= SEQUENCE { + extensionId IA5String, + extensionData OCTET STRING + } + + -- ############################################################################################ + -- type definitions + -- ############################################################################################ + + -- ############################################################################################# + -- included open ticke for a part of the travel (e.g. local city trafic) + -- - data identically already included in the covering open ticket do not need to be + -- repeated here + -- - main source are the data required for included regional and city traffic tickets + -- ############################################################################################# + IncludedOpenTicketType ::= SEQUENCE { + + -- organization responsible for the product definition (RICS Code / proprietary code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- issuer code using the default code table of the product owner (today used e.g. by VDV) + externalIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the poroduct owner (today used e.g. by VDV) + issuerAutorizationId INTEGER OPTIONAL, + + -- regional validity data + stationCodeTable CodeTableType DEFAULT stationUIC, + -- specification of the ordered sequence of valid regions, ordered in the direction of travel + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- temporal validity data + -- number of days from issuiung date + validFromDay INTEGER (0..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- travel class to be given in case it differs from the class of the main ticket + classCode TravelClassType OPTIONAL, + -- servicelevel code according to leaflet 918.1 to encode other products (e.g. PREMIUM, ...) + -- to be provided in case it differs from the main ticket + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- valid carriers + includedCarriersNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + includedCarriersIA5 SEQUENCE OF IA5String OPTIONAL, + + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- tariff data for open tickets + -- information included are: + -- - number of passengers + -- - optionally a link to the traveler data + -- ####################################################################################### + TariffType ::= SEQUENCE { + + -- number of passengers using the tariff + numberOfPassengers INTEGER (1..200) DEFAULT 1, + + -- type indication youth, adult, senior,.. + passengerType PassengerType OPTIONAL, + + -- age restrictions of the tariff + ageBelow INTEGER (1..40) OPTIONAL, + ageAbove INTEGER (2..120) OPTIONAL, + + -- named traveler list + -- link to the traveler in case the travelers have to be named (e.g. Eurail passes) + -- the number indicates the position in the traveler list starting from 1 + traverlerid SEQUENCE OF INTEGER (0..254) OPTIONAL, + + -- restriction on country of residence + -- this tariff is restricted to the country of residence given in the traveler data + restrictedToCountryOfResidence BOOLEAN, + + -- section in case the tariff applies to a part of the route only + restrictedToRouteSection RouteSectionType OPTIONAL, + + -- details on series according to lesaflet 108.1 + seriesDataDetails SeriesDetailType OPTIONAL, + + -- tariff code + tariffIdNum INTEGER OPTIONAL, + tariffIdIA5 IA5String OPTIONAL, + + -- tariff description + tariffDesc UTF8String OPTIONAL, + + -- reduction cards applied (incl. dicount cards, loaylty cards relevant for the tariff) + reductionCard SEQUENCE OF CardReferenceType OPTIONAL + ,... + } + + SeriesDetailType ::= SEQUENCE { + + -- data related to tariffs based on series according UIC leaflet 108.1 + -- supplying carrier according to UIC leaflet 108.1 + supplyingCarrier INTEGER (1..32000) OPTIONAL, + -- offer identifier of the carrier according to UIC leaflet 108.1 + offerIdentification INTEGER (1..99) OPTIONAL, + -- series of the carrier according to UIC leaflet 108.1 + series INTEGER OPTIONAL + } + + + RouteSectionType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, -- IA5 of Num not both + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, -- IA5 of Num not both + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + } + + + -- ####################################################################################### + -- customer card reference + -- ####################################################################################### + CardReferenceType ::= SEQUENCE { + + -- RICS code for railways + cardIssuerNum INTEGER (1..32000) OPTIONAL, + cardIssuerIA5 IA5String OPTIONAL, + + cardIdNum INTEGER OPTIONAL, + cardIdIA5 IA5String OPTIONAL, + + cardName UTF8String OPTIONAL, + -- Name of the card e.g. "VISA-CARD" + + cardType INTEGER OPTIONAL, + -- type of the card, code list defined by the issuer + + leadingCardIdNum INTEGER OPTIONAL, + -- in case only the leading part of the number is provided + leadingCardIdIA5 IA5String OPTIONAL, + -- in case only the leading part of the code is provided + + trailingCardIdNum INTEGER OPTIONAL, + -- in case only the trailing part of the number is provided + + trailingCardIdIA5 IA5String OPTIONAL + -- in case only the trailing part of the code is provided + ,... + } + + -- ####################################################################################### + -- traveler data + -- - traveler data might contain all traveler details which are independent + -- from the type of travel document + -- e.g. it can include the date of birth as this is part of the traveler + -- but not the indication "Senior" as this is tariff dependent + -- ####################################################################################### + TravelerType ::= SEQUENCE { + + firstName UTF8String OPTIONAL, + secondName UTF8String OPTIONAL, + lastName UTF8String OPTIONAL, + idCard IA5String OPTIONAL, + passportId IA5String OPTIONAL, + title IA5String (SIZE(1..3)) OPTIONAL, + gender GenderType OPTIONAL, + + -- customer id might be numerical or alphanumerical + customerIdIA5 IA5String OPTIONAL, + customerIdNum INTEGER OPTIONAL, + + -- date of birth + -- number of year from 1900 onwards (1900 = 0) + yearOfBirth INTEGER (1..200) OPTIONAL, + -- number of the day in the year (1.1. = 1) + dayOfBirth INTEGER (0..370) OPTIONAL, + + -- indicates the ticket holder/group leader in case of groups + ticketHolder BOOLEAN, -- DEFAULT FALSE, + + passengerType PassengerType OPTIONAL, + + passengerWithReducedMobility BOOLEAN OPTIONAL, + + -- country of residence (numeric ISO country code) + countryOfResidence INTEGER (1..999) OPTIONAL, + countryOfPassport INTEGER (1..999) OPTIONAL, + countryOfIdCard INTEGER (1..999) OPTIONAL, + + status SEQUENCE OF CustomerStatusType OPTIONAL + ,... + } + + CustomerStatusType ::= SEQUENCE { + + -- compagny providing the status, default is the issuer + -- (RICS code / proprietary code) + statusProviderNum INTEGER (1..32000) OPTIONAL, + statusProviderIA5 IA5String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- customer status "gold" + customerStatusDescr IA5String OPTIONAL + } + + + ReturnRouteDescriptionType ::= SEQUENCE { + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validReturnRegionDesc UTF8String OPTIONAL, + + -- specification of the ordered sequence of valid regions for the return trip + validReturnRegion SEQUENCE OF RegionalValidityType OPTIONAL + ,... + + } + + -- ###################################################################################### + -- regional validity of an open ticket + -- specification of the regional validity. + -- ###################################################################################### + + RegionalValidityType ::= CHOICE { + + trainLink TrainLinkType, + viaStations ViaStationType, + zones ZoneType, + lines LineType, + polygone PolygoneType + ,... + } + + + + -- ####################################################################################### + -- train link data + -- includes a restriction of an open ticket valid only on a specific train + -- and date on a part of the route + -- ####################################################################################### + TrainLinkType ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + travelDate INTEGER (0..370), -- days from the issuing date onwards + departureTime INTEGER (0..1440), -- time in minutes + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationName UTF8String OPTIONAL, + toStationName UTF8String OPTIONAL + + } + + + + -- ###################################################################################### + -- regional validity using a set of lines + -- - based on data used in regional city trafic enviromnemnts + -- ###################################################################################### + LineType ::= SEQUENCE { + + -- local service provider / within the zone - RICS code/ proprietary code + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + -- ids of the valid lines known by the local carriers in that zone + lineId SEQUENCE OF INTEGER OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey + -- starting from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional city transport + -- code list of the local carrier + city INTEGER (1..9999999) OPTIONAL, + + -- binary encoding of zones, encoding speciofication provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL + ,... + } + + + -- ################################################################################# + -- regional validity in a zone + -- - based on data used in regional city trafic enviromnemnts + -- ################################################################################# + ZoneType ::= SEQUENCE { + + -- local service provider / carrier within the zone - RICS code , + -- proprietary code (e.g. "RMV") + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey starting + -- from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional + -- city transport code list of the local carrier + city INTEGER OPTIONAL, + + -- ids of the valid zones known by the local carriers in that zone + zoneId SEQUENCE OF INTEGER OPTIONAL, + + -- binary encoding of zones, encoding specification provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL, + + -- EU NUTS code for a region + nutsCode IA5String OPTIONAL + ,... + } + + + -- ################################################################################## + -- via station + -- includes a description of of the route by via stations. + -- Via stations follow the description in leaflet 108.1: + -- via stations can e mandatory to pass (but there does not need to be a + -- train stop at this stations): visible route description: "*station*" + -- there can be a list of alternative routes: + -- visible route description: "*(station1/station2)*" + -- there can also be alternative routes: + -- "*(station1*station2/station3*station4)*" although the + -- definition in 108.2 is not very precice on this option + -- ################################################################################### + ViaStationType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- mandatory via station + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- list of alternative routes, one of these has to be taken + alternativeRoutes SEQUENCE OF ViaStationType OPTIONAL, + + -- list of stations along the route + route SEQUENCE OF ViaStationType OPTIONAL, + border BOOLEAN, -- DEFAULT FALSE, + + -- in case the carrier is included here it might be omitted + -- in the carrier list of the region data + carriersNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carriersIA5 SEQUENCE OF IA5String OPTIONAL, + + -- the route id as series number as defined in 108.1 data + seriesId INTEGER OPTIONAL, + + -- route id of the route code list defined by the carrier on that route + routeId INTEGER OPTIONAL + ,... + } + + + PolygoneType ::= SEQUENCE { + firstEdge GeoCoordinateType, + edges SEQUENCE OF DeltaCoordinates + } + + TokenType ::= SEQUENCE { + -- provider of the token + tokenProviderNum INTEGER OPTIONAL, + -- provider of token (non-railway) + tokenProviderIA5 IA5String OPTIONAL, + -- in case the provider has multiple tokens + tokenSpecification IA5String OPTIONAL, + token OCTET STRING + } + + -- ########################################################################################### + -- TicketLinkType is used to define a link from the ticket in the bar code to another ticket + -- (requirement from Eurail) + -- use cases + -- - DB Alleo (open ticket + reservation) + -- - reservation of trailer and car carriage and traveller reservation + -- - link between open ticket and bicycle reservations or pass + -- - open ticket and vouchers for meals + -- ########################################################################################### + TicketLinkType ::= SEQUENCE { + + -- data to reference the external ticket + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + issuerName UTF8String OPTIONAL, -- name of the issuer + + -- organization responsible for the product definition + -- (RICS Code/proprietary non UIC code) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- type of linked ticket + ticketType TicketType DEFAULT openTicket, + -- type of link + linkMode LinkMode DEFAULT issuedTogether + ,... + } + + -- ############################################################################################ + -- code table used fort station codes + -- defines the code table used e.g. to define station code + -- - stationUIC = station codes as used in UIC leaflet 108.1 for open tickets + -- - stationUICReservation = station codes as used in Reservation leaflets 918.1 and 108.2 + -- ############################################################################################ + + CodeTableType ::= ENUMERATED { + -- standard UIC station code from MERITS (UIC country code + 5 digit local code) + stationUIC (0), + -- standard UIC station code for reservation + stationUICReservation (1), + -- future standard ERA station code + stationERA (2), + -- local carrier code list + -- e.g. in case of stations / stops of non-railways stops (city trafic) + localCarrierStationCodeTable (3), + + -- non standard code to be used within the issuer eco system only + -- not applicable for multi carrier travel documents + -- or in case issuer and carrier are different + proprietaryIssuerStationCodeTable (4) + + } + + + ServiceType ::= ENUMERATED { + seat (0), + couchette (1), + berth (2), + carcarriage (3) + } + + + PassengerType ::= ENUMERATED { + adult (0), + senior (1), + child (2), + youth (3), + dog (4), + bicycle (5), + freeAddonPassenger (6), + freeAddonChild (7) + ,... + } + + TicketType ::= ENUMERATED { + openTicket (0), + pass (1), + reservation (2), + carCarriageReservation (3) + ,... + } + + LinkMode ::= ENUMERATED { + issuedTogether (0), + onlyValidInCombination (1) + ,... + } + + + -- #################################################################################### + -- place data corresponding to leaflet 918.1 + -- placeString = place number ranges in case of groups + -- #################################################################################### + PlacesType ::= SEQUENCE { + coach IA5String OPTIONAL, + -- printable place string ("15-18, 21, 22" ) + placeString IA5String OPTIONAL, + -- printable place description + placeDescription UTF8String OPTIONAL, + + -- individual places + placeIA5 SEQUENCE OF IA5String OPTIONAL, + placeNum SEQUENCE OF INTEGER (1..254) OPTIONAL + } + + PriceTypeType ::= ENUMERATED { + noPrice (0), + reservationFee (1), + supplement (2), + travelPrice (3) + } + + BerthTypeType ::= ENUMERATED { + single (0), + special (1), + double (2), + t2 (3), + t3 (4), + t4 (5) + } + + CompartmentGenderType ::= ENUMERATED { + unspecified (0), + family (1), + female (2), + male (3), + mixed (4) + ,... + } + + GenderType ::= ENUMERATED { + unspecified (0), + female (1), + male (2), + other (3) + ,... + } + + TravelClassType ::= ENUMERATED { + notApplicabel (0), + first (1), + second (2), + tourist (3), + comfort (4), + premium (5), + business (6), + all (7) + ,... + } + + -- ######################################################################################## + -- sleeper compartment types corresponding to leaflet 918.1 + -- ######################################################################################## + BerthDetailData ::= SEQUENCE { + berthType BerthTypeType, + numberOfBerths INTEGER (1..999), + gender CompartmentGenderType DEFAULT family + ,... + } + + -- #################################################################################### + -- compartment details corresponding to leaflet 918.1 + -- #################################################################################### + CompartmentDetailsType ::= SEQUENCE { + coachType INTEGER (1..99) OPTIONAL, + compartmentType INTEGER (1..99) OPTIONAL, + specialAllocation INTEGER (1..99) OPTIONAL, + coachTypeDescr UTF8String OPTIONAL, + compartmentTypeDescr UTF8String OPTIONAL, + specialAllocationDescr UTF8String OPTIONAL, + position CompartmentPositionType DEFAULT unspecified + ,... + } + + + -- ##################################################################################### + -- luggage restrictions + -- the basis for these data is week: + -- SCIC mentions a maximum of three pieces of hand luggage but does not includes + -- a definition of hand luggaage + -- SCIC referes to special conditions on registered lluggage, but SCIC NRT does + -- not contain definitions on that and UIC 108.1 does not + -- contain data structures for luggage + -- - current THALYS luggage resrictions + -- ##################################################################################### + LuggageRestrictionType ::= SEQUENCE { + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxHandLuggagePieces INTEGER(0..99) DEFAULT 3, + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxNonHandLuggagePieces INTEGER(0..99) DEFAULT 1, + registeredLuggage SEQUENCE OF RegisteredLuggageType OPTIONAL + ,... + + } + + RegisteredLuggageType ::= SEQUENCE { + -- id of the additional registered luggage + registrationId IA5String OPTIONAL, + -- maximum weight in kg + maxWeight INTEGER (1..99) OPTIONAL, + -- sum of length with and height in cm + maxSize INTEGER (1..300) OPTIONAL + ,... + + } + + -- ########################################################################################## + -- generic type for geo coordinates + -- ########################################################################################## + GeoCoordinateType ::= SEQUENCE { + geoUnit GeoUnitType DEFAULT milliDegree, + coordinateSystem GeoCoordinateSystemType DEFAULT wgs84, + -- separate hemishpere flag reduces the data size + hemisphereLongitude HemisphereLongitudeType DEFAULT north, + -- separate hemishpere flag reduces the data size + hemisphereLatitude HemisphereLatitudeType DEFAULT east, + longitude INTEGER, + latitude INTEGER, + accuracy GeoUnitType OPTIONAL + } + + DeltaCoordinates ::= SEQUENCE { + -- logitude difference to a reference point + longitude INTEGER, + -- latitude difference to a reference point + latitude INTEGER + } + + GeoCoordinateSystemType ::= ENUMERATED { + wgs84 (0), -- WGS 84 standard system + grs80 (1) -- (outdated) GRS 80 coordinate system + } + + GeoUnitType ::= ENUMERATED { + microDegree (0), -- approx. 11 cm on earth surface + tenthmilliDegree (1), -- 1 / 100000 degree is approx. 1.1 meter on earth surface + milliDegree (2), -- approx 110 meter on earth surface + centiDegree (3), + deciDegree (4) + } + + HemisphereLongitudeType ::= ENUMERATED { + north (0), + south (1) + } + + HemisphereLatitudeType ::= ENUMERATED { + east (0), + west (1) + } + + LoadingDeckType ::= ENUMERATED { + unspecified (0), + upper (1), + lower (2) + } + + CompartmentPositionType ::= ENUMERATED { + unspecified (0), + upperLevel (1), + lowerLevel (2) + } + + RoofRackType ::= ENUMERATED { + norack (0), + roofRailing (1), + luggageRack (2), + skiRack (3), + boxRack (4), + rackWithOneBox (5), + rackWithTwoBoxes (6), + bicycleRack (7), + otherRack (8) + ,... + } + +END
\ No newline at end of file diff --git a/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.1.asn b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.1.asn new file mode 100644 index 0000000..efcd683 --- /dev/null +++ b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.1.asn @@ -0,0 +1,1976 @@ +-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net) +-- Author: ClemensGantert +-- Created: Tue Aug 11 11:40:28 CEST 2015 +ASN-Module DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +-- imports and exports +-- EXPORTS ALL; + + +-- ############################################################################################## +-- # +-- # Final version 1.2 - value 12 in the UIC bar code version element +-- # (see element 2 in U_FLEX record definition in leaflet 918.9) +-- # +-- ############################################################################################## + + +-- ############################################################################################## +-- # +-- # Naming and encoding conventions +-- # +-- # Elements included as String and as Numeric values: +-- # Some elements are included in different formats to reduce the data size. +-- # These elements must be included only once. +-- # These elements are named with the same name and appendix +-- # Num (numeric values) +-- # IA5 (String values according to ASN IA5String (7Bit)) +-- # Example: +-- # trainNum - in case of a numeric train number +-- # trainIA5 - in case of a alphanumeric train Id +-- # +-- # +-- # RICS codes must be used to encode companies (issuer, product owner, ...) where available +-- # other codes are possible based on bilateran agreements +-- # the format is kept more flexible to cover upcomng extensions of the RICS code by ERA +-- # +-- # Stations can be coded using the UIC and upcoming ERA code lists. Proprietary codes are +-- # possible based on bilateral agreements. Format: 1..9999999 or alphanumeric without +-- # special character (IA5String) +-- # +-- # +-- # ! INTEGERS must not exceed the value of 9,223,372,036,854,775,807 (64 bit) even in case +-- # ! they are unrestricted!!! +-- # ! +-- # ! Some elements like ReferenceNum or cardIdNum are defined as an unrestricted integer. +-- # ! Unlike other numerical values the cardIdNum and referenceNum can be larger than a usual 32 bit Integer +-- # ! Some ASN.1 implementation tools are limited to 32 bit integers which is too small. +-- # ! Please ensure to use a tool capable of dealing with larger numbers. +-- # +-- # BOOLEAN is always non optional +-- # +-- # Encoding of time: +-- # time is encoded as the number of minutes of the day 0 = 00:00, 1440 = 24:00, +-- # time data elements end with "time" in their name +-- # +-- # Encoding of date: +-- # ......................................................................................................... +-- # The issuing date is given in UTC, but some other date values are given in local time where the exact time zone is not known. +-- # +-- # For local dates the date is associated with the corresponding location: +-- # e.g.: +-- # valid from date -> location where the journey starts +-- # valid until date -> location where the journey covered by the ticket ends +-- # +-- # there could be rare cases where this is does not rovide a unique interpretation: +-- # e.g. open ticket or pass without start and end location for a collection of zones or countries with different time zones. +-- # in these cases the fare conditions must clarify the rules for these cases (e.g. by allowing to use the +-- # ticket a few hours after the end of validity). +-- # +-- # If these date values are given as the number of days from the issuing date the following rule applies: +-- # +-- # The difference in days is calculated by ignoring the time zone information. +-- # +-- # example 1: (31.12.2017 23:05 UTC == 01.01.2018 00:05 CET) : +-- # issuing date (UTC): 31.12.2017 23:05 +-- # local date (CET): 01.01.2018 00:05 +-- # -> difference in days = 1 +-- # +-- # example 1: (1.1.2018 22:05 UTC == 01.01.2018 23:05 CET) : +-- # issuing date (UTC): 31.12.2017 22:05 +-- # local date (CET): 01.01.2018 23:05 +-- # -> difference in days = 0 +-- # +-- # the day difference could become -1 although this can happen for localtions in America or New Zeeland only. +-- # +-- # implementation example: +-- # +-- # public static Long getDateDifference(Date issuingDate, Date localDate) { +-- # +-- # if (issuingDate == null || localDate == null) return null; +-- # +-- # Calendar issuingCal = Calendar.getInstance(); +-- # issuingCal.clear(); +-- # issuingCal.setTime(issuingDate); +-- # +-- # Calendar fromCal = Calendar.getInstance(); +-- # fromCal.clear(); +-- # fromCal.setTime(localDate); +-- # +-- # long diff = localDate.getTime() - issuingDate.getTime(); +-- # long dayDiff = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); +-- # +-- # return new Long(dayDiff); +-- # +-- # } +-- # +-- # public static Date getLocalDateFromDifference(Date issuingDate, int diff , Long time ) { +-- # +-- # if (issuingDate == null) return null; +-- # +-- # Calendar cal = Calendar.getInstance(); +-- # cal.clear(); +-- # cal.setTime(issuingDate); +-- # cal.add(Calendar.DAY_OF_YEAR, diff); +-- # +-- # if (time != null) { +-- # int hours = time.intValue() / 60; +-- # int minutes = time.intValue() - hours * 60; +-- # cal.set(Calendar.HOUR_OF_DAY, hours); +-- # cal.set(Calendar.MINUTE,minutes); +-- # } +-- # +-- # return cal.getTime(); +-- # +-- # } +-- # +-- # +-- # ASN.1 Extensions: +-- # +-- # The specification makes use of extension (",..."). +-- # These extesions might be defined in future versions of the UIC specification +-- # Implementations must support the extension feature of ASN.1, at least they must be able to ignore extensions while decoding the data +-- # ASN.1 extensions will be defined by UIC. It is not allowed to define bilateral extensions. +-- # +-- # Bilateral Extensions: +-- # Bilateral extensions can be included in the data element "ExtensionData". +-- # +-- # +-- # +-- ######################################################################################### + + +-- ############################################################################################ + + +-- type assignments + + -- ######################################################################################### + -- the basic entry point of the data structure + -- the data include: + -- -issuer informations + -- -the details of the transport document + -- -informations required for the control process + -- -informations on the travelers independent from the transport document + -- -proprietary extensions + -- + -- ########################################################################################## + UicRailTicketData ::= SEQUENCE { + -- data specific to the issuer + issuingDetail IssuingData, + + -- data on the travelers + travelerDetail TravelerData OPTIONAL, + + -- data of the transport document + -- more than one document to be used on bilateral agreement only + transportDocument SEQUENCE OF DocumentData OPTIONAL, + + -- data specific to support the ticket control process + controlDetail ControlData OPTIONAL, + + -- proprietary data defined bilaterally + extension SEQUENCE OF ExtensionData OPTIONAL + ,... + } + + + + -- ########################################################################################### + -- the choice on the different transport documents that can be included in the bar code data: + -- - reservation of seat / couchette or berths (IRT, RES, BOA) + -- - reservation of car carriage (VET) + -- - open ticket (NRT including NRT group ticket) (NRT, GRT, SUP, UPD, COI) + -- - Rail passes (including Eurail, Interail and local passes) (RPT) + -- - Voucher (TRV) + -- - Customer Cards (including bonus cards and reduction cards) + -- - counter marks issued for group tickets + -- - parking ground tickets + -- - FIP tickets + -- - station access / station passage tickets + -- - proprietary documents as an extension + -- ############################################################################################ + DocumentData ::= SEQUENCE { + + -- token + -- specific id to be exchanged with the ticket (e.g. id of the phone in case of tickets linked to a phone) + token TokenType OPTIONAL, + + -- choice of the ticket + ticket CHOICE + { + + -- Reservation (without car carriage) (IRT and RES) + reservation ReservationData, + + -- Reservation of car carriage + carCarriageReservation CarCarriageReservationData, + + -- open ticket specification (NRT) + openTicket OpenTicketData, + + -- pass specification (RPT) including Eurail and Interrail + pass PassData, + + -- voucher + voucher VoucherData, + + -- customer card either to identify a customer and / or to provide reductions + customerCard CustomerCardData, + + -- countermark to accompagny a group ticket + counterMark CountermarkData, + + -- car parking slot + parkingGround ParkingGroundData, + + -- FIP duty ticket + fipTicket FIPTicketData, + + -- ticket to pass the gates at a station + stationPassage StationPassageData, + + -- proprietary data defined bilaterally + extension ExtensionData, + + -- delay confirmation + delayConfirmation DelayConfirmation + + ,... + } + ,... + } + + -- ######################################################################################## + -- confirmation of the delay of a train + -- + -- ######################################################################################## + DelayConfirmation ::= SEQUENCE { + + -- reference of the delay confirmation + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- train number of the delayed train - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date of the delayed train in local time + -- number of year + departureYear INTEGER (2016..2269) OPTIONAL, + -- number of the day in the year (1.1. = 1) + departureDay INTEGER (1..366) OPTIONAL, + departureTime INTEGER (0..1440) OPTIONAL, + + -- station where the delay became relevant + stationCodeTable CodeTableType DEFAULT stationUIC, + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- delay in minutes at the mentioned station + delay INTEGER (1..999), + + -- indication that the train was cancelled + trainCancelled BOOLEAN, + + -- type of confirmation provided + confirmationType ConfirmationType DEFAULT travelerDelayConfirmation, + + -- affected original ticket(s) + affectedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- info text + infoText UTF8String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + ConfirmationType ::= ENUMERATED { + trainDelayConfirmation (0), -- confirmation of train delay, whether the traveler was on board in unconfirmed + travelerDelayConfirmation (1), -- confirmation that the traveler was on board of the delayed train + trainLinkedTicketDelay (2) -- confirmation that a ticket linked to the delayed train was issued + ,... + } + + + -- ######################################################################################## + -- Details of the issuer and the issue of the ticket + -- - details on the issuer + -- - indication of test tickets (specimen) + -- - payment details: method of payment, currency + -- - proprietary PNR of the issuer to be used to identify the sale within + -- the issuers ecosystem + -- - web link to display more information for the customer + -- - proprietary extension data + -- ######################################################################################## + IssuingData ::= SEQUENCE { + + -- provider of the signature (RICS code) + securityProviderNum INTEGER (1..32000) OPTIONAL, + securityProviderIA5 IA5String OPTIONAL, + + -- issuer of the transport document if the issuer is different from the security provider + -- (RICS code) + issuerNum INTEGER (1..32000) OPTIONAL, + issuerIA5 IA5String OPTIONAL, + + -- issuing time stamp in UTC + -- number of year + issuingYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + issuingDay INTEGER (1..366), + -- The number of the minutes of issue might be used in case of account + -- based ticketing whith a delay of n minutes for the replication of central + -- booking data to the control devices (e.g. at SBB) + -- The time can be compared with the last synchronization time of + -- the control device + issuingTime INTEGER (0..1440) OPTIONAL, + + -- name of the issuer (E.g. short name mentioned in RICS code table) + issuerName UTF8String OPTIONAL, + + -- specimen indicates a test specimen not valid for travelling + specimen BOOLEAN, + + -- secure paper indicates that this barcode is issued with a secure paper ticket + -- to ensure the uniqueness of the ticket. This allows to use the same control + -- procedure as for e-tickets also for anonymous tickets + -- the double use of the ticket is in this case excluded by the secure paper + securePaperTicket BOOLEAN, + + -- indicates that the ticket is valid for traveling or still needs activation + activated BOOLEAN, + + -- currency of the price: ISO4217 currency codes + currency IA5String (SIZE(3)) DEFAULT "EUR", + + -- fraction of the prices included + currencyFract INTEGER (1..3) DEFAULT 2, + + -- PNR used by the issuer to identify the document + issuerPNR IA5String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL, + + -- location of sale in case of a sale on board of a train + -- numeric train number or aphanumeric id of the train where the ticket was sold + issuedOnTrainNum INTEGER OPTIONAL, + issuedOnTrainIA5 IA5String OPTIONAL, + -- line number + issuedOnLine INTEGER OPTIONAL, + + -- point oof sale + pointOfSale GeoCoordinateType OPTIONAL + ,... + } + + -- ################################################################################### + -- data supporting the control process + -- - list of items which the travelder can use to identify himself or the unique + -- usage of the ticket + -- (card ids, parts or identity card numbers, credit card numbers,..) + -- - hints on the validation to be made on board + -- + -- ################################################################################### + ControlData ::= SEQUENCE { + + -- cards that can be used to identify the ticket holder + identificationByCardReference SEQUENCE OF CardReferenceType OPTIONAL, + + -- idcard id must be checked to identify the traveler + identificationByIdCard BOOLEAN, + + -- passport id must be checked to identify the traveler + identificationByPassportId BOOLEAN, + + -- other items which could be used to identify the ticket holder + -- (for future use, code list to be defined) + identificationItem INTEGER OPTIONAL, + + -- validation of the passport is required (e.g. in case of Eurail) + passportValidationRequired BOOLEAN, + + -- online validation of the ticket required + onlineValidationRequired BOOLEAN, + + -- percentage of the tickets to be validated in more detail + -- (i.e. via online check or detailed checks lateron) + randomDetailedValidationRequired INTEGER (0..99) OPTIONAL, + + -- manual validation of the traveler age required (in case of reductions) + ageCheckRequired BOOLEAN, + + -- manual validation of the travelers reduction card required (in case of reductions) + reductionCardCheckRequired BOOLEAN, + + -- controler info text + infoText UTF8String OPTIONAL, + + -- additional tickets that should be controlled + includedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################ + -- Traveler data + -- these data do not include tariff details of the booked tariffs, + -- tariff data are included in the transport document details and might + -- have a reference to the traveler defined here. + -- - personal data of the travellers + -- - the index of the list can be used to identify the + -- traveler within other contexts (e.g. in assigned tariffs) + -- ################################################################################ + TravelerData ::= SEQUENCE { + -- traveler list + traveler SEQUENCE OF TravelerType OPTIONAL, + + -- ISO 639-1 coding of the language preferred for the traveler / ticket holder + preferredLanguage IA5String (SIZE(2)) OPTIONAL, + + -- name of the group in case of a group ticket + groupName UTF8String OPTIONAL + ,... + } + + -- #################################################################################### + -- the following part contains the different transport document specifications + -- #################################################################################### + + + -- #################################################################################### + -- reservations of seats , couchettes and berths + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- - information on trach an dplafoorm where the coach stops + -- - additional second coach for large groups + -- #################################################################################### + ReservationData ::= SEQUENCE { + + -- train number - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date in local time + -- number of the days calculated from the issuing date + departureDate INTEGER (-1..370) DEFAULT 0, + + -- reservation reference according ton 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code to be used as standard) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (0..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + -- service code list from 918.1 (seat couchette,..) + service ServiceType DEFAULT seat, + + -- code table used to encode stations + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + -- origin station code + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + -- destination station code + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + -- origin station name + fromStationNameUTF8 UTF8String OPTIONAL, + + -- destination station name + toStationNameUTF8 UTF8String OPTIONAL, + + -- departure time + departureTime INTEGER (0..1440), + + -- arrival date and time in local time + -- number of days counted from the departure date + arrivalDate INTEGER (0..20) DEFAULT 0, + arrivalTime INTEGER (0..1440) OPTIONAL, + + -- responsible carriers on the route + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- travel class + classCode TravelClassType DEFAULT second, + + -- service level code list from 918.1 + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- places + places PlacesType OPTIONAL, + + -- additional places in a second coach + additionalPlaces PlacesType OPTIONAL, + + --bicycle places + bicyclePlaces PlacesType OPTIONAL, + + -- compartment details (open space, wheelchair,..) + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- number of persons on the ticket without place numbers (on IRT) + numberOfOverbooked INTEGER (0..200) DEFAULT 0, + + -- description of berths + berth SEQUENCE OF BerthDetailData OPTIONAL, + + -- tariffs included (Adult, Children,... ) + tariff SEQUENCE OF TariffType OPTIONAL, + + -- type of the price (supplement,... ) + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + -- type of supplement - code list from 018.1 + typeOfSupplement INTEGER (0..9) DEFAULT 0, + + numberOfSupplements INTEGER (0..200) DEFAULT 0, + + -- luggage restrictions and registered luggage + -- in case the luggage restrictions are general and do not depend on the + -- ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + infoText UTF8String OPTIONAL, + + + -- bilaterally agreed proprietary extension + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################# + -- details on the VAT included to be used in after sale processes + -- ################################################################################# + VatDetailType ::= SEQUENCE { + + -- ISO 3166 numeric country code + country INTEGER (1..999), + + -- 1/10th of a percent + percentage INTEGER (0..999), + + -- amount of VAT, the currency and the currency fraction is included in the issuing data + amount INTEGER OPTIONAL, + + -- european tax id of the company paying VAT + vatId IA5String OPTIONAL + + } + + + -- ################################################################################# + -- reservations of car carriage + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- ################################################################################# + CarCarriageReservationData ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + + -- loading / unloading of the car in local date and time + -- number of the days calculated from the issuing date + beginLoadingDate INTEGER (-1..370) DEFAULT 0, + + beginLoadingTime INTEGER (0..1440) OPTIONAL, + endLoadingTime INTEGER (0..1440) OPTIONAL, + + -- reservation reference according on 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (1..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + coach IA5String OPTIONAL, + place IA5String OPTIONAL, + + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- description of the car + numberPlate IA5String, + trailerPlate IA5String OPTIONAL, + carCategory INTEGER (0..9), + boatCategory INTEGER (0..6) OPTIONAL, + textileRoof BOOLEAN, + roofRackType RoofRackType DEFAULT norack, + + -- heigth of a roof rack in cm + roofRackHeight INTEGER (0..99) OPTIONAL, + + -- number of boats on a rack + attachedBoats INTEGER (0..2) OPTIONAL, + + -- number of biycles on a rack + attachedBicycles INTEGER (0..4) OPTIONAL, + + -- number of surf boards on a rack + attachedSurfboards INTEGER (0..5) OPTIONAL, + + -- reference to an entry on the loading list + loadingListEntry INTEGER (0..999) OPTIONAL, + loadingDeck LoadingDeckType DEFAULT upper, + + -- responsible carriers on the route (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + tariff TariffType, + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + + -- ##################################################################################### + -- data for open tickets (NRT and group tickets) + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- - additional data based on 108.1 with some extensions as 108.1 + -- does not provide well structured data, + -- especially concerning regional validity + -- + -- ##################################################################################### + + OpenTicketData ::= SEQUENCE { + + -- reference must be given either in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- to support other ticket content (e.g. VDV, UTPF, VÖV, CALYPSO) + -- issuer code using the default code table of the product owner + extIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the product owner + issuerAutorizationId INTEGER OPTIONAL, + + -- ticket includes the return trip + returnIncluded BOOLEAN, + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- return route description + -- the return route description can be omitted if it is identical to the + -- inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- temporal validity data in local time of the location where the jouney starts + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 1 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- servicelevel code according to leaflet 918.1 to encode other products + -- (e.g. PREMIUM, ...) + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- carriers involved in the transport (RICS codes) + -- the indication of carriers is mandatory on international routes, + -- they can be listed here but can also be included in viaDetails + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + + -- list of service brands for which the ticket is valid + -- in case the included service brands are listed all other brands are excluded + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- list of service brands for which the ticket is not valid + -- service brand: code list https://uic.org/service-brand-code-list + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + + -- additional included open tickets + -- e.g. to include local city traffic on parts of a the route + includedAddOns SEQUENCE OF IncludedOpenTicketType OPTIONAL, + + -- in case the luggage restrictions are general and do not depend + -- on the ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + + + extension ExtensionData OPTIONAL + ,... + } + + + + -- #################################################################################### + -- data for passes + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- #################################################################################### + PassData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- type of the pass, code list provided by the product owner + -- in case of Eurail: + -- 1 = Interrail + -- 2 = Eurail + -- 3 = Eurail Global (all countries) + passType INTEGER (1..250) OPTIONAL, + + -- literal name of the pass + passDescription UTF8String OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- begin of validity + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- end of validity + -- number of days from valid from day, 0 = valid on valid-from-date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- additional validity periods and excluded time ranges + validityPeriodDetails ValidityPeriodDetailType OPTIONAL, + + -- max number of days of validity in case the valid from day is open + numberOfValidityDays INTEGER (0..370) OPTIONAL, + + -- max number of possible trips to be activated + numberOfPossibleTrips INTEGER (1..250) OPTIONAL, + numberOfDaysOfTravel INTEGER (1..250) OPTIONAL, + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included countries, code table according to UIC leaflet 918.2 + countries SEQUENCE OF INTEGER (1..250) OPTIONAL, + + -- included carriers (RICS codes) + includedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + includedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- excluded carriers (RICS codes) + excludedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- region description to cover local zones + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + ValidityPeriodDetailType ::= SEQUENCE { + validityPeriod SEQUENCE OF ValidityPeriodType OPTIONAL, + excludedTimeRange SEQUENCE OF TimeRangeType OPTIONAL + } + + ValidityPeriodType ::= SEQUENCE { + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid from day, 0 = valid on valid from date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL + } + + TimeRangeType ::= SEQUENCE { + fromTime INTEGER (0..1440), + untilTime INTEGER (0..1440) + } + + -- ###################################################################################### + -- data for vouchers + -- included are quite basic further study is required + -- ###################################################################################### + VoucherData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- begin of validity in UTC + -- number of year + validFromYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370), + -- end of validity + -- number of year + validUntilYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370), + + value INTEGER DEFAULT 0, + + -- type of the voucher, code list defined by the product owner + type INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + -- ################################################################################### + -- data for FIP tickets + -- included are data from the FIP ticket layout, + -- ################################################################################### + FIPTicketData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- first day of validity in UTC + --- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + -- last day of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + + -- activated days: list of days for which the ticket is valid + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- number of travel days allowed + numberOfTravelDays INTEGER (1..200), + includesSupplements BOOLEAN, + + -- travel class + classCode TravelClassType DEFAULT second, + extension ExtensionData OPTIONAL + ,... + } + + -- ##################################################################################### + -- data station passage and access + -- ticket used to enter, exit or pass a station without travelling by train. + -- E.g. for staff working in a station. + -- ##################################################################################### + StationPassageData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + productName UTF8String OPTIONAL, + + -- code table used to encode he stations + stationCodeTable CodeTableType DEFAULT stationUIC, + -- list of station where the passage is allowed + stationNum SEQUENCE OF INTEGER OPTIONAL, + stationIA5 SEQUENCE OF IA5String OPTIONAL, + -- station names + stationNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- list of areas in a station where the access is allowed + areaCodeNum SEQUENCE OF INTEGER OPTIONAL, + areaCodeIA5 SEQUENCE OF IA5String OPTIONAL, + -- area names + areaNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- begin of validity in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700), + validFromTime INTEGER (0..1440) OPTIONAL, + -- end of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- number of days for station passage in case the number of days + -- is limited and less that the validity period + numberOfDaysValid INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - ÖBB requirements on card data + -- - DB Bahncard as HandyTicket + -- note: customer data are included in the traveler data structure + -- ###################################################################################### + CustomerCardData ::= SEQUENCE { + + -- customer details + -- optional, as there might be an anonymous cards + customer TravelerType OPTIONAL, + + -- card id might be numerical or alphanumerical + cardIdIA5 IA5String OPTIONAL, + cardIdNum INTEGER OPTIONAL, + + -- valid from date in UTC + -- number of year + validFromYear INTEGER (2016..2269), + --- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370) OPTIONAL, + + --- number of year from valid from year onwards + validUntilYear INTEGER (0..250) DEFAULT 0, + --- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370) OPTIONAL, + + classCode TravelClassType OPTIONAL, + + -- code of the card type code list defined by the issuer + cardType INTEGER (1..1000) OPTIONAL, + + -- readable description of the card type + cardTypeDescr UTF8String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- readable customer status "e.g. gold", + customerStatusDescr IA5String OPTIONAL, + + -- list of included services, + -- 1 = Rail Plus + -- 2 = access to launch + -- > 50 code list of the issuer + includedServices SEQUENCE OF INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - DB parking ground reservation + -- ####################################################################################### + ParkingGroundData ::= SEQUENCE { + + -- booking reference + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + parkingGroundId IA5String, + + -- parking date in local date time + -- number of days from the issuing date + fromParkingDate INTEGER (-1..370), + -- number of days from the from parking date in case it is different from that date + toParkingDate INTEGER (0..370) DEFAULT 0, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- code needed to access the parking lot + accessCode IA5String OPTIONAL, + + location UTF8String, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the parking ground is associated with a station + stationNum INTEGER OPTIONAL, + stationIA5 UTF8String OPTIONAL, + + specialInformation UTF8String OPTIONAL, + entryTrack UTF8String OPTIONAL, + numberPlate IA5String OPTIONAL, + + price INTEGER OPTIONAL, + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + + extension ExtensionData OPTIONAL + ,... + } + + -- ####################################################################### + -- data for countermarks issued with group tickets + -- included are data from: + -- - version 3 bar code (leaflet 918.2) + -- - printed layout (leaflet 918.2) + -- ######################################################################## + CountermarkData ::= SEQUENCE { + + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- reference of the group ticket + ticketReferenceIA5 IA5String OPTIONAL, + ticketReferenceNum INTEGER OPTIONAL, + + -- sequential number of the countermark + numberOfCountermark INTEGER (1..200), + -- total number of countermarks + totalOfCountermarks INTEGER (1..200), + -- name of the group + groupName UTF8String, + + + stationCodeTable CodeTableType DEFAULT stationUIC, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + + -- ticket includes the return trip + returnIncluded BOOLEAN, + -- retrurn route description + -- can be omitted if it is identical to the inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- local date + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- valid carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + + -- ########################################################################################### + -- generic non standard extension element + -- the generic non - standard element contains: + -- - an extension id to distinguish different extensions + -- - the extension data as binary data + -- proprietary extensions are by definition proprietary. This standard provides + -- the means to identify these extensions + -- within the data and to skip these data. + -- the evaluation of these data and the unique identification of the extensions + -- via the extension id is in the + -- responsibility of the railways which use these extensions. + -- ########################################################################################### + ExtensionData ::= SEQUENCE { + extensionId IA5String, + extensionData OCTET STRING + } + + -- ############################################################################################ + -- type definitions + -- ############################################################################################ + + -- ############################################################################################# + -- included open ticke for a part of the travel (e.g. local city trafic) + -- - data identically already included in the covering open ticket do not need to be + -- repeated here + -- - main source are the data required for included regional and city traffic tickets + -- ############################################################################################# + IncludedOpenTicketType ::= SEQUENCE { + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- issuer code using the default code table of the product owner (today used e.g. by VDV) + externalIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the poroduct owner (today used e.g. by VDV) + issuerAutorizationId INTEGER OPTIONAL, + + -- regional validity data + stationCodeTable CodeTableType DEFAULT stationUIC, + -- specification of the ordered sequence of valid regions, ordered in the direction of travel + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- temporal validity data in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- travel class to be given in case it differs from the class of the main ticket + classCode TravelClassType OPTIONAL, + -- servicelevel code according to leaflet 918.1 to encode other products (e.g. PREMIUM, ...) + -- to be provided in case it differs from the main ticket + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- valid carriers (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- tariff data for open tickets + -- information included are: + -- - number of passengers + -- - optionally a link to the traveler data + -- ####################################################################################### + TariffType ::= SEQUENCE { + + -- number of passengers using the tariff + numberOfPassengers INTEGER (1..200) DEFAULT 1, + + -- type indication youth, adult, senior,.. + passengerType PassengerType OPTIONAL, + + -- age restrictions of the tariff + ageBelow INTEGER (1..64) OPTIONAL, + ageAbove INTEGER (1..128) OPTIONAL, + + + -- named traveler list + -- link to the traveler in case the travelers have to be named (e.g. Eurail passes) + -- the number indicates the position in the traveler list starting from 1 + travelerid SEQUENCE OF INTEGER (0..254) OPTIONAL, + + -- restriction on country of residence + -- this tariff is restricted by the country of residence given in the traveler data + -- (e.g. Eurail tickets are not valid in the contry of residence) + restrictedToCountryOfResidence BOOLEAN, + + -- section in case the tariff applies to a part of the route only + restrictedToRouteSection RouteSectionType OPTIONAL, + + -- details on series according to lesaflet 108.1 + seriesDataDetails SeriesDetailType OPTIONAL, + + -- tariff code + tariffIdNum INTEGER OPTIONAL, + tariffIdIA5 IA5String OPTIONAL, + + -- tariff description + tariffDesc UTF8String OPTIONAL, + + -- reduction cards applied (incl. dicount cards, loaylty cards relevant for the tariff) + reductionCard SEQUENCE OF CardReferenceType OPTIONAL + ,... + } + + SeriesDetailType ::= SEQUENCE { + + -- data related to tariffs based on series according UIC leaflet 108.1 + -- supplying carrier according to UIC leaflet 108.1 (RICS code) + supplyingCarrier INTEGER (1..32000) OPTIONAL, + + -- offer identifier of the carrier according to UIC leaflet 108.1 + offerIdentification INTEGER (1..99) OPTIONAL, + + -- series of the carrier according to UIC leaflet 108.1 + series INTEGER OPTIONAL + } + + + RouteSectionType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + } + + + -- ####################################################################################### + -- customer card reference + -- ####################################################################################### + CardReferenceType ::= SEQUENCE { + + -- issuer of the card + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + cardIssuerNum INTEGER (1..32000) OPTIONAL, + cardIssuerIA5 IA5String OPTIONAL, + + cardIdNum INTEGER OPTIONAL, + cardIdIA5 IA5String OPTIONAL, + + -- Name of the card e.g. "VISA-CARD" + cardName UTF8String OPTIONAL, + + -- type of the card, code list defined by the issuer + cardType INTEGER OPTIONAL, + + -- in case only the leading part of the card number is provided + leadingCardIdNum INTEGER OPTIONAL, + leadingCardIdIA5 IA5String OPTIONAL, + + + -- in case only the trailing part of the card number is provided + trailingCardIdNum INTEGER OPTIONAL, + trailingCardIdIA5 IA5String OPTIONAL + + ,... + } + + -- ####################################################################################### + -- traveler data + -- - traveler data might contain all traveler details which are independent + -- from the type of travel document + -- e.g. it can include the date of birth as this is part of the traveler + -- but not the indication "Senior" as this is tariff dependent + -- + -- ####################################################################################### + TravelerType ::= SEQUENCE { + + firstName UTF8String OPTIONAL, + secondName UTF8String OPTIONAL, + lastName UTF8String OPTIONAL, + idCard IA5String OPTIONAL, + passportId IA5String OPTIONAL, + title IA5String (SIZE(1..3)) OPTIONAL, + gender GenderType OPTIONAL, + + -- customer id might be numerical or alphanumerical + customerIdIA5 IA5String OPTIONAL, + customerIdNum INTEGER OPTIONAL, + + -- date of birth + -- number of year + yearOfBirth INTEGER (1901..2155) OPTIONAL, + -- number of the day in the year (1.1. = 1) + dayOfBirth INTEGER (0..370) OPTIONAL, + + -- indicates the ticket holder/group leader in case of groups + ticketHolder BOOLEAN, + + passengerType PassengerType OPTIONAL, + + passengerWithReducedMobility BOOLEAN OPTIONAL, + + -- country of residence (numeric ISO country code) + -- to be used in case there product restrictions on the country of residence (e.g. Eurail passes) + countryOfResidence INTEGER (1..999) OPTIONAL, + + countryOfPassport INTEGER (1..999) OPTIONAL, + countryOfIdCard INTEGER (1..999) OPTIONAL, + + status SEQUENCE OF CustomerStatusType OPTIONAL + ,... + } + + CustomerStatusType ::= SEQUENCE { + + -- compagny providing the status, default is the issuer + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + statusProviderNum INTEGER (1..32000) OPTIONAL, + statusProviderIA5 IA5String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- customer status "gold" + customerStatusDescr IA5String OPTIONAL + } + + + ReturnRouteDescriptionType ::= SEQUENCE { + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validReturnRegionDesc UTF8String OPTIONAL, + + -- specification of the ordered sequence of valid regions for the return trip + validReturnRegion SEQUENCE OF RegionalValidityType OPTIONAL + ,... + + } + + -- ###################################################################################### + -- regional validity of an open ticket + -- specification of the regional validity. + -- ###################################################################################### + + RegionalValidityType ::= CHOICE { + trainLink TrainLinkType, + viaStations ViaStationType, + zones ZoneType, + lines LineType, + polygone PolygoneType + ,... + } + + + + -- ####################################################################################### + -- train link data + -- includes a restriction of an open ticket valid only on a specific train + -- and date on a part of the route + -- ####################################################################################### + TrainLinkType ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- local date at the station where the train link starts + -- days from the issuing date onwards + travelDate INTEGER (-1..370), + departureTime INTEGER (0..1440), -- time in minutes + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + + } + + + + -- ###################################################################################### + -- regional validity using a set of lines + -- - based on data used in regional city trafic enviromnemnts + -- ###################################################################################### + LineType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + -- ids of the valid lines known by the local carriers in that zone + lineId SEQUENCE OF INTEGER OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey + -- starting from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional city transport + -- code list of the local carrier + city INTEGER (1..9999999) OPTIONAL, + + -- binary encoding of zones, encoding speciofication provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL + ,... + } + + + -- ################################################################################# + -- regional validity in a zone + -- - based on data used in regional city trafic enviromnemnts + -- ################################################################################# + ZoneType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey starting + -- from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional + -- city transport code list of the local carrier + city INTEGER OPTIONAL, + + -- ids of the valid zones known by the local carriers in that zone + zoneId SEQUENCE OF INTEGER OPTIONAL, + + -- binary encoding of zones, encoding specification provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL, + + -- EU NUTS code for a region + nutsCode IA5String OPTIONAL + ,... + } + + + -- ################################################################################## + -- via station + -- includes a description of of the route by via stations. + -- Via stations follow the description in leaflet 108.1: + -- via stations can e mandatory to pass (but there does not need to be a + -- train stop at this stations): visible route description: "*station*" + -- there can be a list of alternative routes: + -- visible route description: "*(station1/station2)*" + -- there can also be alternative routes: + -- "*(station1*station2/station3*station4)*" although the + -- definition in 108.2 is not very precice on this option + -- ################################################################################### + ViaStationType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- mandatory via station + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- list of alternative routes, one of these has to be taken + alternativeRoutes SEQUENCE OF ViaStationType OPTIONAL, + + -- list of stations along the route + route SEQUENCE OF ViaStationType OPTIONAL, + border BOOLEAN, + + -- carrier responsible for the transport starting at this station (RICS-Code) + -- in case the carrier is included here it might be omitted + -- in the carrier list of the region data + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- the route id as series number as defined in 108.1 data + seriesId INTEGER OPTIONAL, + + -- route id of the route code list defined by the carrier on that route + routeId INTEGER OPTIONAL + ,... + } + + + PolygoneType ::= SEQUENCE { + firstEdge GeoCoordinateType, + edges SEQUENCE OF DeltaCoordinates + } + + + -- ########################################################################################### + -- TokenType provides an additional identifier + -- known use cases + -- - identified of the mobile phone for tickets linked with a specific phone (e.g. VDV standard) + -- ########################################################################################### + TokenType ::= SEQUENCE { + -- provider of the token + tokenProviderNum INTEGER OPTIONAL, + tokenProviderIA5 IA5String OPTIONAL, + + -- in case the provider has multiple tokens + tokenSpecification IA5String OPTIONAL, + token OCTET STRING + } + + -- ########################################################################################### + -- TicketLinkType is used to define a link from the ticket in the bar code to another ticket + -- (requirement from Eurail) + -- use cases + -- - DB Alleo (open ticket + reservation) + -- - reservation of trailer and car carriage and traveller reservation + -- - link between open ticket and bicycle reservations or pass + -- - open ticket and vouchers for meals + -- ########################################################################################### + TicketLinkType ::= SEQUENCE { + + -- data to reference the external ticket + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + issuerName UTF8String OPTIONAL, -- name of the issuer + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- type of linked ticket + ticketType TicketType DEFAULT openTicket, + + -- type of link + linkMode LinkMode DEFAULT issuedTogether + ,... + } + + -- ############################################################################################ + -- code table used fort station codes + -- defines the code table used e.g. to define station code + -- - stationUIC = station codes as used in UIC leaflet 108.1 for open tickets + -- - stationUICReservation = station codes as used in Reservation leaflets 918.1 and 108.2 + -- ############################################################################################ + + CodeTableType ::= ENUMERATED { + -- standard UIC station code from MERITS (UIC country code + 5 digit local code) + stationUIC (0), + -- standard UIC station code for reservation + stationUICReservation (1), + -- future standard ERA station code + stationERA (2), + -- local carrier code list + -- e.g. in case of stations / stops of non-railways stops (city trafic) + localCarrierStationCodeTable (3), + + -- non standard code to be used within the issuer eco system only + -- not applicable for multi carrier travel documents + -- or in case issuer and carrier are different + proprietaryIssuerStationCodeTable (4) + + } + + + ServiceType ::= ENUMERATED { + seat (0), + couchette (1), + berth (2), + carcarriage (3) + } + + + PassengerType ::= ENUMERATED { + adult (0), + senior (1), + child (2), + youth (3), + dog (4), + bicycle (5), + freeAddonPassenger (6), + freeAddonChild (7) + ,... + } + + TicketType ::= ENUMERATED { + openTicket (0), + pass (1), + reservation (2), + carCarriageReservation (3) + ,... + } + + LinkMode ::= ENUMERATED { + issuedTogether (0), + onlyValidInCombination (1) + ,... + } + + + -- #################################################################################### + -- place data corresponding to leaflet 918.1 + -- placeString = place number ranges in case of groups + -- #################################################################################### + PlacesType ::= SEQUENCE { + coach IA5String OPTIONAL, + + -- printable place string ("15-18, 21, 22" ) + placeString IA5String OPTIONAL, + + -- printable place description + placeDescription UTF8String OPTIONAL, + + -- individual places + placeIA5 SEQUENCE OF IA5String OPTIONAL, + placeNum SEQUENCE OF INTEGER (1..254) OPTIONAL + } + + PriceTypeType ::= ENUMERATED { + noPrice (0), + reservationFee (1), + supplement (2), + travelPrice (3) + } + + BerthTypeType ::= ENUMERATED { + single (0), + special (1), + double (2), + t2 (3), + t3 (4), + t4 (5) + } + + CompartmentGenderType ::= ENUMERATED { + unspecified (0), + family (1), + female (2), + male (3), + mixed (4) + ,... + } + + GenderType ::= ENUMERATED { + unspecified (0), + female (1), + male (2), + other (3) + ,... + } + + TravelClassType ::= ENUMERATED { + notApplicable (0), + first (1), + second (2), + tourist (3), + comfort (4), + premium (5), + business (6), + all (7) + ,... + } + + -- ######################################################################################## + -- sleeper compartment types corresponding to leaflet 918.1 + -- ######################################################################################## + BerthDetailData ::= SEQUENCE { + berthType BerthTypeType, + numberOfBerths INTEGER (1..999), + gender CompartmentGenderType DEFAULT family + ,... + } + + -- #################################################################################### + -- compartment details corresponding to leaflet 918.1 + -- #################################################################################### + CompartmentDetailsType ::= SEQUENCE { + coachType INTEGER (1..99) OPTIONAL, + compartmentType INTEGER (1..99) OPTIONAL, + specialAllocation INTEGER (1..99) OPTIONAL, + coachTypeDescr UTF8String OPTIONAL, + compartmentTypeDescr UTF8String OPTIONAL, + specialAllocationDescr UTF8String OPTIONAL, + position CompartmentPositionType DEFAULT unspecified + ,... + } + + + -- ##################################################################################### + -- luggage restrictions + -- the basis for these data is week: + -- SCIC mentions a maximum of three pieces of hand luggage but does not includes + -- a definition of hand luggaage + -- SCIC referes to special conditions on registered lluggage, but SCIC NRT does + -- not contain definitions on that and UIC 108.1 does not + -- contain data structures for luggage + -- - current THALYS luggage resrictions + -- ##################################################################################### + LuggageRestrictionType ::= SEQUENCE { + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxHandLuggagePieces INTEGER(0..99) DEFAULT 3, + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxNonHandLuggagePieces INTEGER(0..99) DEFAULT 1, + registeredLuggage SEQUENCE OF RegisteredLuggageType OPTIONAL + ,... + + } + + RegisteredLuggageType ::= SEQUENCE { + -- id of the additional registered luggage + registrationId IA5String OPTIONAL, + -- maximum weight in kg + maxWeight INTEGER (1..99) OPTIONAL, + -- sum of length with and height in cm + maxSize INTEGER (1..300) OPTIONAL + ,... + + } + + -- ########################################################################################## + -- generic type for geo coordinates + -- ########################################################################################## + GeoCoordinateType ::= SEQUENCE { + geoUnit GeoUnitType DEFAULT milliDegree, + coordinateSystem GeoCoordinateSystemType DEFAULT wgs84, + -- separate hemishpere flag reduces the data size + hemisphereLongitude HemisphereLongitudeType DEFAULT north, + -- separate hemishpere flag reduces the data size + hemisphereLatitude HemisphereLatitudeType DEFAULT east, + longitude INTEGER, + latitude INTEGER, + accuracy GeoUnitType OPTIONAL + } + + DeltaCoordinates ::= SEQUENCE { + -- logitude difference to a reference point + longitude INTEGER, + -- latitude difference to a reference point + latitude INTEGER + } + + GeoCoordinateSystemType ::= ENUMERATED { + wgs84 (0), -- WGS 84 standard system + grs80 (1) -- (outdated) GRS 80 coordinate system + } + + GeoUnitType ::= ENUMERATED { + microDegree (0), -- approx. 11 cm on earth surface + tenthmilliDegree (1), -- 1 / 100000 degree is approx. 1.1 meter on earth surface + milliDegree (2), -- approx 110 meter on earth surface + centiDegree (3), + deciDegree (4) + } + + HemisphereLongitudeType ::= ENUMERATED { + north (0), + south (1) + } + + HemisphereLatitudeType ::= ENUMERATED { + east (0), + west (1) + } + + LoadingDeckType ::= ENUMERATED { + unspecified (0), + upper (1), + lower (2) + } + + CompartmentPositionType ::= ENUMERATED { + unspecified (0), + upperLevel (1), + lowerLevel (2) + } + + RoofRackType ::= ENUMERATED { + norack (0), + roofRailing (1), + luggageRack (2), + skiRack (3), + boxRack (4), + rackWithOneBox (5), + rackWithTwoBoxes (6), + bicycleRack (7), + otherRack (8) + ,... + } + +END
\ No newline at end of file diff --git a/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.2.asn b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.2.asn new file mode 100644 index 0000000..634e9a9 --- /dev/null +++ b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.2.asn @@ -0,0 +1,1986 @@ +-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net) +-- Author: ClemensGantert +-- Created: Tue Aug 11 11:40:28 CEST 2015 +ASN-Module DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +-- imports and exports +-- EXPORTS ALL; + + +-- ############################################################################################## +-- # +-- # Final version 1.2 - value 12 in the UIC bar code version element +-- # (see element 2 in U_FLEX record definition in leaflet 918.9) +-- # +-- ############################################################################################## + + +-- ############################################################################################## +-- # +-- # Naming and encoding conventions +-- # +-- # Elements included as String and as Numeric values: +-- # Some elements are included in different formats to reduce the data size. +-- # These elements must be included only once. +-- # These elements are named with the same name and appendix +-- # Num (numeric values) +-- # IA5 (String values according to ASN IA5String (7Bit)) +-- # Example: +-- # trainNum - in case of a numeric train number +-- # trainIA5 - in case of a alphanumeric train Id +-- # +-- # +-- # RICS codes must be used to encode companies (issuer, product owner, ...) where available +-- # other codes are possible based on bilateran agreements +-- # the format is kept more flexible to cover upcomng extensions of the RICS code by ERA +-- # +-- # Stations can be coded using the UIC and upcoming ERA code lists. Proprietary codes are +-- # possible based on bilateral agreements. Format: 1..9999999 or alphanumeric without +-- # special character (IA5String) +-- # +-- # +-- # ! INTEGERS must not exceed the value of 9,223,372,036,854,775,807 (64 bit) even in case +-- # ! they are unrestricted!!! +-- # ! +-- # ! Some elements like ReferenceNum or cardIdNum are defined as an unrestricted integer. +-- # ! Unlike other numerical values the cardIdNum and referenceNum can be larger than a usual 32 bit Integer +-- # ! Some ASN.1 implementation tools are limited to 32 bit integers which is too small. +-- # ! Please ensure to use a tool capable of dealing with larger numbers. +-- # +-- # BOOLEAN is always non optional +-- # +-- # Encoding of time: +-- # time is encoded as the number of minutes of the day 0 = 00:00, 1440 = 24:00, +-- # time data elements end with "time" in their name +-- # +-- # Encoding of date: +-- # ......................................................................................................... +-- # The issuing date is given in UTC, but some other date values are given in local time where the exact time zone is not known. +-- # +-- # For local dates the date is associated with the corresponding location: +-- # e.g.: +-- # valid from date -> location where the journey starts +-- # valid until date -> location where the journey covered by the ticket ends +-- # +-- # there could be rare cases where this is does not rovide a unique interpretation: +-- # e.g. open ticket or pass without start and end location for a collection of zones or countries with different time zones. +-- # in these cases the fare conditions must clarify the rules for these cases (e.g. by allowing to use the +-- # ticket a few hours after the end of validity). +-- # +-- # If these date values are given as the number of days from the issuing date the following rule applies: +-- # +-- # The difference in days is calculated by ignoring the time zone information. +-- # +-- # example 1: (31.12.2017 23:05 UTC == 01.01.2018 00:05 CET) : +-- # issuing date (UTC): 31.12.2017 23:05 +-- # local date (CET): 01.01.2018 00:05 +-- # -> difference in days = 1 +-- # +-- # example 1: (1.1.2018 22:05 UTC == 01.01.2018 23:05 CET) : +-- # issuing date (UTC): 31.12.2017 22:05 +-- # local date (CET): 01.01.2018 23:05 +-- # -> difference in days = 0 +-- # +-- # the day difference could become -1 although this can happen for localtions in America or New Zeeland only. +-- # +-- # implementation example: +-- # +-- # public static Long getDateDifference(Date issuingDate, Date localDate) { +-- # +-- # if (issuingDate == null || localDate == null) return null; +-- # +-- # Calendar issuingCal = Calendar.getInstance(); +-- # issuingCal.clear(); +-- # issuingCal.setTime(issuingDate); +-- # issuingCal.setTimeZone(TimeZone.getTimeZone("UTC")); +-- # issuingCal.set(Calendar.HOUR_OF_DAY, 0); +-- # issuingCal.set(Calendar.MINUTE, 0); +-- # issuingCal.set(Calendar.SECOND, 0); +-- # issuingCal.set(Calendar.MILLISECOND, 0); +-- # +-- # Calendar fromCal = Calendar.getInstance(); +-- # fromCal.clear(); +-- # fromCal.setTime(localDate); +-- # fromCal.setTimeZone(TimeZone.getTimeZone("UTC")); +-- # fromCal.set(Calendar.HOUR_OF_DAY, 0); +-- # fromCal.set(Calendar.MINUTE, 0); +-- # fromCal.set(Calendar.SECOND, 0); +-- # fromCal.set(Calendar.MILLISECOND, 0); +-- # +-- # long diff = localDate.getTime() - issuingDate.getTime(); +-- # long dayDiff = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); +-- # +-- # return new Long(dayDiff); +-- # +-- # } +-- # +-- # public static Date getLocalDateFromDifference(Date issuingDate, int diff , Long time ) { +-- # +-- # if (issuingDate == null) return null; +-- # +-- # Calendar cal = Calendar.getInstance(); +-- # cal.clear(); +-- # cal.setTime(issuingDate); +-- # cal.add(Calendar.DAY_OF_YEAR, diff); +-- # +-- # if (time != null) { +-- # int hours = time.intValue() / 60; +-- # int minutes = time.intValue() - hours * 60; +-- # cal.set(Calendar.HOUR_OF_DAY, hours); +-- # cal.set(Calendar.MINUTE,minutes); +-- # } +-- # +-- # return cal.getTime(); +-- # +-- # } +-- # +-- # +-- # ASN.1 Extensions: +-- # +-- # The specification makes use of extension (",..."). +-- # These extesions might be defined in future versions of the UIC specification +-- # Implementations must support the extension feature of ASN.1, at least they must be able to ignore extensions while decoding the data +-- # ASN.1 extensions will be defined by UIC. It is not allowed to define bilateral extensions. +-- # +-- # Bilateral Extensions: +-- # Bilateral extensions can be included in the data element "ExtensionData". +-- # +-- # +-- # +-- ######################################################################################### + + +-- ############################################################################################ + + +-- type assignments + + -- ######################################################################################### + -- the basic entry point of the data structure + -- the data include: + -- -issuer informations + -- -the details of the transport document + -- -informations required for the control process + -- -informations on the travelers independent from the transport document + -- -proprietary extensions + -- + -- ########################################################################################## + UicRailTicketData ::= SEQUENCE { + -- data specific to the issuer + issuingDetail IssuingData, + + -- data on the travelers + travelerDetail TravelerData OPTIONAL, + + -- data of the transport document + -- more than one document to be used on bilateral agreement only + transportDocument SEQUENCE OF DocumentData OPTIONAL, + + -- data specific to support the ticket control process + controlDetail ControlData OPTIONAL, + + -- proprietary data defined bilaterally + extension SEQUENCE OF ExtensionData OPTIONAL + ,... + } + + + + -- ########################################################################################### + -- the choice on the different transport documents that can be included in the bar code data: + -- - reservation of seat / couchette or berths (IRT, RES, BOA) + -- - reservation of car carriage (VET) + -- - open ticket (NRT including NRT group ticket) (NRT, GRT, SUP, UPD, COI) + -- - Rail passes (including Eurail, Interail and local passes) (RPT) + -- - Voucher (TRV) + -- - Customer Cards (including bonus cards and reduction cards) + -- - counter marks issued for group tickets + -- - parking ground tickets + -- - FIP tickets + -- - station access / station passage tickets + -- - proprietary documents as an extension + -- ############################################################################################ + DocumentData ::= SEQUENCE { + + -- token + -- specific id to be exchanged with the ticket (e.g. id of the phone in case of tickets linked to a phone) + token TokenType OPTIONAL, + + -- choice of the ticket + ticket CHOICE + { + + -- Reservation (without car carriage) (IRT and RES) + reservation ReservationData, + + -- Reservation of car carriage + carCarriageReservation CarCarriageReservationData, + + -- open ticket specification (NRT) + openTicket OpenTicketData, + + -- pass specification (RPT) including Eurail and Interrail + pass PassData, + + -- voucher + voucher VoucherData, + + -- customer card either to identify a customer and / or to provide reductions + customerCard CustomerCardData, + + -- countermark to accompagny a group ticket + counterMark CountermarkData, + + -- car parking slot + parkingGround ParkingGroundData, + + -- FIP duty ticket + fipTicket FIPTicketData, + + -- ticket to pass the gates at a station + stationPassage StationPassageData, + + -- proprietary data defined bilaterally + extension ExtensionData, + + -- delay confirmation + delayConfirmation DelayConfirmation + + ,... + } + ,... + } + + -- ######################################################################################## + -- confirmation of the delay of a train + -- + -- ######################################################################################## + DelayConfirmation ::= SEQUENCE { + + -- reference of the delay confirmation + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- train number of the delayed train - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date of the delayed train in local time + -- number of year + departureYear INTEGER (2016..2269) OPTIONAL, + -- number of the day in the year (1.1. = 1) + departureDay INTEGER (1..366) OPTIONAL, + departureTime INTEGER (0..1440) OPTIONAL, + + -- station where the delay became relevant + stationCodeTable CodeTableType DEFAULT stationUIC, + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- delay in minutes at the mentioned station + delay INTEGER (1..999), + + -- indication that the train was cancelled + trainCancelled BOOLEAN, + + -- type of confirmation provided + confirmationType ConfirmationType DEFAULT travelerDelayConfirmation, + + -- affected original ticket(s) + affectedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- info text + infoText UTF8String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + ConfirmationType ::= ENUMERATED { + trainDelayConfirmation (0), -- confirmation of train delay, whether the traveler was on board in unconfirmed + travelerDelayConfirmation (1), -- confirmation that the traveler was on board of the delayed train + trainLinkedTicketDelay (2) -- confirmation that a ticket linked to the delayed train was issued + ,... + } + + + -- ######################################################################################## + -- Details of the issuer and the issue of the ticket + -- - details on the issuer + -- - indication of test tickets (specimen) + -- - payment details: method of payment, currency + -- - proprietary PNR of the issuer to be used to identify the sale within + -- the issuers ecosystem + -- - web link to display more information for the customer + -- - proprietary extension data + -- ######################################################################################## + IssuingData ::= SEQUENCE { + + -- provider of the signature (RICS code) + securityProviderNum INTEGER (1..32000) OPTIONAL, + securityProviderIA5 IA5String OPTIONAL, + + -- issuer of the transport document if the issuer is different from the security provider + -- (RICS code) + issuerNum INTEGER (1..32000) OPTIONAL, + issuerIA5 IA5String OPTIONAL, + + -- issuing time stamp in UTC + -- number of year + issuingYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + issuingDay INTEGER (1..366), + -- The number of the minutes of issue might be used in case of account + -- based ticketing whith a delay of n minutes for the replication of central + -- booking data to the control devices (e.g. at SBB) + -- The time can be compared with the last synchronization time of + -- the control device + issuingTime INTEGER (0..1440) OPTIONAL, + + -- name of the issuer (E.g. short name mentioned in RICS code table) + issuerName UTF8String OPTIONAL, + + -- specimen indicates a test specimen not valid for travelling + specimen BOOLEAN, + + -- secure paper indicates that this barcode is issued with a secure paper ticket + -- to ensure the uniqueness of the ticket. This allows to use the same control + -- procedure as for e-tickets also for anonymous tickets + -- the double use of the ticket is in this case excluded by the secure paper + securePaperTicket BOOLEAN, + + -- indicates that the ticket is valid for traveling or still needs activation + activated BOOLEAN, + + -- currency of the price: ISO4217 currency codes + currency IA5String (SIZE(3)) DEFAULT "EUR", + + -- fraction of the prices included + currencyFract INTEGER (1..3) DEFAULT 2, + + -- PNR used by the issuer to identify the document + issuerPNR IA5String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL, + + -- location of sale in case of a sale on board of a train + -- numeric train number or aphanumeric id of the train where the ticket was sold + issuedOnTrainNum INTEGER OPTIONAL, + issuedOnTrainIA5 IA5String OPTIONAL, + -- line number + issuedOnLine INTEGER OPTIONAL, + + -- point oof sale + pointOfSale GeoCoordinateType OPTIONAL + ,... + } + + -- ################################################################################### + -- data supporting the control process + -- - list of items which the travelder can use to identify himself or the unique + -- usage of the ticket + -- (card ids, parts or identity card numbers, credit card numbers,..) + -- - hints on the validation to be made on board + -- + -- ################################################################################### + ControlData ::= SEQUENCE { + + -- cards that can be used to identify the ticket holder + identificationByCardReference SEQUENCE OF CardReferenceType OPTIONAL, + + -- idcard id must be checked to identify the traveler + identificationByIdCard BOOLEAN, + + -- passport id must be checked to identify the traveler + identificationByPassportId BOOLEAN, + + -- other items which could be used to identify the ticket holder + -- (for future use, code list to be defined) + identificationItem INTEGER OPTIONAL, + + -- validation of the passport is required (e.g. in case of Eurail) + passportValidationRequired BOOLEAN, + + -- online validation of the ticket required + onlineValidationRequired BOOLEAN, + + -- percentage of the tickets to be validated in more detail + -- (i.e. via online check or detailed checks lateron) + randomDetailedValidationRequired INTEGER (0..99) OPTIONAL, + + -- manual validation of the traveler age required (in case of reductions) + ageCheckRequired BOOLEAN, + + -- manual validation of the travelers reduction card required (in case of reductions) + reductionCardCheckRequired BOOLEAN, + + -- controler info text + infoText UTF8String OPTIONAL, + + -- additional tickets that should be controlled + includedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################ + -- Traveler data + -- these data do not include tariff details of the booked tariffs, + -- tariff data are included in the transport document details and might + -- have a reference to the traveler defined here. + -- - personal data of the travellers + -- - the index of the list can be used to identify the + -- traveler within other contexts (e.g. in assigned tariffs) + -- ################################################################################ + TravelerData ::= SEQUENCE { + -- traveler list + traveler SEQUENCE OF TravelerType OPTIONAL, + + -- ISO 639-1 coding of the language preferred for the traveler / ticket holder + preferredLanguage IA5String (SIZE(2)) OPTIONAL, + + -- name of the group in case of a group ticket + groupName UTF8String OPTIONAL + ,... + } + + -- #################################################################################### + -- the following part contains the different transport document specifications + -- #################################################################################### + + + -- #################################################################################### + -- reservations of seats , couchettes and berths + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- - information on trach an dplafoorm where the coach stops + -- - additional second coach for large groups + -- #################################################################################### + ReservationData ::= SEQUENCE { + + -- train number - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date in local time + -- number of the days calculated from the issuing date + departureDate INTEGER (-1..370) DEFAULT 0, + + -- reservation reference according ton 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code to be used as standard) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (0..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + -- service code list from 918.1 (seat couchette,..) + service ServiceType DEFAULT seat, + + -- code table used to encode stations + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + -- origin station code + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + -- destination station code + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + -- origin station name + fromStationNameUTF8 UTF8String OPTIONAL, + + -- destination station name + toStationNameUTF8 UTF8String OPTIONAL, + + -- departure time + departureTime INTEGER (0..1440), + + -- arrival date and time in local time + -- number of days counted from the departure date + arrivalDate INTEGER (0..20) DEFAULT 0, + arrivalTime INTEGER (0..1440) OPTIONAL, + + -- responsible carriers on the route + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- travel class + classCode TravelClassType DEFAULT second, + + -- service level code list from 918.1 + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- places + places PlacesType OPTIONAL, + + -- additional places in a second coach + additionalPlaces PlacesType OPTIONAL, + + --bicycle places + bicyclePlaces PlacesType OPTIONAL, + + -- compartment details (open space, wheelchair,..) + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- number of persons on the ticket without place numbers (on IRT) + numberOfOverbooked INTEGER (0..200) DEFAULT 0, + + -- description of berths + berth SEQUENCE OF BerthDetailData OPTIONAL, + + -- tariffs included (Adult, Children,... ) + tariff SEQUENCE OF TariffType OPTIONAL, + + -- type of the price (supplement,... ) + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + -- type of supplement - code list from 018.1 + typeOfSupplement INTEGER (0..9) DEFAULT 0, + + numberOfSupplements INTEGER (0..200) DEFAULT 0, + + -- luggage restrictions and registered luggage + -- in case the luggage restrictions are general and do not depend on the + -- ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + infoText UTF8String OPTIONAL, + + + -- bilaterally agreed proprietary extension + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################# + -- details on the VAT included to be used in after sale processes + -- ################################################################################# + VatDetailType ::= SEQUENCE { + + -- ISO 3166 numeric country code + country INTEGER (1..999), + + -- 1/10th of a percent + percentage INTEGER (0..999), + + -- amount of VAT, the currency and the currency fraction is included in the issuing data + amount INTEGER OPTIONAL, + + -- european tax id of the company paying VAT + vatId IA5String OPTIONAL + + } + + + -- ################################################################################# + -- reservations of car carriage + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- ################################################################################# + CarCarriageReservationData ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + + -- loading / unloading of the car in local date and time + -- number of the days calculated from the issuing date + beginLoadingDate INTEGER (-1..370) DEFAULT 0, + + beginLoadingTime INTEGER (0..1440) OPTIONAL, + endLoadingTime INTEGER (0..1440) OPTIONAL, + + -- reservation reference according on 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (1..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + coach IA5String OPTIONAL, + place IA5String OPTIONAL, + + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- description of the car + numberPlate IA5String, + trailerPlate IA5String OPTIONAL, + carCategory INTEGER (0..9), + boatCategory INTEGER (0..6) OPTIONAL, + textileRoof BOOLEAN, + roofRackType RoofRackType DEFAULT norack, + + -- heigth of a roof rack in cm + roofRackHeight INTEGER (0..99) OPTIONAL, + + -- number of boats on a rack + attachedBoats INTEGER (0..2) OPTIONAL, + + -- number of biycles on a rack + attachedBicycles INTEGER (0..4) OPTIONAL, + + -- number of surf boards on a rack + attachedSurfboards INTEGER (0..5) OPTIONAL, + + -- reference to an entry on the loading list + loadingListEntry INTEGER (0..999) OPTIONAL, + loadingDeck LoadingDeckType DEFAULT upper, + + -- responsible carriers on the route (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + tariff TariffType, + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + + -- ##################################################################################### + -- data for open tickets (NRT and group tickets) + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- - additional data based on 108.1 with some extensions as 108.1 + -- does not provide well structured data, + -- especially concerning regional validity + -- + -- ##################################################################################### + + OpenTicketData ::= SEQUENCE { + + -- reference must be given either in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- to support other ticket content (e.g. VDV, UTPF, VÖV, CALYPSO) + -- issuer code using the default code table of the product owner + extIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the product owner + issuerAutorizationId INTEGER OPTIONAL, + + -- ticket includes the return trip + returnIncluded BOOLEAN, + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- return route description + -- the return route description can be omitted if it is identical to the + -- inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- temporal validity data in local time of the location where the jouney starts + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 1 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- servicelevel code according to leaflet 918.1 to encode other products + -- (e.g. PREMIUM, ...) + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- carriers involved in the transport (RICS codes) + -- the indication of carriers is mandatory on international routes, + -- they can be listed here but can also be included in viaDetails + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + + -- list of service brands for which the ticket is valid + -- in case the included service brands are listed all other brands are excluded + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- list of service brands for which the ticket is not valid + -- service brand: code list https://uic.org/service-brand-code-list + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + + -- additional included open tickets + -- e.g. to include local city traffic on parts of a the route + includedAddOns SEQUENCE OF IncludedOpenTicketType OPTIONAL, + + -- in case the luggage restrictions are general and do not depend + -- on the ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + + + extension ExtensionData OPTIONAL + ,... + } + + + + -- #################################################################################### + -- data for passes + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- #################################################################################### + PassData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- type of the pass, code list provided by the product owner + -- in case of Eurail: + -- 1 = Interrail + -- 2 = Eurail + -- 3 = Eurail Global (all countries) + passType INTEGER (1..250) OPTIONAL, + + -- literal name of the pass + passDescription UTF8String OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- begin of validity + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- end of validity + -- number of days from valid from day, 0 = valid on valid-from-date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- additional validity periods and excluded time ranges + validityPeriodDetails ValidityPeriodDetailType OPTIONAL, + + -- max number of days of validity in case the valid from day is open + numberOfValidityDays INTEGER (0..370) OPTIONAL, + + -- max number of possible trips to be activated + numberOfPossibleTrips INTEGER (1..250) OPTIONAL, + numberOfDaysOfTravel INTEGER (1..250) OPTIONAL, + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included countries, code table according to UIC leaflet 918.2 + countries SEQUENCE OF INTEGER (1..250) OPTIONAL, + + -- included carriers (RICS codes) + includedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + includedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- excluded carriers (RICS codes) + excludedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- region description to cover local zones + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + ValidityPeriodDetailType ::= SEQUENCE { + validityPeriod SEQUENCE OF ValidityPeriodType OPTIONAL, + excludedTimeRange SEQUENCE OF TimeRangeType OPTIONAL + } + + ValidityPeriodType ::= SEQUENCE { + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid from day, 0 = valid on valid from date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL + } + + TimeRangeType ::= SEQUENCE { + fromTime INTEGER (0..1440), + untilTime INTEGER (0..1440) + } + + -- ###################################################################################### + -- data for vouchers + -- included are quite basic further study is required + -- ###################################################################################### + VoucherData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- begin of validity in UTC + -- number of year + validFromYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370), + -- end of validity + -- number of year + validUntilYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370), + + value INTEGER DEFAULT 0, + + -- type of the voucher, code list defined by the product owner + type INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + -- ################################################################################### + -- data for FIP tickets + -- included are data from the FIP ticket layout, + -- ################################################################################### + FIPTicketData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- first day of validity in UTC + --- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + -- last day of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + + -- activated days: list of days for which the ticket is valid + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- number of travel days allowed + numberOfTravelDays INTEGER (1..200), + includesSupplements BOOLEAN, + + -- travel class + classCode TravelClassType DEFAULT second, + extension ExtensionData OPTIONAL + ,... + } + + -- ##################################################################################### + -- data station passage and access + -- ticket used to enter, exit or pass a station without travelling by train. + -- E.g. for staff working in a station. + -- ##################################################################################### + StationPassageData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + productName UTF8String OPTIONAL, + + -- code table used to encode he stations + stationCodeTable CodeTableType DEFAULT stationUIC, + -- list of station where the passage is allowed + stationNum SEQUENCE OF INTEGER OPTIONAL, + stationIA5 SEQUENCE OF IA5String OPTIONAL, + -- station names + stationNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- list of areas in a station where the access is allowed + areaCodeNum SEQUENCE OF INTEGER OPTIONAL, + areaCodeIA5 SEQUENCE OF IA5String OPTIONAL, + -- area names + areaNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- begin of validity in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700), + validFromTime INTEGER (0..1440) OPTIONAL, + -- end of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- number of days for station passage in case the number of days + -- is limited and less that the validity period + numberOfDaysValid INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - ÖBB requirements on card data + -- - DB Bahncard as HandyTicket + -- note: customer data are included in the traveler data structure + -- ###################################################################################### + CustomerCardData ::= SEQUENCE { + + -- customer details + -- optional, as there might be an anonymous cards + customer TravelerType OPTIONAL, + + -- card id might be numerical or alphanumerical + cardIdIA5 IA5String OPTIONAL, + cardIdNum INTEGER OPTIONAL, + + -- valid from date in UTC + -- number of year + validFromYear INTEGER (2016..2269), + --- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370) OPTIONAL, + + --- number of year from valid from year onwards + validUntilYear INTEGER (0..250) DEFAULT 0, + --- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370) OPTIONAL, + + classCode TravelClassType OPTIONAL, + + -- code of the card type code list defined by the issuer + cardType INTEGER (1..1000) OPTIONAL, + + -- readable description of the card type + cardTypeDescr UTF8String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- readable customer status "e.g. gold", + customerStatusDescr IA5String OPTIONAL, + + -- list of included services, + -- 1 = Rail Plus + -- 2 = access to launch + -- > 50 code list of the issuer + includedServices SEQUENCE OF INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - DB parking ground reservation + -- ####################################################################################### + ParkingGroundData ::= SEQUENCE { + + -- booking reference + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + parkingGroundId IA5String, + + -- parking date in local date time + -- number of days from the issuing date + fromParkingDate INTEGER (-1..370), + -- number of days from the from parking date in case it is different from that date + toParkingDate INTEGER (0..370) DEFAULT 0, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- code needed to access the parking lot + accessCode IA5String OPTIONAL, + + location UTF8String, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the parking ground is associated with a station + stationNum INTEGER OPTIONAL, + stationIA5 UTF8String OPTIONAL, + + specialInformation UTF8String OPTIONAL, + entryTrack UTF8String OPTIONAL, + numberPlate IA5String OPTIONAL, + + price INTEGER OPTIONAL, + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + + extension ExtensionData OPTIONAL + ,... + } + + -- ####################################################################### + -- data for countermarks issued with group tickets + -- included are data from: + -- - version 3 bar code (leaflet 918.2) + -- - printed layout (leaflet 918.2) + -- ######################################################################## + CountermarkData ::= SEQUENCE { + + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- reference of the group ticket + ticketReferenceIA5 IA5String OPTIONAL, + ticketReferenceNum INTEGER OPTIONAL, + + -- sequential number of the countermark + numberOfCountermark INTEGER (1..200), + -- total number of countermarks + totalOfCountermarks INTEGER (1..200), + -- name of the group + groupName UTF8String, + + + stationCodeTable CodeTableType DEFAULT stationUIC, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + + -- ticket includes the return trip + returnIncluded BOOLEAN, + -- retrurn route description + -- can be omitted if it is identical to the inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- local date + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- valid carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + + -- ########################################################################################### + -- generic non standard extension element + -- the generic non - standard element contains: + -- - an extension id to distinguish different extensions + -- - the extension data as binary data + -- proprietary extensions are by definition proprietary. This standard provides + -- the means to identify these extensions + -- within the data and to skip these data. + -- the evaluation of these data and the unique identification of the extensions + -- via the extension id is in the + -- responsibility of the railways which use these extensions. + -- ########################################################################################### + ExtensionData ::= SEQUENCE { + extensionId IA5String, + extensionData OCTET STRING + } + + -- ############################################################################################ + -- type definitions + -- ############################################################################################ + + -- ############################################################################################# + -- included open ticke for a part of the travel (e.g. local city trafic) + -- - data identically already included in the covering open ticket do not need to be + -- repeated here + -- - main source are the data required for included regional and city traffic tickets + -- ############################################################################################# + IncludedOpenTicketType ::= SEQUENCE { + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- issuer code using the default code table of the product owner (today used e.g. by VDV) + externalIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the poroduct owner (today used e.g. by VDV) + issuerAutorizationId INTEGER OPTIONAL, + + -- regional validity data + stationCodeTable CodeTableType DEFAULT stationUIC, + -- specification of the ordered sequence of valid regions, ordered in the direction of travel + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- temporal validity data in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + + validFromTime INTEGER (0..1440) OPTIONAL, + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + + -- travel class to be given in case it differs from the class of the main ticket + classCode TravelClassType OPTIONAL, + -- servicelevel code according to leaflet 918.1 to encode other products (e.g. PREMIUM, ...) + -- to be provided in case it differs from the main ticket + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- valid carriers (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- tariff data for open tickets + -- information included are: + -- - number of passengers + -- - optionally a link to the traveler data + -- ####################################################################################### + TariffType ::= SEQUENCE { + + -- number of passengers using the tariff + numberOfPassengers INTEGER (1..200) DEFAULT 1, + + -- type indication youth, adult, senior,.. + passengerType PassengerType OPTIONAL, + + -- age restrictions of the tariff + ageBelow INTEGER (1..64) OPTIONAL, + ageAbove INTEGER (1..128) OPTIONAL, + + + -- named traveler list + -- link to the traveler in case the travelers have to be named (e.g. Eurail passes) + -- the number indicates the position in the traveler list starting from 1 + travelerid SEQUENCE OF INTEGER (0..254) OPTIONAL, + + -- restriction on country of residence + -- this tariff is restricted by the country of residence given in the traveler data + -- (e.g. Eurail tickets are not valid in the contry of residence) + restrictedToCountryOfResidence BOOLEAN, + + -- section in case the tariff applies to a part of the route only + restrictedToRouteSection RouteSectionType OPTIONAL, + + -- details on series according to lesaflet 108.1 + seriesDataDetails SeriesDetailType OPTIONAL, + + -- tariff code + tariffIdNum INTEGER OPTIONAL, + tariffIdIA5 IA5String OPTIONAL, + + -- tariff description + tariffDesc UTF8String OPTIONAL, + + -- reduction cards applied (incl. dicount cards, loaylty cards relevant for the tariff) + reductionCard SEQUENCE OF CardReferenceType OPTIONAL + ,... + } + + SeriesDetailType ::= SEQUENCE { + + -- data related to tariffs based on series according UIC leaflet 108.1 + -- supplying carrier according to UIC leaflet 108.1 (RICS code) + supplyingCarrier INTEGER (1..32000) OPTIONAL, + + -- offer identifier of the carrier according to UIC leaflet 108.1 + offerIdentification INTEGER (1..99) OPTIONAL, + + -- series of the carrier according to UIC leaflet 108.1 + series INTEGER OPTIONAL + } + + + RouteSectionType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + } + + + -- ####################################################################################### + -- customer card reference + -- ####################################################################################### + CardReferenceType ::= SEQUENCE { + + -- issuer of the card + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + cardIssuerNum INTEGER (1..32000) OPTIONAL, + cardIssuerIA5 IA5String OPTIONAL, + + cardIdNum INTEGER OPTIONAL, + cardIdIA5 IA5String OPTIONAL, + + -- Name of the card e.g. "VISA-CARD" + cardName UTF8String OPTIONAL, + + -- type of the card, code list defined by the issuer + cardType INTEGER OPTIONAL, + + -- in case only the leading part of the card number is provided + leadingCardIdNum INTEGER OPTIONAL, + leadingCardIdIA5 IA5String OPTIONAL, + + + -- in case only the trailing part of the card number is provided + trailingCardIdNum INTEGER OPTIONAL, + trailingCardIdIA5 IA5String OPTIONAL + + ,... + } + + -- ####################################################################################### + -- traveler data + -- - traveler data might contain all traveler details which are independent + -- from the type of travel document + -- e.g. it can include the date of birth as this is part of the traveler + -- but not the indication "Senior" as this is tariff dependent + -- + -- ####################################################################################### + TravelerType ::= SEQUENCE { + + firstName UTF8String OPTIONAL, + secondName UTF8String OPTIONAL, + lastName UTF8String OPTIONAL, + idCard IA5String OPTIONAL, + passportId IA5String OPTIONAL, + title IA5String (SIZE(1..3)) OPTIONAL, + gender GenderType OPTIONAL, + + -- customer id might be numerical or alphanumerical + customerIdIA5 IA5String OPTIONAL, + customerIdNum INTEGER OPTIONAL, + + -- date of birth + -- number of year + yearOfBirth INTEGER (1901..2155) OPTIONAL, + -- number of the day in the year (1.1. = 1) + dayOfBirth INTEGER (0..370) OPTIONAL, + + -- indicates the ticket holder/group leader in case of groups + ticketHolder BOOLEAN, + + passengerType PassengerType OPTIONAL, + + passengerWithReducedMobility BOOLEAN OPTIONAL, + + -- country of residence (numeric ISO country code) + -- to be used in case there product restrictions on the country of residence (e.g. Eurail passes) + countryOfResidence INTEGER (1..999) OPTIONAL, + + countryOfPassport INTEGER (1..999) OPTIONAL, + countryOfIdCard INTEGER (1..999) OPTIONAL, + + status SEQUENCE OF CustomerStatusType OPTIONAL + ,... + } + + CustomerStatusType ::= SEQUENCE { + + -- compagny providing the status, default is the issuer + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + statusProviderNum INTEGER (1..32000) OPTIONAL, + statusProviderIA5 IA5String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- customer status "gold" + customerStatusDescr IA5String OPTIONAL + } + + + ReturnRouteDescriptionType ::= SEQUENCE { + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validReturnRegionDesc UTF8String OPTIONAL, + + -- specification of the ordered sequence of valid regions for the return trip + validReturnRegion SEQUENCE OF RegionalValidityType OPTIONAL + ,... + + } + + -- ###################################################################################### + -- regional validity of an open ticket + -- specification of the regional validity. + -- ###################################################################################### + + RegionalValidityType ::= CHOICE { + trainLink TrainLinkType, + viaStations ViaStationType, + zones ZoneType, + lines LineType, + polygone PolygoneType + ,... + } + + + + -- ####################################################################################### + -- train link data + -- includes a restriction of an open ticket valid only on a specific train + -- and date on a part of the route + -- ####################################################################################### + TrainLinkType ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- local date at the station where the train link starts + -- days from the issuing date onwards + travelDate INTEGER (-1..370), + departureTime INTEGER (0..1440), -- time in minutes + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + + } + + + + -- ###################################################################################### + -- regional validity using a set of lines + -- - based on data used in regional city trafic enviromnemnts + -- ###################################################################################### + LineType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + -- ids of the valid lines known by the local carriers in that zone + lineId SEQUENCE OF INTEGER OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey + -- starting from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional city transport + -- code list of the local carrier + city INTEGER (1..9999999) OPTIONAL, + + -- binary encoding of zones, encoding speciofication provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL + ,... + } + + + -- ################################################################################# + -- regional validity in a zone + -- - based on data used in regional city trafic enviromnemnts + -- ################################################################################# + ZoneType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey starting + -- from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional + -- city transport code list of the local carrier + city INTEGER OPTIONAL, + + -- ids of the valid zones known by the local carriers in that zone + zoneId SEQUENCE OF INTEGER OPTIONAL, + + -- binary encoding of zones, encoding specification provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL, + + -- EU NUTS code for a region + nutsCode IA5String OPTIONAL + ,... + } + + + -- ################################################################################## + -- via station + -- includes a description of of the route by via stations. + -- Via stations follow the description in leaflet 108.1: + -- via stations can e mandatory to pass (but there does not need to be a + -- train stop at this stations): visible route description: "*station*" + -- there can be a list of alternative routes: + -- visible route description: "*(station1/station2)*" + -- there can also be alternative routes: + -- "*(station1*station2/station3*station4)*" although the + -- definition in 108.2 is not very precice on this option + -- ################################################################################### + ViaStationType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- mandatory via station + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- list of alternative routes, one of these has to be taken + alternativeRoutes SEQUENCE OF ViaStationType OPTIONAL, + + -- list of stations along the route + route SEQUENCE OF ViaStationType OPTIONAL, + border BOOLEAN, + + -- carrier responsible for the transport starting at this station (RICS-Code) + -- in case the carrier is included here it might be omitted + -- in the carrier list of the region data + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- the route id as series number as defined in 108.1 data + seriesId INTEGER OPTIONAL, + + -- route id of the route code list defined by the carrier on that route + routeId INTEGER OPTIONAL + ,... + } + + + PolygoneType ::= SEQUENCE { + firstEdge GeoCoordinateType, + edges SEQUENCE OF DeltaCoordinates + } + + + -- ########################################################################################### + -- TokenType provides an additional identifier + -- known use cases + -- - identified of the mobile phone for tickets linked with a specific phone (e.g. VDV standard) + -- ########################################################################################### + TokenType ::= SEQUENCE { + -- provider of the token + tokenProviderNum INTEGER OPTIONAL, + tokenProviderIA5 IA5String OPTIONAL, + + -- in case the provider has multiple tokens + tokenSpecification IA5String OPTIONAL, + token OCTET STRING + } + + -- ########################################################################################### + -- TicketLinkType is used to define a link from the ticket in the bar code to another ticket + -- (requirement from Eurail) + -- use cases + -- - DB Alleo (open ticket + reservation) + -- - reservation of trailer and car carriage and traveller reservation + -- - link between open ticket and bicycle reservations or pass + -- - open ticket and vouchers for meals + -- ########################################################################################### + TicketLinkType ::= SEQUENCE { + + -- data to reference the external ticket + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + issuerName UTF8String OPTIONAL, -- name of the issuer + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- type of linked ticket + ticketType TicketType DEFAULT openTicket, + + -- type of link + linkMode LinkMode DEFAULT issuedTogether + ,... + } + + -- ############################################################################################ + -- code table used fort station codes + -- defines the code table used e.g. to define station code + -- - stationUIC = station codes as used in UIC leaflet 108.1 for open tickets + -- - stationUICReservation = station codes as used in Reservation leaflets 918.1 and 108.2 + -- ############################################################################################ + + CodeTableType ::= ENUMERATED { + -- standard UIC station code from MERITS (UIC country code + 5 digit local code) + stationUIC (0), + -- standard UIC station code for reservation + stationUICReservation (1), + -- future standard ERA station code + stationERA (2), + -- local carrier code list + -- e.g. in case of stations / stops of non-railways stops (city trafic) + localCarrierStationCodeTable (3), + + -- non standard code to be used within the issuer eco system only + -- not applicable for multi carrier travel documents + -- or in case issuer and carrier are different + proprietaryIssuerStationCodeTable (4) + + } + + + ServiceType ::= ENUMERATED { + seat (0), + couchette (1), + berth (2), + carcarriage (3) + } + + + PassengerType ::= ENUMERATED { + adult (0), + senior (1), + child (2), + youth (3), + dog (4), + bicycle (5), + freeAddonPassenger (6), + freeAddonChild (7) + ,... + } + + TicketType ::= ENUMERATED { + openTicket (0), + pass (1), + reservation (2), + carCarriageReservation (3) + ,... + } + + LinkMode ::= ENUMERATED { + issuedTogether (0), + onlyValidInCombination (1) + ,... + } + + + -- #################################################################################### + -- place data corresponding to leaflet 918.1 + -- placeString = place number ranges in case of groups + -- #################################################################################### + PlacesType ::= SEQUENCE { + coach IA5String OPTIONAL, + + -- printable place string ("15-18, 21, 22" ) + placeString IA5String OPTIONAL, + + -- printable place description + placeDescription UTF8String OPTIONAL, + + -- individual places + placeIA5 SEQUENCE OF IA5String OPTIONAL, + placeNum SEQUENCE OF INTEGER (1..254) OPTIONAL + } + + PriceTypeType ::= ENUMERATED { + noPrice (0), + reservationFee (1), + supplement (2), + travelPrice (3) + } + + BerthTypeType ::= ENUMERATED { + single (0), + special (1), + double (2), + t2 (3), + t3 (4), + t4 (5) + } + + CompartmentGenderType ::= ENUMERATED { + unspecified (0), + family (1), + female (2), + male (3), + mixed (4) + ,... + } + + GenderType ::= ENUMERATED { + unspecified (0), + female (1), + male (2), + other (3) + ,... + } + + TravelClassType ::= ENUMERATED { + notApplicable (0), + first (1), + second (2), + tourist (3), + comfort (4), + premium (5), + business (6), + all (7) + ,... + } + + -- ######################################################################################## + -- sleeper compartment types corresponding to leaflet 918.1 + -- ######################################################################################## + BerthDetailData ::= SEQUENCE { + berthType BerthTypeType, + numberOfBerths INTEGER (1..999), + gender CompartmentGenderType DEFAULT family + ,... + } + + -- #################################################################################### + -- compartment details corresponding to leaflet 918.1 + -- #################################################################################### + CompartmentDetailsType ::= SEQUENCE { + coachType INTEGER (1..99) OPTIONAL, + compartmentType INTEGER (1..99) OPTIONAL, + specialAllocation INTEGER (1..99) OPTIONAL, + coachTypeDescr UTF8String OPTIONAL, + compartmentTypeDescr UTF8String OPTIONAL, + specialAllocationDescr UTF8String OPTIONAL, + position CompartmentPositionType DEFAULT unspecified + ,... + } + + + -- ##################################################################################### + -- luggage restrictions + -- the basis for these data is week: + -- SCIC mentions a maximum of three pieces of hand luggage but does not includes + -- a definition of hand luggaage + -- SCIC referes to special conditions on registered lluggage, but SCIC NRT does + -- not contain definitions on that and UIC 108.1 does not + -- contain data structures for luggage + -- - current THALYS luggage resrictions + -- ##################################################################################### + LuggageRestrictionType ::= SEQUENCE { + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxHandLuggagePieces INTEGER(0..99) DEFAULT 3, + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxNonHandLuggagePieces INTEGER(0..99) DEFAULT 1, + registeredLuggage SEQUENCE OF RegisteredLuggageType OPTIONAL + ,... + + } + + RegisteredLuggageType ::= SEQUENCE { + -- id of the additional registered luggage + registrationId IA5String OPTIONAL, + -- maximum weight in kg + maxWeight INTEGER (1..99) OPTIONAL, + -- sum of length with and height in cm + maxSize INTEGER (1..300) OPTIONAL + ,... + + } + + -- ########################################################################################## + -- generic type for geo coordinates + -- ########################################################################################## + GeoCoordinateType ::= SEQUENCE { + geoUnit GeoUnitType DEFAULT milliDegree, + coordinateSystem GeoCoordinateSystemType DEFAULT wgs84, + -- separate hemishpere flag reduces the data size + hemisphereLongitude HemisphereLongitudeType DEFAULT north, + -- separate hemishpere flag reduces the data size + hemisphereLatitude HemisphereLatitudeType DEFAULT east, + longitude INTEGER, + latitude INTEGER, + accuracy GeoUnitType OPTIONAL + } + + DeltaCoordinates ::= SEQUENCE { + -- logitude difference to a reference point + longitude INTEGER, + -- latitude difference to a reference point + latitude INTEGER + } + + GeoCoordinateSystemType ::= ENUMERATED { + wgs84 (0), -- WGS 84 standard system + grs80 (1) -- (outdated) GRS 80 coordinate system + } + + GeoUnitType ::= ENUMERATED { + microDegree (0), -- approx. 11 cm on earth surface + tenthmilliDegree (1), -- 1 / 100000 degree is approx. 1.1 meter on earth surface + milliDegree (2), -- approx 110 meter on earth surface + centiDegree (3), + deciDegree (4) + } + + HemisphereLongitudeType ::= ENUMERATED { + north (0), + south (1) + } + + HemisphereLatitudeType ::= ENUMERATED { + east (0), + west (1) + } + + LoadingDeckType ::= ENUMERATED { + unspecified (0), + upper (1), + lower (2) + } + + CompartmentPositionType ::= ENUMERATED { + unspecified (0), + upperLevel (1), + lowerLevel (2) + } + + RoofRackType ::= ENUMERATED { + norack (0), + roofRailing (1), + luggageRack (2), + skiRack (3), + boxRack (4), + rackWithOneBox (5), + rackWithTwoBoxes (6), + bicycleRack (7), + otherRack (8) + ,... + } + +END
\ No newline at end of file diff --git a/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.3.asn b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.3.asn new file mode 100644 index 0000000..6e5a486 --- /dev/null +++ b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation1.3.asn @@ -0,0 +1,2043 @@ +-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net) +-- Author: ClemensGantert +-- Created: Tue Aug 11 11:40:28 CEST 2015 +ASN-Module DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +-- imports and exports +-- EXPORTS ALL; + + +-- ############################################################################################## +-- # +-- # Final version 1.3 - value 1 in the UIC bar code version element +-- # (see element 2 in U_FLEX record definition in leaflet 918.9) +-- # +-- ############################################################################################## + + +-- ############################################################################################## +-- # +-- # Naming and encoding conventions +-- # +-- # Elements included as String and as Numeric values: +-- # Some elements are included in different formats to reduce the data size. +-- # These elements must be included only once. +-- # These elements are named with the same name and appendix +-- # Num (numeric values) +-- # IA5 (String values according to ASN IA5String (7Bit)) +-- # Example: +-- # trainNum - in case of a numeric train number +-- # trainIA5 - in case of a alphanumeric train Id +-- # +-- # +-- # RICS codes must be used to encode companies (issuer, product owner, ...) where available +-- # other codes are possible based on bilateral agreements +-- # the format is kept more flexible to cover upcoming extensions of the RICS code by ERA +-- # +-- # Stations can be coded using the UIC and upcoming ERA code lists. Proprietary codes are +-- # possible based on bilateral agreements. Format: 1..9999999 or alphanumeric without +-- # special character (IA5String) +-- # +-- # +-- # ! INTEGERS must not exceed the value of 9,223,372,036,854,775,807 (64 bit) even in case +-- # ! they are unrestricted!!! +-- # ! +-- # ! Some elements like ReferenceNum or cardIdNum are defined as an unrestricted integer. +-- # ! Unlike other numerical values the cardIdNum and referenceNum can be larger than a usual 32 bit Integer +-- # ! Some ASN.1 implementation tools are limited to 32 bit integers which is too small. +-- # ! Please ensure to use a tool capable of dealing with larger numbers. +-- # +-- # BOOLEAN is always non optional +-- # +-- # Encoding of time: +-- # time is encoded as the number of minutes of the day 0 = 00:00, 1440 = 24:00, +-- # time data elements end with "time" in their name +-- # +-- # Encoding of date: +-- # ......................................................................................................... +-- # The issuing date is given in UTC, but some other date values are given in local time where the exact time zone is not known. +-- # +-- # For local dates the date is associated with the corresponding location: +-- # e.g.: +-- # valid from date -> location where the journey starts +-- # valid until date -> location where the journey covered by the ticket ends +-- # +-- # there could be rare cases where this is does not rovide a unique interpretation: +-- # e.g. open ticket or pass without start and end location for a collection of zones or countries with different time zones. +-- # in these cases the fare conditions must clarify the rules for these cases (e.g. by allowing to use the +-- # ticket a few hours after the end of validity). +-- # +-- # If these date values are given as the number of days from the issuing date the following rule applies: +-- # +-- # The difference in days is calculated by ignoring the time zone information in the case no time zone offset is provided. +-- # +-- # example 1: (31.12.2017 23:05 UTC == 01.01.2018 00:05 CET) : +-- # issuing date (UTC): 31.12.2017 23:05 +-- # local date (CET): 01.01.2018 00:05 +-- # -> difference in days = 1 +-- # +-- # example 1: (1.1.2018 22:05 UTC == 01.01.2018 23:05 CET) : +-- # issuing date (UTC): 31.12.2017 22:05 +-- # local date (CET): 01.01.2018 23:05 +-- # -> difference in days = 0 +-- # +-- # the day difference could become -1 although this can happen for localtions in America or New Zeeland only. +-- # +-- # implementation example: +-- # +-- # public static Long getDateDifference(Date issuingDate, Date localDate) { +-- # +-- # if (issuingDate == null || localDate == null) return null; +-- # +-- # Calendar issuingCal = Calendar.getInstance(); +-- # issuingCal.clear(); +-- # issuingCal.setTime(issuingDate); +-- # issuingCal.setTimeZone(TimeZone.getTimeZone("UTC")); +-- # issuingCal.set(Calendar.HOUR_OF_DAY, 0); +-- # issuingCal.set(Calendar.MINUTE, 0); +-- # issuingCal.set(Calendar.SECOND, 0); +-- # issuingCal.set(Calendar.MILLISECOND, 0); +-- # +-- # Calendar fromCal = Calendar.getInstance(); +-- # fromCal.clear(); +-- # fromCal.setTime(localDate); +-- # fromCal.setTimeZone(TimeZone.getTimeZone("UTC")); +-- # fromCal.set(Calendar.HOUR_OF_DAY, 0); +-- # fromCal.set(Calendar.MINUTE, 0); +-- # fromCal.set(Calendar.SECOND, 0); +-- # fromCal.set(Calendar.MILLISECOND, 0); +-- # +-- # long diff = localDate.getTime() - issuingDate.getTime(); +-- # long dayDiff = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); +-- # +-- # return new Long(dayDiff); +-- # +-- # } +-- # +-- # public static Date getLocalDateFromDifference(Date issuingDate, int diff , Long time ) { +-- # +-- # if (issuingDate == null) return null; +-- # +-- # Calendar cal = Calendar.getInstance(); +-- # cal.clear(); +-- # cal.setTime(issuingDate); +-- # cal.add(Calendar.DAY_OF_YEAR, diff); +-- # +-- # if (time != null) { +-- # int hours = time.intValue() / 60; +-- # int minutes = time.intValue() - hours * 60; +-- # cal.set(Calendar.HOUR_OF_DAY, hours); +-- # cal.set(Calendar.MINUTE,minutes); +-- # } +-- # +-- # return cal.getTime(); +-- # +-- # } +-- # +-- # +-- # ASN.1 Extensions: +-- # +-- # The specification makes use of extension (",..."). +-- # These extesions might be defined in future versions of the UIC specification +-- # Implementations must support the extension feature of ASN.1, at least they must be able to ignore extensions while decoding the data +-- # ASN.1 extensions will be defined by UIC. It is not allowed to define bilateral extensions. +-- # +-- # Bilateral Extensions: +-- # Bilateral extensions can be included in the data element "ExtensionData". +-- # +-- # +-- # +-- ######################################################################################### + + +-- ############################################################################################ + + +-- type assignments + + -- ######################################################################################### + -- the basic entry point of the data structure + -- the data include: + -- -issuer informations + -- -the details of the transport document + -- -informations required for the control process + -- -informations on the travelers independent from the transport document + -- -proprietary extensions + -- + -- ########################################################################################## + UicRailTicketData ::= SEQUENCE { + -- data specific to the issuer + issuingDetail IssuingData, + + -- data on the travelers + travelerDetail TravelerData OPTIONAL, + + -- data of the transport document + -- more than one document to be used on bilateral agreement only + transportDocument SEQUENCE OF DocumentData OPTIONAL, + + -- data specific to support the ticket control process + controlDetail ControlData OPTIONAL, + + -- proprietary data defined bilaterally + extension SEQUENCE OF ExtensionData OPTIONAL + ,... + } + + + + -- ########################################################################################### + -- the choice on the different transport documents that can be included in the bar code data: + -- - reservation of seat / couchette or berths (IRT, RES, BOA) + -- - reservation of car carriage (VET) + -- - open ticket (NRT including NRT group ticket) (NRT, GRT, SUP, UPD, COI) + -- - Rail passes (including Eurail, Interail and local passes) (RPT) + -- - Voucher (TRV) + -- - Customer Cards (including bonus cards and reduction cards) + -- - counter marks issued for group tickets + -- - parking ground tickets + -- - FIP tickets + -- - station access / station passage tickets + -- - proprietary documents as an extension + -- ############################################################################################ + DocumentData ::= SEQUENCE { + + -- token + -- specific id to be exchanged with the ticket (e.g. id of the phone in case of tickets linked to a phone) + token TokenType OPTIONAL, + + -- choice of the ticket + ticket CHOICE + { + + -- Reservation (without car carriage) (IRT and RES) + reservation ReservationData, + + -- Reservation of car carriage + carCarriageReservation CarCarriageReservationData, + + -- open ticket specification (NRT) + openTicket OpenTicketData, + + -- pass specification (RPT) including Eurail and Interrail + pass PassData, + + -- voucher + voucher VoucherData, + + -- customer card either to identify a customer and / or to provide reductions + customerCard CustomerCardData, + + -- countermark to accompagny a group ticket + counterMark CountermarkData, + + -- car parking slot + parkingGround ParkingGroundData, + + -- FIP duty ticket + fipTicket FIPTicketData, + + -- ticket to pass the gates at a station + stationPassage StationPassageData, + + -- proprietary data defined bilaterally + extension ExtensionData, + + -- delay confirmation + delayConfirmation DelayConfirmation + + ,... + } + ,... + } + + -- ######################################################################################## + -- confirmation of the delay of a train + -- + -- ######################################################################################## + DelayConfirmation ::= SEQUENCE { + + -- reference of the delay confirmation + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- train number of the delayed train - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date of the delayed train in local time + -- number of year + departureYear INTEGER (2016..2269) OPTIONAL, + -- number of the day in the year (1.1. = 1) + departureDay INTEGER (1..366) OPTIONAL, + departureTime INTEGER (0..1440) OPTIONAL, + departureUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + -- station where the delay became relevant + stationCodeTable CodeTableType DEFAULT stationUIC, + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- delay in minutes at the mentioned station + delay INTEGER (1..999), + + -- indication that the train was cancelled + trainCancelled BOOLEAN, + + -- type of confirmation provided + confirmationType ConfirmationType DEFAULT travelerDelayConfirmation, + + -- affected original ticket(s) + affectedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- info text + infoText UTF8String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + ConfirmationType ::= ENUMERATED { + trainDelayConfirmation (0), -- confirmation of train delay, whether the traveler was on board in unconfirmed + travelerDelayConfirmation (1), -- confirmation that the traveler was on board of the delayed train + trainLinkedTicketDelay (2) -- confirmation that a ticket linked to the delayed train was issued + ,... + } + + + -- ######################################################################################## + -- Details of the issuer and the issue of the ticket + -- - details on the issuer + -- - indication of test tickets (specimen) + -- - payment details: method of payment, currency + -- - proprietary PNR of the issuer to be used to identify the sale within + -- the issuers ecosystem + -- - web link to display more information for the customer + -- - proprietary extension data + -- ######################################################################################## + IssuingData ::= SEQUENCE { + + -- provider of the signature (RICS code) + securityProviderNum INTEGER (1..32000) OPTIONAL, + securityProviderIA5 IA5String OPTIONAL, + + -- issuer of the transport document if the issuer is different from the security provider + -- (RICS code) + issuerNum INTEGER (1..32000) OPTIONAL, + issuerIA5 IA5String OPTIONAL, + + -- issuing time stamp in UTC + -- number of year + issuingYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + issuingDay INTEGER (1..366), + -- The number of the minutes of issue might be used in case of account + -- based ticketing whith a delay of n minutes for the replication of central + -- booking data to the control devices (e.g. at SBB) + -- The time can be compared with the last synchronization time of + -- the control device + issuingTime INTEGER (0..1440) OPTIONAL, + + -- name of the issuer (E.g. short name mentioned in RICS code table) + issuerName UTF8String OPTIONAL, + + -- specimen indicates a test specimen not valid for travelling + specimen BOOLEAN, + + -- secure paper indicates that this barcode is issued with a secure paper ticket + -- to ensure the uniqueness of the ticket. This allows to use the same control + -- procedure as for e-tickets also for anonymous tickets + -- the double use of the ticket is in this case excluded by the secure paper + securePaperTicket BOOLEAN, + + -- indicates that the ticket is valid for traveling or still needs activation + activated BOOLEAN, + + -- currency of the price: ISO4217 currency codes + currency IA5String (SIZE(3)) DEFAULT "EUR", + + -- fraction of the prices included + currencyFract INTEGER (1..3) DEFAULT 2, + + -- PNR used by the issuer to identify the document + issuerPNR IA5String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL, + + -- location of sale in case of a sale on board of a train + -- numeric train number or aphanumeric id of the train where the ticket was sold + issuedOnTrainNum INTEGER OPTIONAL, + issuedOnTrainIA5 IA5String OPTIONAL, + -- line number + issuedOnLine INTEGER OPTIONAL, + + -- point oof sale + pointOfSale GeoCoordinateType OPTIONAL + ,... + } + + -- ################################################################################### + -- data supporting the control process + -- - list of items which the travelder can use to identify himself or the unique + -- usage of the ticket + -- (card ids, parts or identity card numbers, credit card numbers,..) + -- - hints on the validation to be made on board + -- + -- ################################################################################### + ControlData ::= SEQUENCE { + + -- cards that can be used to identify the ticket holder + identificationByCardReference SEQUENCE OF CardReferenceType OPTIONAL, + + -- idcard id must be checked to identify the traveler + identificationByIdCard BOOLEAN, + + -- passport id must be checked to identify the traveler + identificationByPassportId BOOLEAN, + + -- other items which could be used to identify the ticket holder + -- (for future use, code list to be defined) + identificationItem INTEGER OPTIONAL, + + -- validation of the passport is required (e.g. in case of Eurail) + passportValidationRequired BOOLEAN, + + -- online validation of the ticket required + onlineValidationRequired BOOLEAN, + + -- percentage of the tickets to be validated in more detail + -- (i.e. via online check or detailed checks lateron) + randomDetailedValidationRequired INTEGER (0..99) OPTIONAL, + + -- manual validation of the traveler age required (in case of reductions) + ageCheckRequired BOOLEAN, + + -- manual validation of the travelers reduction card required (in case of reductions) + reductionCardCheckRequired BOOLEAN, + + -- controler info text + infoText UTF8String OPTIONAL, + + -- additional tickets that should be controlled + includedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################ + -- Traveler data + -- these data do not include tariff details of the booked tariffs, + -- tariff data are included in the transport document details and might + -- have a reference to the traveler defined here. + -- - personal data of the travellers + -- - the index of the list can be used to identify the + -- traveler within other contexts (e.g. in assigned tariffs) + -- ################################################################################ + TravelerData ::= SEQUENCE { + -- traveler list + traveler SEQUENCE OF TravelerType OPTIONAL, + + -- ISO 639-1 coding of the language preferred for the traveler / ticket holder + preferredLanguage IA5String (SIZE(2)) OPTIONAL, + + -- name of the group in case of a group ticket + groupName UTF8String OPTIONAL + ,... + } + + -- #################################################################################### + -- the following part contains the different transport document specifications + -- #################################################################################### + + + -- #################################################################################### + -- reservations of seats , couchettes and berths + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- - information on trach an dplafoorm where the coach stops + -- - additional second coach for large groups + -- #################################################################################### + ReservationData ::= SEQUENCE { + + -- train number - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date in local time + -- number of the days calculated from the issuing date + departureDate INTEGER (-1..370) DEFAULT 0, + + + -- reservation reference according ton 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code to be used as standard) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (0..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + -- service code list from 918.1 (seat couchette,..) + service ServiceType DEFAULT seat, + + -- code table used to encode stations + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + -- origin station code + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + -- destination station code + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + -- origin station name + fromStationNameUTF8 UTF8String OPTIONAL, + + -- destination station name + toStationNameUTF8 UTF8String OPTIONAL, + + -- departure time + departureTime INTEGER (0..1440), + departureUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- arrival date and time in local time + -- number of days counted from the departure date + arrivalDate INTEGER (0..20) DEFAULT 0, + arrivalTime INTEGER (0..1440) OPTIONAL, + arrivalUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omitted in case it is the same as for depature + + -- responsible carriers on the route + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- travel class + classCode TravelClassType DEFAULT second, + + -- service level code list from 918.1 + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- places + places PlacesType OPTIONAL, + + -- additional places in a second coach + additionalPlaces PlacesType OPTIONAL, + + --bicycle places + bicyclePlaces PlacesType OPTIONAL, + + -- compartment details (open space, wheelchair,..) + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- number of persons on the ticket without place numbers (on IRT) + numberOfOverbooked INTEGER (0..200) DEFAULT 0, + + -- description of berths + berth SEQUENCE OF BerthDetailData OPTIONAL, + + -- tariffs included (Adult, Children,... ) + tariff SEQUENCE OF TariffType OPTIONAL, + + -- type of the price (supplement,... ) + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + -- type of supplement - code list from 018.1 + typeOfSupplement INTEGER (0..9) DEFAULT 0, + + numberOfSupplements INTEGER (0..200) DEFAULT 0, + + -- luggage restrictions and registered luggage + -- in case the luggage restrictions are general and do not depend on the + -- ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + infoText UTF8String OPTIONAL, + + + -- bilaterally agreed proprietary extension + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################# + -- details on the VAT included to be used in after sale processes + -- ################################################################################# + VatDetailType ::= SEQUENCE { + + -- ISO 3166 numeric country code + country INTEGER (1..999), + + -- 1/10th of a percent + percentage INTEGER (0..999), + + -- amount of VAT, the currency and the currency fraction is included in the issuing data + amount INTEGER OPTIONAL, + + -- european tax id of the company paying VAT + vatId IA5String OPTIONAL + + } + + + -- ################################################################################# + -- reservations of car carriage + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- ################################################################################# + CarCarriageReservationData ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + + -- loading / unloading of the car in local date and time + -- number of the days calculated from the issuing date + beginLoadingDate INTEGER (-1..370) DEFAULT 0, + beginLoadingTime INTEGER (0..1440) OPTIONAL, + endLoadingTime INTEGER (0..1440) OPTIONAL, + loadingUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + -- reservation reference according on 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (1..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + coach IA5String OPTIONAL, + place IA5String OPTIONAL, + + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- description of the car + numberPlate IA5String, + trailerPlate IA5String OPTIONAL, + carCategory INTEGER (0..9), + boatCategory INTEGER (0..6) OPTIONAL, + textileRoof BOOLEAN, + roofRackType RoofRackType DEFAULT norack, + + -- heigth of a roof rack in cm + roofRackHeight INTEGER (0..99) OPTIONAL, + + -- number of boats on a rack + attachedBoats INTEGER (0..2) OPTIONAL, + + -- number of biycles on a rack + attachedBicycles INTEGER (0..4) OPTIONAL, + + -- number of surf boards on a rack + attachedSurfboards INTEGER (0..5) OPTIONAL, + + -- reference to an entry on the loading list + loadingListEntry INTEGER (0..999) OPTIONAL, + loadingDeck LoadingDeckType DEFAULT upper, + + -- responsible carriers on the route (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + tariff TariffType, + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + + -- ##################################################################################### + -- data for open tickets (NRT and group tickets) + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- - additional data based on 108.1 with some extensions as 108.1 + -- does not provide well structured data, + -- especially concerning regional validity + -- + -- ##################################################################################### + + OpenTicketData ::= SEQUENCE { + + -- reference must be given either in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- to support other ticket content (e.g. VDV, UTPF, VÖV, CALYPSO) + -- issuer code using the default code table of the product owner + extIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the product owner + issuerAutorizationId INTEGER OPTIONAL, + + -- ticket includes the return trip + returnIncluded BOOLEAN, + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- return route description + -- the return route description can be omitted if it is identical to the + -- inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- temporal validity data in local time of the location where the jouney starts + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 1 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- servicelevel code according to leaflet 918.1 to encode other products + -- (e.g. PREMIUM, ...) + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- carriers involved in the transport (RICS codes) + -- the indication of carriers is mandatory on international routes, + -- they can be listed here but can also be included in viaDetails + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + + -- list of service brands for which the ticket is valid + -- in case the included service brands are listed all other brands are excluded + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- list of service brands for which the ticket is not valid + -- service brand: code list https://uic.org/service-brand-code-list + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + + -- additional included open tickets + -- e.g. to include local city traffic on parts of a the route + includedAddOns SEQUENCE OF IncludedOpenTicketType OPTIONAL, + + -- in case the luggage restrictions are general and do not depend + -- on the ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + + + extension ExtensionData OPTIONAL + ,... + } + + + + -- #################################################################################### + -- data for passes + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- #################################################################################### + PassData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- type of the pass, code list provided by the product owner + -- in case of Eurail: + -- 1 = Interrail + -- 2 = Eurail + -- 3 = Eurail Global (all countries) + passType INTEGER (1..250) OPTIONAL, + + -- literal name of the pass + passDescription UTF8String OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- begin of validity (local time) + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- end of validity (local time) + -- number of days from valid from day, 0 = valid on valid-from-date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + + -- additional validity periods and excluded time ranges + validityPeriodDetails ValidityPeriodDetailType OPTIONAL, + + -- max number of days of validity in case the valid from day is open + numberOfValidityDays INTEGER (0..370) OPTIONAL, + + -- max number of possible trips to be activated + numberOfPossibleTrips INTEGER (1..250) OPTIONAL, + numberOfDaysOfTravel INTEGER (1..250) OPTIONAL, + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included countries, code table according to UIC leaflet 918.2 + countries SEQUENCE OF INTEGER (1..250) OPTIONAL, + + -- included carriers (RICS codes) + includedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + includedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- excluded carriers (RICS codes) + excludedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- region description to cover local zones + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + ValidityPeriodDetailType ::= SEQUENCE { + validityPeriod SEQUENCE OF ValidityPeriodType OPTIONAL, + excludedTimeRange SEQUENCE OF TimeRangeType OPTIONAL + } + + ValidityPeriodType ::= SEQUENCE { + -- number of days from issuing date (local date) + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- number of days from valid from day, 0 = valid on valid from date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + } + + TimeRangeType ::= SEQUENCE { + fromTime INTEGER (0..1440), + untilTime INTEGER (0..1440) + } + + -- ###################################################################################### + -- data for vouchers + -- included are quite basic further study is required + -- ###################################################################################### + VoucherData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- begin of validity in UTC + -- number of year + validFromYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370), + -- end of validity + -- number of year + validUntilYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370), + + value INTEGER DEFAULT 0, + + -- type of the voucher, code list defined by the product owner + type INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + -- ################################################################################### + -- data for FIP tickets + -- included are data from the FIP ticket layout, + -- ################################################################################### + FIPTicketData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- first day of validity in UTC + --- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + -- last day of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + + -- activated days: list of days for which the ticket is valid + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- number of travel days allowed + numberOfTravelDays INTEGER (1..200), + includesSupplements BOOLEAN, + + -- travel class + classCode TravelClassType DEFAULT second, + extension ExtensionData OPTIONAL + ,... + } + + -- ##################################################################################### + -- data station passage and access + -- ticket used to enter, exit or pass a station without travelling by train. + -- E.g. for staff working in a station. + -- ##################################################################################### + StationPassageData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + productName UTF8String OPTIONAL, + + -- code table used to encode he stations + stationCodeTable CodeTableType DEFAULT stationUIC, + -- list of station where the passage is allowed + stationNum SEQUENCE OF INTEGER OPTIONAL, + stationIA5 SEQUENCE OF IA5String OPTIONAL, + -- station names + stationNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- list of areas in a station where the access is allowed + areaCodeNum SEQUENCE OF INTEGER OPTIONAL, + areaCodeIA5 SEQUENCE OF IA5String OPTIONAL, + -- area names + areaNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- begin of validity in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700), + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- end of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + -- number of days for station passage in case the number of days + -- is limited and less that the validity period + numberOfDaysValid INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - ÖBB requirements on card data + -- - DB Bahncard as HandyTicket + -- note: customer data are included in the traveler data structure + -- ###################################################################################### + CustomerCardData ::= SEQUENCE { + + -- customer details + -- optional, as there might be an anonymous cards + customer TravelerType OPTIONAL, + + -- card id might be numerical or alphanumerical + cardIdIA5 IA5String OPTIONAL, + cardIdNum INTEGER OPTIONAL, + + -- valid from date in UTC + -- number of year + validFromYear INTEGER (2016..2269), + --- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370) OPTIONAL, + + --- number of year from valid from year onwards + validUntilYear INTEGER (0..250) DEFAULT 0, + --- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370) OPTIONAL, + + classCode TravelClassType OPTIONAL, + + -- code of the card type code list defined by the issuer + cardType INTEGER (1..1000) OPTIONAL, + + -- readable description of the card type + cardTypeDescr UTF8String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- readable customer status "e.g. gold", + customerStatusDescr IA5String OPTIONAL, + + -- list of included services, + -- 1 = Rail Plus + -- 2 = access to launch + -- > 50 code list of the issuer + includedServices SEQUENCE OF INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - DB parking ground reservation + -- ####################################################################################### + ParkingGroundData ::= SEQUENCE { + + -- booking reference + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + parkingGroundId IA5String, + + -- parking date in local date time + -- number of days from the issuing date + fromParkingDate INTEGER (-1..370), + -- number of days from the from parking date in case it is different from that date + untilParkingDate INTEGER (0..370) DEFAULT 0, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- code needed to access the parking lot + accessCode IA5String OPTIONAL, + + location UTF8String, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the parking ground is associated with a station + stationNum INTEGER OPTIONAL, + stationIA5 UTF8String OPTIONAL, + + specialInformation UTF8String OPTIONAL, + entryTrack UTF8String OPTIONAL, + numberPlate IA5String OPTIONAL, + + price INTEGER OPTIONAL, + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + + extension ExtensionData OPTIONAL + ,... + } + + -- ####################################################################### + -- data for countermarks issued with group tickets + -- included are data from: + -- - version 3 bar code (leaflet 918.2) + -- - printed layout (leaflet 918.2) + -- ######################################################################## + CountermarkData ::= SEQUENCE { + + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- reference of the group ticket + ticketReferenceIA5 IA5String OPTIONAL, + ticketReferenceNum INTEGER OPTIONAL, + + -- sequential number of the countermark + numberOfCountermark INTEGER (1..200), + -- total number of countermarks + totalOfCountermarks INTEGER (1..200), + -- name of the group + groupName UTF8String, + + + stationCodeTable CodeTableType DEFAULT stationUIC, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + + -- ticket includes the return trip + returnIncluded BOOLEAN, + -- retrurn route description + -- can be omitted if it is identical to the inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- local date + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + classCode TravelClassType DEFAULT second, + + -- valid carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + + -- ########################################################################################### + -- generic non standard extension element + -- the generic non - standard element contains: + -- - an extension id to distinguish different extensions + -- - the extension data as binary data + -- proprietary extensions are by definition proprietary. This standard provides + -- the means to identify these extensions + -- within the data and to skip these data. + -- the evaluation of these data and the unique identification of the extensions + -- via the extension id is in the + -- responsibility of the railways which use these extensions. + -- ########################################################################################### + ExtensionData ::= SEQUENCE { + extensionId IA5String, + extensionData OCTET STRING + } + + -- ############################################################################################ + -- type definitions + -- ############################################################################################ + + -- ############################################################################################# + -- included open ticke for a part of the travel (e.g. local city trafic) + -- - data identically already included in the covering open ticket do not need to be + -- repeated here + -- - main source are the data required for included regional and city traffic tickets + -- ############################################################################################# + IncludedOpenTicketType ::= SEQUENCE { + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- issuer code using the default code table of the product owner (today used e.g. by VDV) + externalIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the poroduct owner (today used e.g. by VDV) + issuerAutorizationId INTEGER OPTIONAL, + + -- regional validity data + stationCodeTable CodeTableType DEFAULT stationUIC, + -- specification of the ordered sequence of valid regions, ordered in the direction of travel + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- temporal validity data in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + -- travel class to be given in case it differs from the class of the main ticket + classCode TravelClassType OPTIONAL, + -- servicelevel code according to leaflet 918.1 to encode other products (e.g. PREMIUM, ...) + -- to be provided in case it differs from the main ticket + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- valid carriers (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- tariff data for open tickets + -- information included are: + -- - number of passengers + -- - optionally a link to the traveler data + -- ####################################################################################### + TariffType ::= SEQUENCE { + + -- number of passengers using the tariff + numberOfPassengers INTEGER (1..200) DEFAULT 1, + + -- type indication youth, adult, senior,.. + passengerType PassengerType OPTIONAL, + + -- age restrictions of the tariff + ageBelow INTEGER (1..64) OPTIONAL, + ageAbove INTEGER (1..128) OPTIONAL, + + + -- named traveler list + -- link to the traveler in case the travelers have to be named (e.g. Eurail passes) + -- the number indicates the position in the traveler list starting from 1 + travelerid SEQUENCE OF INTEGER (0..254) OPTIONAL, + + -- restriction on country of residence + -- this tariff is restricted by the country of residence given in the traveler data + -- (e.g. Eurail tickets are not valid in the contry of residence) + restrictedToCountryOfResidence BOOLEAN, + + -- section in case the tariff applies to a part of the route only + restrictedToRouteSection RouteSectionType OPTIONAL, + + -- details on series according to lesaflet 108.1 + seriesDataDetails SeriesDetailType OPTIONAL, + + -- tariff code + tariffIdNum INTEGER OPTIONAL, + tariffIdIA5 IA5String OPTIONAL, + + -- tariff description + tariffDesc UTF8String OPTIONAL, + + -- reduction cards applied (incl. dicount cards, loaylty cards relevant for the tariff) + reductionCard SEQUENCE OF CardReferenceType OPTIONAL + ,... + } + + SeriesDetailType ::= SEQUENCE { + + -- data related to tariffs based on series according UIC leaflet 108.1 + -- supplying carrier according to UIC leaflet 108.1 (RICS code) + supplyingCarrier INTEGER (1..32000) OPTIONAL, + + -- offer identifier of the carrier according to UIC leaflet 108.1 + offerIdentification INTEGER (1..99) OPTIONAL, + + -- series of the carrier according to UIC leaflet 108.1 + series INTEGER OPTIONAL + } + + + RouteSectionType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + } + + + -- ####################################################################################### + -- customer card reference + -- ####################################################################################### + CardReferenceType ::= SEQUENCE { + + -- issuer of the card + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + cardIssuerNum INTEGER (1..32000) OPTIONAL, + cardIssuerIA5 IA5String OPTIONAL, + + cardIdNum INTEGER OPTIONAL, + cardIdIA5 IA5String OPTIONAL, + + -- Name of the card e.g. "VISA-CARD" + cardName UTF8String OPTIONAL, + + -- type of the card, code list defined by the issuer + cardType INTEGER OPTIONAL, + + -- in case only the leading part of the card number is provided + leadingCardIdNum INTEGER OPTIONAL, + leadingCardIdIA5 IA5String OPTIONAL, + + + -- in case only the trailing part of the card number is provided + trailingCardIdNum INTEGER OPTIONAL, + trailingCardIdIA5 IA5String OPTIONAL + + ,... + } + + -- ####################################################################################### + -- traveler data + -- - traveler data might contain all traveler details which are independent + -- from the type of travel document + -- e.g. it can include the date of birth as this is part of the traveler + -- but not the indication "Senior" as this is tariff dependent + -- + -- ####################################################################################### + TravelerType ::= SEQUENCE { + + firstName UTF8String OPTIONAL, + secondName UTF8String OPTIONAL, + lastName UTF8String OPTIONAL, + idCard IA5String OPTIONAL, + passportId IA5String OPTIONAL, + title IA5String (SIZE(1..3)) OPTIONAL, + gender GenderType OPTIONAL, + + -- customer id might be numerical or alphanumerical + customerIdIA5 IA5String OPTIONAL, + customerIdNum INTEGER OPTIONAL, + + -- date of birth + -- number of year + yearOfBirth INTEGER (1901..2155) OPTIONAL, + -- number of the day in the year (1.1. = 1) + dayOfBirth INTEGER (0..370) OPTIONAL, + + -- indicates the ticket holder/group leader in case of groups + ticketHolder BOOLEAN, + + passengerType PassengerType OPTIONAL, + + passengerWithReducedMobility BOOLEAN OPTIONAL, + + -- country of residence (numeric ISO country code) + -- to be used in case there product restrictions on the country of residence (e.g. Eurail passes) + countryOfResidence INTEGER (1..999) OPTIONAL, + + countryOfPassport INTEGER (1..999) OPTIONAL, + countryOfIdCard INTEGER (1..999) OPTIONAL, + + status SEQUENCE OF CustomerStatusType OPTIONAL + ,... + } + + CustomerStatusType ::= SEQUENCE { + + -- compagny providing the status, default is the issuer + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + statusProviderNum INTEGER (1..32000) OPTIONAL, + statusProviderIA5 IA5String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- customer status "gold" + customerStatusDescr IA5String OPTIONAL + } + + + ReturnRouteDescriptionType ::= SEQUENCE { + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validReturnRegionDesc UTF8String OPTIONAL, + + -- specification of the ordered sequence of valid regions for the return trip + validReturnRegion SEQUENCE OF RegionalValidityType OPTIONAL + ,... + + } + + -- ###################################################################################### + -- regional validity of an open ticket + -- specification of the regional validity. + -- ###################################################################################### + + RegionalValidityType ::= CHOICE { + trainLink TrainLinkType, + viaStations ViaStationType, + zones ZoneType, + lines LineType, + polygone PolygoneType + ,... + } + + + + -- ####################################################################################### + -- train link data + -- includes a restriction of an open ticket valid only on a specific train + -- and date on a part of the route + -- ####################################################################################### + TrainLinkType ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- local date at the station where the train link starts + -- days from the issuing date onwards + travelDate INTEGER (-1..370), + departureTime INTEGER (0..1440), -- time in minutes + departureUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + + } + + + + -- ###################################################################################### + -- regional validity using a set of lines + -- - based on data used in regional city trafic enviromnemnts + -- ###################################################################################### + LineType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + -- ids of the valid lines known by the local carriers in that zone + lineId SEQUENCE OF INTEGER OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey + -- starting from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional city transport + -- code list of the local carrier + city INTEGER (1..9999999) OPTIONAL, + + -- binary encoding of zones, encoding speciofication provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL + ,... + } + + + -- ################################################################################# + -- regional validity in a zone + -- - based on data used in regional city trafic enviromnemnts + -- ################################################################################# + ZoneType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey starting + -- from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional + -- city transport code list of the local carrier + city INTEGER OPTIONAL, + + -- ids of the valid zones known by the local carriers in that zone + zoneId SEQUENCE OF INTEGER OPTIONAL, + + -- binary encoding of zones, encoding specification provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL, + + -- EU NUTS code for a region + nutsCode IA5String OPTIONAL + ,... + } + + + -- ################################################################################## + -- via station + -- includes a description of of the route by via stations. + -- Via stations follow the description in leaflet 108.1: + -- via stations can e mandatory to pass (but there does not need to be a + -- train stop at this stations): visible route description: "*station*" + -- there can be a list of alternative routes: + -- visible route description: "*(station1/station2)*" + -- there can also be alternative routes: + -- "*(station1*station2/station3*station4)*" although the + -- definition in 108.2 is not very precice on this option + -- ################################################################################### + ViaStationType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- mandatory via station + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- list of alternative routes, one of these has to be taken + alternativeRoutes SEQUENCE OF ViaStationType OPTIONAL, + + -- list of stations along the route + route SEQUENCE OF ViaStationType OPTIONAL, + border BOOLEAN, + + -- carrier responsible for the transport starting at this station (RICS-Code) + -- in case the carrier is included here it might be omitted + -- in the carrier list of the region data + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- the route id as series number as defined in 108.1 data + seriesId INTEGER OPTIONAL, + + -- route id of the route code list defined by the carrier on that route + routeId INTEGER OPTIONAL + ,... + } + + + PolygoneType ::= SEQUENCE { + firstEdge GeoCoordinateType, + edges SEQUENCE OF DeltaCoordinates + } + + + -- ########################################################################################### + -- TokenType provides an additional identifier + -- known use cases + -- - identified of the mobile phone for tickets linked with a specific phone (e.g. VDV standard) + -- ########################################################################################### + TokenType ::= SEQUENCE { + -- provider of the token + tokenProviderNum INTEGER OPTIONAL, + tokenProviderIA5 IA5String OPTIONAL, + + -- in case the provider has multiple tokens + tokenSpecification IA5String OPTIONAL, + token OCTET STRING + } + + -- ########################################################################################### + -- TicketLinkType is used to define a link from the ticket in the bar code to another ticket + -- (requirement from Eurail) + -- use cases + -- - DB Alleo (open ticket + reservation) + -- - reservation of trailer and car carriage and traveller reservation + -- - link between open ticket and bicycle reservations or pass + -- - open ticket and vouchers for meals + -- ########################################################################################### + TicketLinkType ::= SEQUENCE { + + -- data to reference the external ticket + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + issuerName UTF8String OPTIONAL, -- name of the issuer + + issuerPNR IA5String OPTIONAL, -- in case the ticket can also be identified via + -- the issuer PNR + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- type of linked ticket + ticketType TicketType DEFAULT openTicket, + + -- type of link + linkMode LinkMode DEFAULT issuedTogether + ,... + } + + -- ############################################################################################ + -- code table used fort station codes + -- defines the code table used e.g. to define station code + -- - stationUIC = station codes as used in UIC leaflet 108.1 for open tickets + -- - stationUICReservation = station codes as used in Reservation leaflets 918.1 and 108.2 + -- ############################################################################################ + + CodeTableType ::= ENUMERATED { + -- standard UIC station code from MERITS (UIC country code + 5 digit local code) + stationUIC (0), + -- standard UIC station code for reservation + stationUICReservation (1), + -- future standard ERA station code + stationERA (2), + -- local carrier code list + -- e.g. in case of stations / stops of non-railways stops (city trafic) + localCarrierStationCodeTable (3), + + -- non standard code to be used within the issuer eco system only + -- not applicable for multi carrier travel documents + -- or in case issuer and carrier are different + proprietaryIssuerStationCodeTable (4) + + } + + + ServiceType ::= ENUMERATED { + seat (0), + couchette (1), + berth (2), + carcarriage (3) + } + + + PassengerType ::= ENUMERATED { + adult (0), + senior (1), + child (2), + youth (3), + dog (4), + bicycle (5), + freeAddonPassenger (6), + freeAddonChild (7) + ,... + } + + TicketType ::= ENUMERATED { + openTicket (0), + pass (1), + reservation (2), + carCarriageReservation (3) + ,... + } + + LinkMode ::= ENUMERATED { + issuedTogether (0), + onlyValidInCombination (1) + ,... + } + + + -- #################################################################################### + -- place data corresponding to leaflet 918.1 + -- placeString = place number ranges in case of groups + -- #################################################################################### + PlacesType ::= SEQUENCE { + coach IA5String OPTIONAL, + + -- printable place string ("15-18, 21, 22" ) + placeString IA5String OPTIONAL, + + -- printable place description + placeDescription UTF8String OPTIONAL, + + -- individual places + placeIA5 SEQUENCE OF IA5String OPTIONAL, + placeNum SEQUENCE OF INTEGER (1..254) OPTIONAL + } + + PriceTypeType ::= ENUMERATED { + noPrice (0), + reservationFee (1), + supplement (2), + travelPrice (3) + } + + BerthTypeType ::= ENUMERATED { + single (0), + special (1), + double (2), + t2 (3), + t3 (4), + t4 (5) + } + + CompartmentGenderType ::= ENUMERATED { + unspecified (0), + family (1), + female (2), + male (3), + mixed (4) + ,... + } + + GenderType ::= ENUMERATED { + unspecified (0), + female (1), + male (2), + other (3) + ,... + } + + TravelClassType ::= ENUMERATED { + notApplicable (0), + first (1), + second (2), + tourist (3), + comfort (4), + premium (5), + business (6), + all (7) + ,... + } + + -- ######################################################################################## + -- sleeper compartment types corresponding to leaflet 918.1 + -- ######################################################################################## + BerthDetailData ::= SEQUENCE { + berthType BerthTypeType, + numberOfBerths INTEGER (1..999), + gender CompartmentGenderType DEFAULT family + ,... + } + + -- #################################################################################### + -- compartment details corresponding to leaflet 918.1 + -- #################################################################################### + CompartmentDetailsType ::= SEQUENCE { + coachType INTEGER (1..99) OPTIONAL, + compartmentType INTEGER (1..99) OPTIONAL, + specialAllocation INTEGER (1..99) OPTIONAL, + coachTypeDescr UTF8String OPTIONAL, + compartmentTypeDescr UTF8String OPTIONAL, + specialAllocationDescr UTF8String OPTIONAL, + position CompartmentPositionType DEFAULT unspecified + ,... + } + + + -- ##################################################################################### + -- luggage restrictions + -- the basis for these data is week: + -- SCIC mentions a maximum of three pieces of hand luggage but does not includes + -- a definition of hand luggaage + -- SCIC referes to special conditions on registered lluggage, but SCIC NRT does + -- not contain definitions on that and UIC 108.1 does not + -- contain data structures for luggage + -- - current THALYS luggage resrictions + -- ##################################################################################### + LuggageRestrictionType ::= SEQUENCE { + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxHandLuggagePieces INTEGER(0..99) DEFAULT 3, + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxNonHandLuggagePieces INTEGER(0..99) DEFAULT 1, + registeredLuggage SEQUENCE OF RegisteredLuggageType OPTIONAL + ,... + + } + + RegisteredLuggageType ::= SEQUENCE { + -- id of the additional registered luggage + registrationId IA5String OPTIONAL, + -- maximum weight in kg + maxWeight INTEGER (1..99) OPTIONAL, + -- sum of length with and height in cm + maxSize INTEGER (1..300) OPTIONAL + ,... + + } + + -- ########################################################################################## + -- generic type for geo coordinates + -- ########################################################################################## + GeoCoordinateType ::= SEQUENCE { + geoUnit GeoUnitType DEFAULT milliDegree, + coordinateSystem GeoCoordinateSystemType DEFAULT wgs84, + -- separate hemishpere flag reduces the data size + hemisphereLongitude HemisphereLongitudeType DEFAULT north, + -- separate hemishpere flag reduces the data size + hemisphereLatitude HemisphereLatitudeType DEFAULT east, + longitude INTEGER, + latitude INTEGER, + accuracy GeoUnitType OPTIONAL + } + + DeltaCoordinates ::= SEQUENCE { + -- logitude difference to a reference point + longitude INTEGER, + -- latitude difference to a reference point + latitude INTEGER + } + + GeoCoordinateSystemType ::= ENUMERATED { + wgs84 (0), -- WGS 84 standard system + grs80 (1) -- (outdated) GRS 80 coordinate system + } + + GeoUnitType ::= ENUMERATED { + microDegree (0), -- approx. 11 cm on earth surface + tenthmilliDegree (1), -- 1 / 100000 degree is approx. 1.1 meter on earth surface + milliDegree (2), -- approx 110 meter on earth surface + centiDegree (3), + deciDegree (4) + } + + HemisphereLongitudeType ::= ENUMERATED { + north (0), + south (1) + } + + HemisphereLatitudeType ::= ENUMERATED { + east (0), + west (1) + } + + LoadingDeckType ::= ENUMERATED { + unspecified (0), + upper (1), + lower (2) + } + + CompartmentPositionType ::= ENUMERATED { + unspecified (0), + upperLevel (1), + lowerLevel (2) + } + + RoofRackType ::= ENUMERATED { + norack (0), + roofRailing (1), + luggageRack (2), + skiRack (3), + boxRack (4), + rackWithOneBox (5), + rackWithTwoBoxes (6), + bicycleRack (7), + otherRack (8) + ,... + } + +END
\ No newline at end of file diff --git a/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation2.0.asn b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation2.0.asn new file mode 100644 index 0000000..e508798 --- /dev/null +++ b/src/org/uic/ticket/api/spec/uicBarcodeV1finalDelayConfirmation2.0.asn @@ -0,0 +1,2047 @@ +-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net) +-- Author: ClemensGantert +-- Created: Tue Aug 11 11:40:28 CEST 2015 +ASN-Module DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +-- imports and exports +-- EXPORTS ALL; + + +-- ############################################################################################## +-- # +-- # Final version 1.5 - value 1 in the UIC bar code version element +-- # (see element 2 in U_FLEX record definition in leaflet 918.9) +-- # changes +-- # - date of birth ..366 (no change of format) +-- # - date of arrival starting from -1 breaking change: displayed date from before change will nbe 1 day more +-- # +-- ############################################################################################## + + +-- ############################################################################################## +-- # +-- # Naming and encoding conventions +-- # +-- # Elements included as String and as Numeric values: +-- # Some elements are included in different formats to reduce the data size. +-- # These elements must be included only once. +-- # These elements are named with the same name and appendix +-- # Num (numeric values) +-- # IA5 (String values according to ASN IA5String (7Bit)) +-- # Example: +-- # trainNum - in case of a numeric train number +-- # trainIA5 - in case of a alphanumeric train Id +-- # +-- # +-- # RICS codes must be used to encode companies (issuer, product owner, ...) where available +-- # other codes are possible based on bilateral agreements +-- # the format is kept more flexible to cover upcoming extensions of the RICS code by ERA +-- # +-- # Stations can be coded using the UIC and upcoming ERA code lists. Proprietary codes are +-- # possible based on bilateral agreements. Format: 1..9999999 or alphanumeric without +-- # special character (IA5String) +-- # +-- # +-- # ! INTEGERS must not exceed the value of 9,223,372,036,854,775,807 (64 bit) even in case +-- # ! they are unrestricted!!! +-- # ! +-- # ! Some elements like ReferenceNum or cardIdNum are defined as an unrestricted integer. +-- # ! Unlike other numerical values the cardIdNum and referenceNum can be larger than a usual 32 bit Integer +-- # ! Some ASN.1 implementation tools are limited to 32 bit integers which is too small. +-- # ! Please ensure to use a tool capable of dealing with larger numbers. +-- # +-- # BOOLEAN is always non optional +-- # +-- # Encoding of time: +-- # time is encoded as the number of minutes of the day 0 = 00:00, 1440 = 24:00, +-- # time data elements end with "time" in their name +-- # +-- # Encoding of date: +-- # ......................................................................................................... +-- # The issuing date is given in UTC, but some other date values are given in local time where the exact time zone is not known. +-- # +-- # For local dates the date is associated with the corresponding location: +-- # e.g.: +-- # valid from date -> location where the journey starts +-- # valid until date -> location where the journey covered by the ticket ends +-- # +-- # there could be rare cases where this is does not rovide a unique interpretation: +-- # e.g. open ticket or pass without start and end location for a collection of zones or countries with different time zones. +-- # in these cases the fare conditions must clarify the rules for these cases (e.g. by allowing to use the +-- # ticket a few hours after the end of validity). +-- # +-- # If these date values are given as the number of days from the issuing date the following rule applies: +-- # +-- # The difference in days is calculated by ignoring the time zone information in the case no time zone offset is provided. +-- # +-- # example 1: (31.12.2017 23:05 UTC == 01.01.2018 00:05 CET) : +-- # issuing date (UTC): 31.12.2017 23:05 +-- # local date (CET): 01.01.2018 00:05 +-- # -> difference in days = 1 +-- # +-- # example 1: (1.1.2018 22:05 UTC == 01.01.2018 23:05 CET) : +-- # issuing date (UTC): 31.12.2017 22:05 +-- # local date (CET): 01.01.2018 23:05 +-- # -> difference in days = 0 +-- # +-- # the day difference could become -1 although this can happen for localtions in America or New Zeeland only. +-- # +-- # implementation example: +-- # +-- # public static Long getDateDifference(Date issuingDate, Date localDate) { +-- # +-- # if (issuingDate == null || localDate == null) return null; +-- # +-- # Calendar issuingCal = Calendar.getInstance(); +-- # issuingCal.clear(); +-- # issuingCal.setTime(issuingDate); +-- # issuingCal.setTimeZone(TimeZone.getTimeZone("UTC")); +-- # issuingCal.set(Calendar.HOUR_OF_DAY, 0); +-- # issuingCal.set(Calendar.MINUTE, 0); +-- # issuingCal.set(Calendar.SECOND, 0); +-- # issuingCal.set(Calendar.MILLISECOND, 0); +-- # +-- # Calendar fromCal = Calendar.getInstance(); +-- # fromCal.clear(); +-- # fromCal.setTime(localDate); +-- # fromCal.setTimeZone(TimeZone.getTimeZone("UTC")); +-- # fromCal.set(Calendar.HOUR_OF_DAY, 0); +-- # fromCal.set(Calendar.MINUTE, 0); +-- # fromCal.set(Calendar.SECOND, 0); +-- # fromCal.set(Calendar.MILLISECOND, 0); +-- # +-- # long diff = localDate.getTime() - issuingDate.getTime(); +-- # long dayDiff = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); +-- # +-- # return new Long(dayDiff); +-- # +-- # } +-- # +-- # public static Date getLocalDateFromDifference(Date issuingDate, int diff , Long time ) { +-- # +-- # if (issuingDate == null) return null; +-- # +-- # Calendar cal = Calendar.getInstance(); +-- # cal.clear(); +-- # cal.setTime(issuingDate); +-- # cal.add(Calendar.DAY_OF_YEAR, diff); +-- # +-- # if (time != null) { +-- # int hours = time.intValue() / 60; +-- # int minutes = time.intValue() - hours * 60; +-- # cal.set(Calendar.HOUR_OF_DAY, hours); +-- # cal.set(Calendar.MINUTE,minutes); +-- # } +-- # +-- # return cal.getTime(); +-- # +-- # } +-- # +-- # +-- # ASN.1 Extensions: +-- # +-- # The specification makes use of extension (",..."). +-- # These extesions might be defined in future versions of the UIC specification +-- # Implementations must support the extension feature of ASN.1, at least they must be able to ignore extensions while decoding the data +-- # ASN.1 extensions will be defined by UIC. It is not allowed to define bilateral extensions. +-- # +-- # Bilateral Extensions: +-- # Bilateral extensions can be included in the data element "ExtensionData". +-- # +-- # +-- # +-- ######################################################################################### + + +-- ############################################################################################ + + +-- type assignments + + -- ######################################################################################### + -- the basic entry point of the data structure + -- the data include: + -- -issuer informations + -- -the details of the transport document + -- -informations required for the control process + -- -informations on the travelers independent from the transport document + -- -proprietary extensions + -- + -- ########################################################################################## + UicRailTicketData ::= SEQUENCE { + -- data specific to the issuer + issuingDetail IssuingData, + + -- data on the travelers + travelerDetail TravelerData OPTIONAL, + + -- data of the transport document + -- more than one document to be used on bilateral agreement only + transportDocument SEQUENCE OF DocumentData OPTIONAL, + + -- data specific to support the ticket control process + controlDetail ControlData OPTIONAL, + + -- proprietary data defined bilaterally + extension SEQUENCE OF ExtensionData OPTIONAL + ,... + } + + + + -- ########################################################################################### + -- the choice on the different transport documents that can be included in the bar code data: + -- - reservation of seat / couchette or berths (IRT, RES, BOA) + -- - reservation of car carriage (VET) + -- - open ticket (NRT including NRT group ticket) (NRT, GRT, SUP, UPD, COI) + -- - Rail passes (including Eurail, Interail and local passes) (RPT) + -- - Voucher (TRV) + -- - Customer Cards (including bonus cards and reduction cards) + -- - counter marks issued for group tickets + -- - parking ground tickets + -- - FIP tickets + -- - station access / station passage tickets + -- - proprietary documents as an extension + -- ############################################################################################ + DocumentData ::= SEQUENCE { + + -- token + -- specific id to be exchanged with the ticket (e.g. id of the phone in case of tickets linked to a phone) + token TokenType OPTIONAL, + + -- choice of the ticket + ticket CHOICE + { + + -- Reservation (without car carriage) (IRT and RES) + reservation ReservationData, + + -- Reservation of car carriage + carCarriageReservation CarCarriageReservationData, + + -- open ticket specification (NRT) + openTicket OpenTicketData, + + -- pass specification (RPT) including Eurail and Interrail + pass PassData, + + -- voucher + voucher VoucherData, + + -- customer card either to identify a customer and / or to provide reductions + customerCard CustomerCardData, + + -- countermark to accompagny a group ticket + counterMark CountermarkData, + + -- car parking slot + parkingGround ParkingGroundData, + + -- FIP duty ticket + fipTicket FIPTicketData, + + -- ticket to pass the gates at a station + stationPassage StationPassageData, + + -- proprietary data defined bilaterally + extension ExtensionData, + + -- delay confirmation + delayConfirmation DelayConfirmation + + ,... + } + ,... + } + + -- ######################################################################################## + -- confirmation of the delay of a train + -- + -- ######################################################################################## + DelayConfirmation ::= SEQUENCE { + + -- reference of the delay confirmation + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- train number of the delayed train - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date of the delayed train in local time + -- number of year + departureYear INTEGER (2016..2269) OPTIONAL, + -- number of the day in the year (1.1. = 1) + departureDay INTEGER (1..366) OPTIONAL, + departureTime INTEGER (0..1440) OPTIONAL, + departureUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + -- station where the delay became relevant + stationCodeTable CodeTableType DEFAULT stationUIC, + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- delay in minutes at the mentioned station + delay INTEGER (1..999), + + -- indication that the train was cancelled + trainCancelled BOOLEAN, + + -- type of confirmation provided + confirmationType ConfirmationType DEFAULT travelerDelayConfirmation, + + -- affected original ticket(s) + affectedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- info text + infoText UTF8String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + ConfirmationType ::= ENUMERATED { + trainDelayConfirmation (0), -- confirmation of train delay, whether the traveler was on board in unconfirmed + travelerDelayConfirmation (1), -- confirmation that the traveler was on board of the delayed train + trainLinkedTicketDelay (2) -- confirmation that a ticket linked to the delayed train was issued + ,... + } + + + -- ######################################################################################## + -- Details of the issuer and the issue of the ticket + -- - details on the issuer + -- - indication of test tickets (specimen) + -- - payment details: method of payment, currency + -- - proprietary PNR of the issuer to be used to identify the sale within + -- the issuers ecosystem + -- - web link to display more information for the customer + -- - proprietary extension data + -- ######################################################################################## + IssuingData ::= SEQUENCE { + + -- provider of the signature (RICS code) + securityProviderNum INTEGER (1..32000) OPTIONAL, + securityProviderIA5 IA5String OPTIONAL, + + -- issuer of the transport document if the issuer is different from the security provider + -- (RICS code) + issuerNum INTEGER (1..32000) OPTIONAL, + issuerIA5 IA5String OPTIONAL, + + -- issuing time stamp in UTC + -- number of year + issuingYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + issuingDay INTEGER (1..366), + -- The number of the minutes of issue might be used in case of account + -- based ticketing whith a delay of n minutes for the replication of central + -- booking data to the control devices (e.g. at SBB) + -- The time can be compared with the last synchronization time of + -- the control device + issuingTime INTEGER (0..1440) OPTIONAL, + + -- name of the issuer (E.g. short name mentioned in RICS code table) + issuerName UTF8String OPTIONAL, + + -- specimen indicates a test specimen not valid for travelling + specimen BOOLEAN, + + -- secure paper indicates that this barcode is issued with a secure paper ticket + -- to ensure the uniqueness of the ticket. This allows to use the same control + -- procedure as for e-tickets also for anonymous tickets + -- the double use of the ticket is in this case excluded by the secure paper + securePaperTicket BOOLEAN, + + -- indicates that the ticket is valid for traveling or still needs activation + activated BOOLEAN, + + -- currency of the price: ISO4217 currency codes + currency IA5String (SIZE(3)) DEFAULT "EUR", + + -- fraction of the prices included + currencyFract INTEGER (1..3) DEFAULT 2, + + -- PNR used by the issuer to identify the document + issuerPNR IA5String OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL, + + -- location of sale in case of a sale on board of a train + -- numeric train number or aphanumeric id of the train where the ticket was sold + issuedOnTrainNum INTEGER OPTIONAL, + issuedOnTrainIA5 IA5String OPTIONAL, + -- line number + issuedOnLine INTEGER OPTIONAL, + + -- point oof sale + pointOfSale GeoCoordinateType OPTIONAL + ,... + } + + -- ################################################################################### + -- data supporting the control process + -- - list of items which the travelder can use to identify himself or the unique + -- usage of the ticket + -- (card ids, parts or identity card numbers, credit card numbers,..) + -- - hints on the validation to be made on board + -- + -- ################################################################################### + ControlData ::= SEQUENCE { + + -- cards that can be used to identify the ticket holder + identificationByCardReference SEQUENCE OF CardReferenceType OPTIONAL, + + -- idcard id must be checked to identify the traveler + identificationByIdCard BOOLEAN, + + -- passport id must be checked to identify the traveler + identificationByPassportId BOOLEAN, + + -- other items which could be used to identify the ticket holder + -- (for future use, code list to be defined) + identificationItem INTEGER OPTIONAL, + + -- validation of the passport is required (e.g. in case of Eurail) + passportValidationRequired BOOLEAN, + + -- online validation of the ticket required + onlineValidationRequired BOOLEAN, + + -- percentage of the tickets to be validated in more detail + -- (i.e. via online check or detailed checks lateron) + randomDetailedValidationRequired INTEGER (0..99) OPTIONAL, + + -- manual validation of the traveler age required (in case of reductions) + ageCheckRequired BOOLEAN, + + -- manual validation of the travelers reduction card required (in case of reductions) + reductionCardCheckRequired BOOLEAN, + + -- controler info text + infoText UTF8String OPTIONAL, + + -- additional tickets that should be controlled + includedTickets SEQUENCE OF TicketLinkType OPTIONAL, + + -- proprietary data defined bilaterally + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################ + -- Traveler data + -- these data do not include tariff details of the booked tariffs, + -- tariff data are included in the transport document details and might + -- have a reference to the traveler defined here. + -- - personal data of the travellers + -- - the index of the list can be used to identify the + -- traveler within other contexts (e.g. in assigned tariffs) + -- ################################################################################ + TravelerData ::= SEQUENCE { + -- traveler list + traveler SEQUENCE OF TravelerType OPTIONAL, + + -- ISO 639-1 coding of the language preferred for the traveler / ticket holder + preferredLanguage IA5String (SIZE(2)) OPTIONAL, + + -- name of the group in case of a group ticket + groupName UTF8String OPTIONAL + ,... + } + + -- #################################################################################### + -- the following part contains the different transport document specifications + -- #################################################################################### + + + -- #################################################################################### + -- reservations of seats , couchettes and berths + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- - information on trach an dplafoorm where the coach stops + -- - additional second coach for large groups + -- #################################################################################### + ReservationData ::= SEQUENCE { + + -- train number - numeric or alphanumeric + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- departure date in local time + -- number of the days calculated from the issuing date + departureDate INTEGER (-1..370) DEFAULT 0, + + + -- reservation reference according ton 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code to be used as standard) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (0..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + -- service code list from 918.1 (seat couchette,..) + service ServiceType DEFAULT seat, + + -- code table used to encode stations + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + -- origin station code + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + -- destination station code + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + -- origin station name + fromStationNameUTF8 UTF8String OPTIONAL, + + -- destination station name + toStationNameUTF8 UTF8String OPTIONAL, + + -- departure time + departureTime INTEGER (0..1440), + departureUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- arrival date and time in local time + -- number of days counted from the departure date + arrivalDate INTEGER (-1..20) DEFAULT 0, + arrivalTime INTEGER (0..1440) OPTIONAL, + arrivalUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omitted in case it is the same as for depature + + -- responsible carriers on the route + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- travel class + classCode TravelClassType DEFAULT second, + + -- service level code list from 918.1 + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- places + places PlacesType OPTIONAL, + + -- additional places in a second coach + additionalPlaces PlacesType OPTIONAL, + + --bicycle places + bicyclePlaces PlacesType OPTIONAL, + + -- compartment details (open space, wheelchair,..) + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- number of persons on the ticket without place numbers (on IRT) + numberOfOverbooked INTEGER (0..200) DEFAULT 0, + + -- description of berths + berth SEQUENCE OF BerthDetailData OPTIONAL, + + -- tariffs included (Adult, Children,... ) + tariff SEQUENCE OF TariffType OPTIONAL, + + -- type of the price (supplement,... ) + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + -- type of supplement - code list from 018.1 + typeOfSupplement INTEGER (0..9) DEFAULT 0, + + numberOfSupplements INTEGER (0..200) DEFAULT 0, + + -- luggage restrictions and registered luggage + -- in case the luggage restrictions are general and do not depend on the + -- ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + infoText UTF8String OPTIONAL, + + + -- bilaterally agreed proprietary extension + extension ExtensionData OPTIONAL + ,... + } + + -- ################################################################################# + -- details on the VAT included to be used in after sale processes + -- ################################################################################# + VatDetailType ::= SEQUENCE { + + -- ISO 3166 numeric country code + country INTEGER (1..999), + + -- 1/10th of a percent + percentage INTEGER (0..999), + + -- amount of VAT, the currency and the currency fraction is included in the issuing data + amount INTEGER OPTIONAL, + + -- european tax id of the company paying VAT + vatId IA5String OPTIONAL + + } + + + -- ################################################################################# + -- reservations of car carriage + -- included are the data defined in: + -- - leaflet 918.1 for reservation data exchange + -- - a few additional data currently used by some railways via different interfaces + -- ################################################################################# + CarCarriageReservationData ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + + -- loading / unloading of the car in local date and time + -- number of the days calculated from the issuing date + beginLoadingDate INTEGER (-1..370) DEFAULT 0, + beginLoadingTime INTEGER (0..1440) OPTIONAL, + endLoadingTime INTEGER (0..1440) OPTIONAL, + loadingUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + -- reservation reference according on 918.1 in case ade via Hermes + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + serviceBrand INTEGER (1..32000) OPTIONAL, + serviceBrandAbrUTF8 UTF8String OPTIONAL, + serviceBrandNameUTF8 UTF8String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUICReservation, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + coach IA5String OPTIONAL, + place IA5String OPTIONAL, + + compartmentDetails CompartmentDetailsType OPTIONAL, + + -- description of the car + numberPlate IA5String, + trailerPlate IA5String OPTIONAL, + carCategory INTEGER (0..9), + boatCategory INTEGER (0..6) OPTIONAL, + textileRoof BOOLEAN, + roofRackType RoofRackType DEFAULT norack, + + -- heigth of a roof rack in cm + roofRackHeight INTEGER (0..99) OPTIONAL, + + -- number of boats on a rack + attachedBoats INTEGER (0..2) OPTIONAL, + + -- number of biycles on a rack + attachedBicycles INTEGER (0..4) OPTIONAL, + + -- number of surf boards on a rack + attachedSurfboards INTEGER (0..5) OPTIONAL, + + -- reference to an entry on the loading list + loadingListEntry INTEGER (0..999) OPTIONAL, + loadingDeck LoadingDeckType DEFAULT upper, + + -- responsible carriers on the route (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + tariff TariffType, + priceType PriceTypeType DEFAULT travelPrice, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + + -- ##################################################################################### + -- data for open tickets (NRT and group tickets) + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- - additional data based on 108.1 with some extensions as 108.1 + -- does not provide well structured data, + -- especially concerning regional validity + -- + -- ##################################################################################### + + OpenTicketData ::= SEQUENCE { + + -- reference must be given either in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- to support other ticket content (e.g. VDV, UTPF, VÖV, CALYPSO) + -- issuer code using the default code table of the product owner + extIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the product owner + issuerAutorizationId INTEGER OPTIONAL, + + -- ticket includes the return trip + returnIncluded BOOLEAN, + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- return route description + -- the return route description can be omitted if it is identical to the + -- inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- temporal validity data in local time of the location where the jouney starts + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 1 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- servicelevel code according to leaflet 918.1 to encode other products + -- (e.g. PREMIUM, ...) + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- carriers involved in the transport (RICS codes) + -- the indication of carriers is mandatory on international routes, + -- they can be listed here but can also be included in viaDetails + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + + -- list of service brands for which the ticket is valid + -- in case the included service brands are listed all other brands are excluded + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- list of service brands for which the ticket is not valid + -- service brand: code list https://uic.org/service-brand-code-list + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + + -- additional included open tickets + -- e.g. to include local city traffic on parts of a the route + includedAddOns SEQUENCE OF IncludedOpenTicketType OPTIONAL, + + -- in case the luggage restrictions are general and do not depend + -- on the ticket type they should not be included + luggage LuggageRestrictionType OPTIONAL, + + + + extension ExtensionData OPTIONAL + ,... + } + + + + -- #################################################################################### + -- data for passes + -- included are the data defined in: + -- - the ticket layout (leaflet 918.2) + -- - the ticket bar code version 3 (leaflet 918.2) + -- #################################################################################### + PassData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceNum INTEGER OPTIONAL, + referenceIA5 IA5String OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- type of the pass, code list provided by the product owner + -- in case of Eurail: + -- 1 = Interrail + -- 2 = Eurail + -- 3 = Eurail Global (all countries) + passType INTEGER (1..250) OPTIONAL, + + -- literal name of the pass + passDescription UTF8String OPTIONAL, + + classCode TravelClassType DEFAULT second, + + -- begin of validity (local time) + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- end of validity (local time) + -- number of days from valid from day, 0 = valid on valid-from-date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + + -- additional validity periods and excluded time ranges + validityPeriodDetails ValidityPeriodDetailType OPTIONAL, + + -- max number of days of validity in case the valid from day is open + numberOfValidityDays INTEGER (0..370) OPTIONAL, + + -- max number of possible trips to be activated + numberOfPossibleTrips INTEGER (1..250) OPTIONAL, + numberOfDaysOfTravel INTEGER (1..250) OPTIONAL, + + -- list of activated days in case the entire ticket is not activated + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included countries, code table according to UIC leaflet 918.2 + countries SEQUENCE OF INTEGER (1..250) OPTIONAL, + + -- included carriers (RICS codes) + includedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + includedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- excluded carriers (RICS codes) + excludedCarrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedCarrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- region description to cover local zones + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + + price INTEGER OPTIONAL, + + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + ValidityPeriodDetailType ::= SEQUENCE { + validityPeriod SEQUENCE OF ValidityPeriodType OPTIONAL, + excludedTimeRange SEQUENCE OF TimeRangeType OPTIONAL + } + + ValidityPeriodType ::= SEQUENCE { + -- number of days from issuing date (local date) + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- number of days from valid from day, 0 = valid on valid from date + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + } + + TimeRangeType ::= SEQUENCE { + fromTime INTEGER (0..1440), + untilTime INTEGER (0..1440) + } + + -- ###################################################################################### + -- data for vouchers + -- included are quite basic further study is required + -- ###################################################################################### + VoucherData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- begin of validity in UTC + -- number of year + validFromYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370), + -- end of validity + -- number of year + validUntilYear INTEGER (2016..2269), + -- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370), + + value INTEGER DEFAULT 0, + + -- type of the voucher, code list defined by the product owner + type INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + -- ################################################################################### + -- data for FIP tickets + -- included are data from the FIP ticket layout, + -- ################################################################################### + FIPTicketData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- first day of validity in UTC + --- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + -- last day of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + + -- activated days: list of days for which the ticket is valid + -- the day is given by the number of days from the first day of validity + -- 0 = first day of validity + activatedDay SEQUENCE OF INTEGER (0..370) OPTIONAL, + + -- included carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- number of travel days allowed + numberOfTravelDays INTEGER (1..200), + includesSupplements BOOLEAN, + + -- travel class + classCode TravelClassType DEFAULT second, + extension ExtensionData OPTIONAL + ,... + } + + -- ##################################################################################### + -- data station passage and access + -- ticket used to enter, exit or pass a station without travelling by train. + -- E.g. for staff working in a station. + -- ##################################################################################### + StationPassageData ::= SEQUENCE { + + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + productName UTF8String OPTIONAL, + + -- code table used to encode he stations + stationCodeTable CodeTableType DEFAULT stationUIC, + -- list of station where the passage is allowed + stationNum SEQUENCE OF INTEGER OPTIONAL, + stationIA5 SEQUENCE OF IA5String OPTIONAL, + -- station names + stationNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- list of areas in a station where the access is allowed + areaCodeNum SEQUENCE OF INTEGER OPTIONAL, + areaCodeIA5 SEQUENCE OF IA5String OPTIONAL, + -- area names + areaNameUTF8 SEQUENCE OF UTF8String OPTIONAL, + + -- begin of validity in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700), + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + -- end of validity + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + -- number of days for station passage in case the number of days + -- is limited and less that the validity period + numberOfDaysValid INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - ÖBB requirements on card data + -- - DB Bahncard as HandyTicket + -- note: customer data are included in the traveler data structure + -- ###################################################################################### + CustomerCardData ::= SEQUENCE { + + -- customer details + -- optional, as there might be an anonymous cards + customer TravelerType OPTIONAL, + + -- card id might be numerical or alphanumerical + cardIdIA5 IA5String OPTIONAL, + cardIdNum INTEGER OPTIONAL, + + -- valid from date in UTC + -- number of year + validFromYear INTEGER (2016..2269), + --- number of the day in the year (1.1. = 1) + validFromDay INTEGER (0..370) OPTIONAL, + + --- number of year from valid from year onwards + validUntilYear INTEGER (0..250) DEFAULT 0, + --- number of the day in the year (1.1. = 1) + validUntilDay INTEGER (0..370) OPTIONAL, + + classCode TravelClassType OPTIONAL, + + -- code of the card type code list defined by the issuer + cardType INTEGER (1..1000) OPTIONAL, + + -- readable description of the card type + cardTypeDescr UTF8String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- readable customer status "e.g. gold", + customerStatusDescr IA5String OPTIONAL, + + -- list of included services, + -- 1 = Rail Plus + -- 2 = access to launch + -- > 50 code list of the issuer + includedServices SEQUENCE OF INTEGER OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- data for customer cards + -- included are data from: + -- - DB parking ground reservation + -- ####################################################################################### + ParkingGroundData ::= SEQUENCE { + + -- booking reference + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + parkingGroundId IA5String, + + -- parking date in local date time + -- number of days from the issuing date + fromParkingDate INTEGER (-1..370), + -- number of days from the from parking date in case it is different from that date + untilParkingDate INTEGER (0..370) DEFAULT 0, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- code needed to access the parking lot + accessCode IA5String OPTIONAL, + + location UTF8String, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the parking ground is associated with a station + stationNum INTEGER OPTIONAL, + stationIA5 UTF8String OPTIONAL, + + specialInformation UTF8String OPTIONAL, + entryTrack UTF8String OPTIONAL, + numberPlate IA5String OPTIONAL, + + price INTEGER OPTIONAL, + vatDetail SEQUENCE OF VatDetailType OPTIONAL, + + + extension ExtensionData OPTIONAL + ,... + } + + -- ####################################################################### + -- data for countermarks issued with group tickets + -- included are data from: + -- - version 3 bar code (leaflet 918.2) + -- - printed layout (leaflet 918.2) + -- ######################################################################## + CountermarkData ::= SEQUENCE { + + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- reference of the group ticket + ticketReferenceIA5 IA5String OPTIONAL, + ticketReferenceNum INTEGER OPTIONAL, + + -- sequential number of the countermark + numberOfCountermark INTEGER (1..200), + -- total number of countermarks + totalOfCountermarks INTEGER (1..200), + -- name of the group + groupName UTF8String, + + + stationCodeTable CodeTableType DEFAULT stationUIC, + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validRegionDesc UTF8String OPTIONAL, + -- specification of the ordered sequence of valid regions + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + + -- ticket includes the return trip + returnIncluded BOOLEAN, + -- retrurn route description + -- can be omitted if it is identical to the inversed outbound validRegion sequence + returnDescription ReturnRouteDescriptionType OPTIONAL, + + -- local date + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + + -- number of days from valid from day, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + classCode TravelClassType DEFAULT second, + + -- valid carriers + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + infoText UTF8String OPTIONAL, + + extension ExtensionData OPTIONAL + ,... + } + + + -- ########################################################################################### + -- generic non standard extension element + -- the generic non - standard element contains: + -- - an extension id to distinguish different extensions + -- - the extension data as binary data + -- proprietary extensions are by definition proprietary. This standard provides + -- the means to identify these extensions + -- within the data and to skip these data. + -- the evaluation of these data and the unique identification of the extensions + -- via the extension id is in the + -- responsibility of the railways which use these extensions. + -- ########################################################################################### + ExtensionData ::= SEQUENCE { + extensionId IA5String, + extensionData OCTET STRING + } + + -- ############################################################################################ + -- type definitions + -- ############################################################################################ + + -- ############################################################################################# + -- included open ticke for a part of the travel (e.g. local city trafic) + -- - data identically already included in the covering open ticket do not need to be + -- repeated here + -- - main source are the data required for included regional and city traffic tickets + -- ############################################################################################# + IncludedOpenTicketType ::= SEQUENCE { + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- product id to identify the issued product codelist defined by the product owner + productIdNum INTEGER (0..32000) OPTIONAL, + productIdIA5 IA5String OPTIONAL, + + -- issuer code using the default code table of the product owner (today used e.g. by VDV) + externalIssuerId INTEGER OPTIONAL, + -- authorization id provided to the issuer by the poroduct owner (today used e.g. by VDV) + issuerAutorizationId INTEGER OPTIONAL, + + -- regional validity data + stationCodeTable CodeTableType DEFAULT stationUIC, + -- specification of the ordered sequence of valid regions, ordered in the direction of travel + validRegion SEQUENCE OF RegionalValidityType OPTIONAL, + + -- temporal validity data in local date and time + -- number of days from issuing date + validFromDay INTEGER (-1..700) DEFAULT 0, + validFromTime INTEGER (0..1440) OPTIONAL, + validFromUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + + -- number of days from valid-from date, 0 = first day of validity + validUntilDay INTEGER (0..370) DEFAULT 0, + validUntilTime INTEGER (0..1440) OPTIONAL, + validUntilUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + -- should be omtted in case it is the same as for depature + + + -- travel class to be given in case it differs from the class of the main ticket + classCode TravelClassType OPTIONAL, + -- servicelevel code according to leaflet 918.1 to encode other products (e.g. PREMIUM, ...) + -- to be provided in case it differs from the main ticket + serviceLevel IA5String (SIZE(1..2)) OPTIONAL, + + -- valid carriers (RICS codes) + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- service brands where the ticket is valid + -- in case this list is provided the ticket is invalid on all other service brands + -- service brand: code list https://uic.org/service-brand-code-list + includedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + -- service brands where the ticket is not valid + -- in case this list is provided the ticket is valid on all other service brands + excludedServiceBrands SEQUENCE OF INTEGER (1..32000) OPTIONAL, + + tariffs SEQUENCE OF TariffType OPTIONAL, + infoText UTF8String OPTIONAL, + extension ExtensionData OPTIONAL + ,... + } + + -- ###################################################################################### + -- tariff data for open tickets + -- information included are: + -- - number of passengers + -- - optionally a link to the traveler data + -- ####################################################################################### + TariffType ::= SEQUENCE { + + -- number of passengers using the tariff + numberOfPassengers INTEGER (1..200) DEFAULT 1, + + -- type indication youth, adult, senior,.. + passengerType PassengerType OPTIONAL, + + -- age restrictions of the tariff + ageBelow INTEGER (1..64) OPTIONAL, + ageAbove INTEGER (1..128) OPTIONAL, + + + -- named traveler list + -- link to the traveler in case the travelers have to be named (e.g. Eurail passes) + -- the number indicates the position in the traveler list starting from 1 + travelerid SEQUENCE OF INTEGER (0..254) OPTIONAL, + + -- restriction on country of residence + -- this tariff is restricted by the country of residence given in the traveler data + -- (e.g. Eurail tickets are not valid in the contry of residence) + restrictedToCountryOfResidence BOOLEAN, + + -- section in case the tariff applies to a part of the route only + restrictedToRouteSection RouteSectionType OPTIONAL, + + -- details on series according to lesaflet 108.1 + seriesDataDetails SeriesDetailType OPTIONAL, + + -- tariff code + tariffIdNum INTEGER OPTIONAL, + tariffIdIA5 IA5String OPTIONAL, + + -- tariff description + tariffDesc UTF8String OPTIONAL, + + -- reduction cards applied (incl. dicount cards, loaylty cards relevant for the tariff) + reductionCard SEQUENCE OF CardReferenceType OPTIONAL + ,... + } + + SeriesDetailType ::= SEQUENCE { + + -- data related to tariffs based on series according UIC leaflet 108.1 + -- supplying carrier according to UIC leaflet 108.1 (RICS code) + supplyingCarrier INTEGER (1..32000) OPTIONAL, + + -- offer identifier of the carrier according to UIC leaflet 108.1 + offerIdentification INTEGER (1..99) OPTIONAL, + + -- series of the carrier according to UIC leaflet 108.1 + series INTEGER OPTIONAL + } + + + RouteSectionType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, -- IA5 or Num not both + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + } + + + -- ####################################################################################### + -- customer card reference + -- ####################################################################################### + CardReferenceType ::= SEQUENCE { + + -- issuer of the card + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + cardIssuerNum INTEGER (1..32000) OPTIONAL, + cardIssuerIA5 IA5String OPTIONAL, + + cardIdNum INTEGER OPTIONAL, + cardIdIA5 IA5String OPTIONAL, + + -- Name of the card e.g. "VISA-CARD" + cardName UTF8String OPTIONAL, + + -- type of the card, code list defined by the issuer + cardType INTEGER OPTIONAL, + + -- in case only the leading part of the card number is provided + leadingCardIdNum INTEGER OPTIONAL, + leadingCardIdIA5 IA5String OPTIONAL, + + + -- in case only the trailing part of the card number is provided + trailingCardIdNum INTEGER OPTIONAL, + trailingCardIdIA5 IA5String OPTIONAL + + ,... + } + + -- ####################################################################################### + -- traveler data + -- - traveler data might contain all traveler details which are independent + -- from the type of travel document + -- e.g. it can include the date of birth as this is part of the traveler + -- but not the indication "Senior" as this is tariff dependent + -- + -- ####################################################################################### + TravelerType ::= SEQUENCE { + + firstName UTF8String OPTIONAL, + secondName UTF8String OPTIONAL, + lastName UTF8String OPTIONAL, + idCard IA5String OPTIONAL, + passportId IA5String OPTIONAL, + title IA5String (SIZE(1..3)) OPTIONAL, + gender GenderType OPTIONAL, + + -- customer id might be numerical or alphanumerical + customerIdIA5 IA5String OPTIONAL, + customerIdNum INTEGER OPTIONAL, + + -- date of birth + -- number of year + yearOfBirth INTEGER (1901..2155) OPTIONAL, + -- number of the day in the year (1.1. = 1) + dayOfBirth INTEGER (0..366) OPTIONAL, + + -- indicates the ticket holder/group leader in case of groups + ticketHolder BOOLEAN, + + passengerType PassengerType OPTIONAL, + + -- travelers might be PRM or not or the status is unknown, therefore the information is optional + passengerWithReducedMobility BOOLEAN OPTIONAL, + + -- country of residence (numeric ISO country code) + -- to be used in case there product restrictions on the country of residence (e.g. Eurail passes) + countryOfResidence INTEGER (1..999) OPTIONAL, + + countryOfPassport INTEGER (1..999) OPTIONAL, + countryOfIdCard INTEGER (1..999) OPTIONAL, + + status SEQUENCE OF CustomerStatusType OPTIONAL + ,... + } + + CustomerStatusType ::= SEQUENCE { + + -- compagny providing the status, default is the issuer + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + statusProviderNum INTEGER (1..32000) OPTIONAL, + statusProviderIA5 IA5String OPTIONAL, + + -- customer status code + -- 1 = basic + -- 2 = premium + -- 3 = silver + -- 4 = gold + -- 5 = platinum + -- 6 = senator + -- > 50 - code table of the card issuer + customerStatus INTEGER OPTIONAL, + + -- customer status "gold" + customerStatusDescr IA5String OPTIONAL + } + + + ReturnRouteDescriptionType ::= SEQUENCE { + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL, + + -- description for manual evaluation in case structured data are not available + validReturnRegionDesc UTF8String OPTIONAL, + + -- specification of the ordered sequence of valid regions for the return trip + validReturnRegion SEQUENCE OF RegionalValidityType OPTIONAL + ,... + + } + + -- ###################################################################################### + -- regional validity of an open ticket + -- specification of the regional validity. + -- ###################################################################################### + + RegionalValidityType ::= CHOICE { + trainLink TrainLinkType, + viaStations ViaStationType, + zones ZoneType, + lines LineType, + polygone PolygoneType + ,... + } + + + + -- ####################################################################################### + -- train link data + -- includes a restriction of an open ticket valid only on a specific train + -- and date on a part of the route + -- ####################################################################################### + TrainLinkType ::= SEQUENCE { + + trainNum INTEGER OPTIONAL, + trainIA5 IA5String OPTIONAL, + + -- local date at the station where the train link starts + -- days from the issuing date onwards + travelDate INTEGER (-1..370), + departureTime INTEGER (0..1440), -- time in minutes + departureUTCOffset INTEGER (-60..60) OPTIONAL, -- offset in units of 15 minutes from local time to UTC + -- (UTC = local + offset * 15 Minutes) + + fromStationNum INTEGER (1..9999999) OPTIONAL, + fromStationIA5 IA5String OPTIONAL, + + toStationNum INTEGER (1..9999999) OPTIONAL, + toStationIA5 IA5String OPTIONAL, + + fromStationNameUTF8 UTF8String OPTIONAL, + toStationNameUTF8 UTF8String OPTIONAL + + } + + + + -- ###################################################################################### + -- regional validity using a set of lines + -- - based on data used in regional city trafic enviromnemnts + -- ###################################################################################### + LineType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + -- ids of the valid lines known by the local carriers in that zone + lineId SEQUENCE OF INTEGER OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey + -- starting from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional city transport + -- code list of the local carrier + city INTEGER (1..9999999) OPTIONAL, + + -- binary encoding of zones, encoding specification provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL + ,... + } + + + -- ################################################################################# + -- regional validity in a zone + -- - based on data used in regional city trafic enviromnemnts + -- ################################################################################# + ZoneType ::= SEQUENCE { + + -- local service provider / carrier within the zone + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + carrierNum INTEGER (1..32000) OPTIONAL, + carrierIA5 IA5String OPTIONAL, + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- in case the zone must be entered via a specific station + -- (e.g. local city trafic at the end of a journey starting + -- from the main train station) + entryStationNum INTEGER (1..9999999) OPTIONAL, + entryStationIA5 IA5String OPTIONAL, + + -- in case the zone must be left via a specific station + -- (e.g. local city trafic at the beginning of a journey + -- terminating at the main train station) + terminatingStationNum INTEGER (1..9999999) OPTIONAL, + terminatingStationIA5 IA5String OPTIONAL, + + -- code of the local city in case the zone is part of regional + -- city transport code list of the local carrier + city INTEGER OPTIONAL, + + -- ids of the valid zones known by the local carriers in that zone + zoneId SEQUENCE OF INTEGER OPTIONAL, + + -- binary encoding of zones, encoding specification provided by + -- the local service provider + binaryZoneId OCTET STRING OPTIONAL, + + -- EU NUTS code for a region + nutsCode IA5String OPTIONAL + ,... + } + + + -- ################################################################################## + -- via station + -- includes a description of of the route by via stations. + -- Via stations follow the description in leaflet 108.1: + -- via stations can e mandatory to pass (but there does not need to be a + -- train stop at this stations): visible route description: "*station*" + -- there can be a list of alternative routes: + -- visible route description: "*(station1/station2)*" + -- there can also be alternative routes: + -- "*(station1*station2/station3*station4)*" although the + -- definition in 108.2 is not very precice on this option + -- ################################################################################### + ViaStationType ::= SEQUENCE { + + stationCodeTable CodeTableType DEFAULT stationUIC, + -- mandatory via station + stationNum INTEGER (1..9999999) OPTIONAL, + stationIA5 IA5String OPTIONAL, + + -- list of alternative routes, one of these has to be taken + alternativeRoutes SEQUENCE OF ViaStationType OPTIONAL, + + -- list of stations along the route + route SEQUENCE OF ViaStationType OPTIONAL, + border BOOLEAN, + + -- carrier responsible for the transport starting at this station (RICS-Code) + -- in case the carrier is included here it might be omitted + -- in the carrier list of the region data + carrierNum SEQUENCE OF INTEGER (1..32000) OPTIONAL, + carrierIA5 SEQUENCE OF IA5String OPTIONAL, + + -- the route id as series number as defined in 108.1 data + seriesId INTEGER OPTIONAL, + + -- route id of the route code list defined by the carrier on that route + routeId INTEGER OPTIONAL + ,... + } + + + PolygoneType ::= SEQUENCE { + firstEdge GeoCoordinateType, + edges SEQUENCE OF DeltaCoordinates + } + + + -- ########################################################################################### + -- TokenType provides an additional identifier + -- known use cases + -- - identified of the mobile phone for tickets linked with a specific phone (e.g. VDV standard) + -- ########################################################################################### + TokenType ::= SEQUENCE { + -- provider of the token + tokenProviderNum INTEGER OPTIONAL, + tokenProviderIA5 IA5String OPTIONAL, + + -- in case the provider has multiple tokens + tokenSpecification IA5String OPTIONAL, + token OCTET STRING + } + + -- ########################################################################################### + -- TicketLinkType is used to define a link from the ticket in the bar code to another ticket + -- (requirement from Eurail) + -- use cases + -- - DB Alleo (open ticket + reservation) + -- - reservation of trailer and car carriage and traveller reservation + -- - link between open ticket and bicycle reservations or pass + -- - open ticket and vouchers for meals + -- ########################################################################################### + TicketLinkType ::= SEQUENCE { + + -- data to reference the external ticket + -- reference must be given in numeric or alphanumeric format + referenceIA5 IA5String OPTIONAL, + referenceNum INTEGER OPTIONAL, + + issuerName UTF8String OPTIONAL, -- name of the issuer + + issuerPNR IA5String OPTIONAL, -- in case the ticket can also be identified via + -- the issuer PNR + + -- organization responsible for the product definition + -- (RICS Code / proprietary code in case no RICS code is defined, proprietary codes must ensure to be unique) + productOwnerNum INTEGER (1..32000) OPTIONAL, + productOwnerIA5 IA5String OPTIONAL, + + -- type of linked ticket + ticketType TicketType DEFAULT openTicket, + + -- type of link + linkMode LinkMode DEFAULT issuedTogether + ,... + } + + -- ############################################################################################ + -- code table used fort station codes + -- defines the code table used e.g. to define station code + -- - stationUIC = station codes as used in UIC leaflet 108.1 for open tickets + -- - stationUICReservation = station codes as used in Reservation leaflets 918.1 and 108.2 + -- ############################################################################################ + + CodeTableType ::= ENUMERATED { + -- standard UIC station code from MERITS (UIC country code + 5 digit local code) + stationUIC (0), + -- standard UIC station code for reservation + stationUICReservation (1), + -- future standard ERA station code + stationERA (2), + -- local carrier code list + -- e.g. in case of stations / stops of non-railways stops (city trafic) + localCarrierStationCodeTable (3), + + -- non standard code to be used within the issuer eco system only + -- not applicable for multi carrier travel documents + -- or in case issuer and carrier are different + proprietaryIssuerStationCodeTable (4) + + } + + + ServiceType ::= ENUMERATED { + seat (0), + couchette (1), + berth (2), + carcarriage (3) + } + + + PassengerType ::= ENUMERATED { + adult (0), + senior (1), + child (2), + youth (3), + dog (4), + bicycle (5), + freeAddonPassenger (6), + freeAddonChild (7) + ,... + } + + TicketType ::= ENUMERATED { + openTicket (0), + pass (1), + reservation (2), + carCarriageReservation (3) + ,... + } + + LinkMode ::= ENUMERATED { + issuedTogether (0), + onlyValidInCombination (1) + ,... + } + + + -- #################################################################################### + -- place data corresponding to leaflet 918.1 + -- placeString = place number ranges in case of groups + -- #################################################################################### + PlacesType ::= SEQUENCE { + coach IA5String OPTIONAL, + + -- printable place string ("15-18, 21, 22" ) + placeString IA5String OPTIONAL, + + -- printable place description + placeDescription UTF8String OPTIONAL, + + -- individual places + placeIA5 SEQUENCE OF IA5String OPTIONAL, + placeNum SEQUENCE OF INTEGER (1..254) OPTIONAL + } + + PriceTypeType ::= ENUMERATED { + noPrice (0), + reservationFee (1), + supplement (2), + travelPrice (3) + } + + BerthTypeType ::= ENUMERATED { + single (0), + special (1), + double (2), + t2 (3), + t3 (4), + t4 (5) + } + + CompartmentGenderType ::= ENUMERATED { + unspecified (0), + family (1), + female (2), + male (3), + mixed (4) + ,... + } + + GenderType ::= ENUMERATED { + unspecified (0), + female (1), + male (2), + other (3) + ,... + } + + TravelClassType ::= ENUMERATED { + notApplicable (0), + first (1), + second (2), + tourist (3), + comfort (4), + premium (5), + business (6), + all (7) + ,... + } + + -- ######################################################################################## + -- sleeper compartment types corresponding to leaflet 918.1 + -- ######################################################################################## + BerthDetailData ::= SEQUENCE { + berthType BerthTypeType, + numberOfBerths INTEGER (1..999), + gender CompartmentGenderType DEFAULT family + ,... + } + + -- #################################################################################### + -- compartment details corresponding to leaflet 918.1 + -- #################################################################################### + CompartmentDetailsType ::= SEQUENCE { + coachType INTEGER (1..99) OPTIONAL, + compartmentType INTEGER (1..99) OPTIONAL, + specialAllocation INTEGER (1..99) OPTIONAL, + coachTypeDescr UTF8String OPTIONAL, + compartmentTypeDescr UTF8String OPTIONAL, + specialAllocationDescr UTF8String OPTIONAL, + position CompartmentPositionType DEFAULT unspecified + ,... + } + + + -- ##################################################################################### + -- luggage restrictions + -- the basis for these data is week: + -- SCIC mentions a maximum of three pieces of hand luggage but does not includes + -- a definition of hand luggaage + -- SCIC referes to special conditions on registered lluggage, but SCIC NRT does + -- not contain definitions on that and UIC 108.1 does not + -- contain data structures for luggage + -- - current THALYS luggage resrictions + -- ##################################################################################### + LuggageRestrictionType ::= SEQUENCE { + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxHandLuggagePieces INTEGER(0..99) DEFAULT 3, + -- allowed hand luggage pieces on this ticket (3 = default in current NRT tariff) + maxNonHandLuggagePieces INTEGER(0..99) DEFAULT 1, + registeredLuggage SEQUENCE OF RegisteredLuggageType OPTIONAL + ,... + + } + + RegisteredLuggageType ::= SEQUENCE { + -- id of the additional registered luggage + registrationId IA5String OPTIONAL, + -- maximum weight in kg + maxWeight INTEGER (1..99) OPTIONAL, + -- sum of length with and height in cm + maxSize INTEGER (1..300) OPTIONAL + ,... + + } + + -- ########################################################################################## + -- generic type for geo coordinates + -- ########################################################################################## + GeoCoordinateType ::= SEQUENCE { + geoUnit GeoUnitType DEFAULT milliDegree, + coordinateSystem GeoCoordinateSystemType DEFAULT wgs84, + -- separate hemishpere flag reduces the data size + hemisphereLongitude HemisphereLongitudeType DEFAULT north, + -- separate hemishpere flag reduces the data size + hemisphereLatitude HemisphereLatitudeType DEFAULT east, + longitude INTEGER, + latitude INTEGER, + accuracy GeoUnitType OPTIONAL + } + + DeltaCoordinates ::= SEQUENCE { + -- logitude difference to a reference point + longitude INTEGER, + -- latitude difference to a reference point + latitude INTEGER + } + + GeoCoordinateSystemType ::= ENUMERATED { + wgs84 (0), -- WGS 84 standard system + grs80 (1) -- (outdated) GRS 80 coordinate system + } + + GeoUnitType ::= ENUMERATED { + microDegree (0), -- approx. 11 cm on earth surface + tenthmilliDegree (1), -- 1 / 100000 degree is approx. 1.1 meter on earth surface + milliDegree (2), -- approx 110 meter on earth surface + centiDegree (3), + deciDegree (4) + } + + HemisphereLongitudeType ::= ENUMERATED { + north (0), + south (1) + } + + HemisphereLatitudeType ::= ENUMERATED { + east (0), + west (1) + } + + LoadingDeckType ::= ENUMERATED { + unspecified (0), + upper (1), + lower (2) + } + + CompartmentPositionType ::= ENUMERATED { + unspecified (0), + upperLevel (1), + lowerLevel (2) + } + + RoofRackType ::= ENUMERATED { + norack (0), + roofRailing (1), + luggageRack (2), + skiRack (3), + boxRack (4), + rackWithOneBox (5), + rackWithTwoBoxes (6), + bicycleRack (7), + otherRack (8) + ,... + } + +END
\ No newline at end of file |