summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/uic/barcode/ssbFrame/SsbNonReservation.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/uic/barcode/ssbFrame/SsbNonReservation.java')
-rw-r--r--src/main/java/org/uic/barcode/ssbFrame/SsbNonReservation.java131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/main/java/org/uic/barcode/ssbFrame/SsbNonReservation.java b/src/main/java/org/uic/barcode/ssbFrame/SsbNonReservation.java
new file mode 100644
index 0000000..80fc2bc
--- /dev/null
+++ b/src/main/java/org/uic/barcode/ssbFrame/SsbNonReservation.java
@@ -0,0 +1,131 @@
+package org.uic.barcode.ssbFrame;
+
+import org.uic.barcode.asn1.uper.BitBuffer;
+import org.uic.barcode.asn1.uper.ByteBitBuffer;
+import org.uic.barcode.ticket.EncodingFormatException;
+
+public class SsbNonReservation extends SsbCommonTicketPart {
+
+ protected int firstDayOfValidity = 0;
+ protected int lastDayOfValidity = 0;
+ protected boolean isReturnJourney = false;
+ private int infoCode = 0;
+ private String text = null;
+ private SsbStations stations = new SsbStations();
+
+
+ @Override
+ protected int decodeContent(byte[] bytes, int offset) {
+
+ offset = offset + decodeCommonPart(bytes);
+
+ BitBuffer bits = new ByteBitBuffer(bytes);
+
+ isReturnJourney = bits.get(offset);
+ offset = offset++;
+
+ firstDayOfValidity = bits.getInteger(offset, 9);
+ offset = offset + 9;
+
+ lastDayOfValidity = bits.getInteger(offset, 9);
+ offset = offset + 9;
+
+ offset = stations.decode(offset, bytes);
+
+ infoCode = bits.getInteger(offset, 14);
+ offset = offset + 14;
+
+ text = bits.getChar6String(offset, 222);
+ offset = offset + 222;
+
+ return offset;
+
+ }
+
+ @Override
+ protected int encodeContent(byte[] bytes, int offset) throws EncodingFormatException {
+
+ offset = offset + encodeCommonPart(bytes, offset);
+
+ BitBuffer bits = new ByteBitBuffer(bytes);
+
+ bits.put(offset, isReturnJourney);
+ offset = offset++;
+
+ if (firstDayOfValidity < 0 || firstDayOfValidity > 511) {
+ throw new EncodingFormatException("SSB first day of validity too big");
+ }
+ bits.putInteger(offset, 9, firstDayOfValidity);
+ offset = offset + 9;
+
+ if (lastDayOfValidity < 0 || lastDayOfValidity > 511) {
+ throw new EncodingFormatException("SSB last day of validity too big");
+ }
+ bits.putInteger(offset, 9, lastDayOfValidity);
+ offset = offset + 9;
+
+ offset = stations.encode(offset, bytes);
+
+ if (infoCode < 0 || infoCode > 9999) {
+ throw new EncodingFormatException("SSB info code too big");
+ }
+ bits.putInteger(offset, 14, infoCode);
+ offset = offset + 14;
+
+ if (text.length() > 37) {
+ throw new EncodingFormatException("SSB text too big");
+ }
+ bits.putChar6String(offset, 222, text);
+ offset = offset + 222;
+
+ return offset;
+
+ }
+
+ public int getFirstDayOfValidity() {
+ return firstDayOfValidity;
+ }
+
+ public void setFirstDayOfValidity(int firstDayOfValidity) {
+ this.firstDayOfValidity = firstDayOfValidity;
+ }
+
+ public int getLastDayOfValidity() {
+ return lastDayOfValidity;
+ }
+
+ public void setLastDayOfValidity(int lastDayOfValidity) {
+ this.lastDayOfValidity = lastDayOfValidity;
+ }
+
+ public boolean isReturnJourney() {
+ return isReturnJourney;
+ }
+
+ public void setReturnJourney(boolean isReturnJourney) {
+ this.isReturnJourney = isReturnJourney;
+ }
+
+ public int getInfoCode() {
+ return infoCode;
+ }
+
+ public void setInfoCode(int infoCode) {
+ this.infoCode = infoCode;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public SsbStations getStations() {
+ return stations;
+ }
+
+
+
+}