summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/uic/barcode/ticket/api/asn/omv2/TrainLinkType.java
blob: 4724db60733712f9f801ae3c11c05bf05952d8ab (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/*
 *   This file was generated by openASN.1 - an open source ASN.1 toolkit for java
 *
 *   openASN.1 is Copyright (C) 2007 Clayton Hoss, Marc Weyland
 *
 *   openASN.1 is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU Lesser General Public License as
 *   published by the Free Software Foundation, either version 3 of
 *   the License, or (at your option) any later version.
 *
 *   openASN.1 is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *   GNU Lesser General Public License for more details.
 *
 *   You should have received a copy of the GNU Lesser General Public License
 *   along with openASN.1. If not, see <http://www.gnu.org/licenses/>.
 *
 */
package org.uic.barcode.ticket.api.asn.omv2;

import java.util.Date;

import org.uic.barcode.asn1.datatypes.Asn1BigInteger;
import org.uic.barcode.asn1.datatypes.Asn1Optional;
import org.uic.barcode.asn1.datatypes.CharacterRestriction;
import org.uic.barcode.asn1.datatypes.FieldOrder;
import org.uic.barcode.asn1.datatypes.IntRange;
import org.uic.barcode.asn1.datatypes.RestrictedString;
import org.uic.barcode.asn1.datatypes.Sequence;
import org.uic.barcode.ticket.api.utils.DateTimeUtils;

@Sequence
public class TrainLinkType extends Object {
	public TrainLinkType() {
	}

	@FieldOrder(order = 0)
	@Asn1Optional public Asn1BigInteger trainNum;

	@FieldOrder(order = 1)
	@RestrictedString(CharacterRestriction.IA5String)
	@Asn1Optional public String trainIA5;

	@FieldOrder(order = 2)
	@IntRange(minValue=-1,maxValue=370)
	public Long travelDate;

	@FieldOrder(order = 3)
	@IntRange(minValue=0,maxValue=1440)
	public Long departureTime;
	
	@FieldOrder(order = 4)
	@IntRange(minValue=-60, maxValue=60)
	@Asn1Optional public Long departureUTCOffset;

	@FieldOrder(order = 5)
	@IntRange(minValue=1,maxValue=9999999)
	@Asn1Optional public Long fromStationNum;

	@FieldOrder(order = 6)
	@RestrictedString(CharacterRestriction.IA5String)
	@Asn1Optional public String fromStationIA5;

	@FieldOrder(order = 7)
	@IntRange(minValue=1,maxValue=9999999)
	@Asn1Optional public Long toStationNum;

	@FieldOrder(order = 8)
	@RestrictedString(CharacterRestriction.IA5String)
	@Asn1Optional public String toStationIA5;

	@FieldOrder(order = 9)
	@RestrictedString(CharacterRestriction.UTF8String)
	@Asn1Optional public String fromStationName;

	@FieldOrder(order = 10)
	@RestrictedString(CharacterRestriction.UTF8String)
	@Asn1Optional public String toStationName;

	public Long getTrainNum() {
		return Asn1BigInteger.toLong(this.trainNum);
	}

	public String getTrainIA5() {
		return this.trainIA5;
	}

	public Long getTravelDate() {
		return this.travelDate;
	}

	public Long getDepartureTime() {
		return this.departureTime;
	}

	public Long getFromStationNum() {
		return this.fromStationNum;
	}

	public String getFromStationIA5() {
		return this.fromStationIA5;
	}

	public Long getToStationNum() {
		return this.toStationNum;
	}

	public String getToStationIA5() {
		return this.toStationIA5;
	}

	public String getFromStationName() {
		return this.fromStationName;
	}

	public String getToStationName() {
		return this.toStationName;
	}

	public void setTrainNum(Long trainNum) {
		this.trainNum = Asn1BigInteger.toAsn1(trainNum);
	}

	public void setTrainIA5(String trainIA5) {
		this.trainIA5 = trainIA5;
	}

	public void setTravelDate(Long travelDate) {
		this.travelDate = travelDate;
	}

	public void setDepartureTime(Long departureTime) {
		this.departureTime = departureTime;
	}

	public void setFromStationNum(Long fromStationNum) {
		this.fromStationNum = fromStationNum;
	}

	public void setFromStationIA5(String fromStationIA5) {
		this.fromStationIA5 = fromStationIA5;
	}

	public void setToStationNum(Long toStationNum) {
		this.toStationNum = toStationNum;
	}

	public void setToStationIA5(String toStationIA5) {
		this.toStationIA5 = toStationIA5;
	}

	public void setFromStationName(String fromStationName) {
		this.fromStationName = fromStationName;
	}

	public void setToStationName(String toStationName) {
		this.toStationName = toStationName;
	}
	
	public void setDepartureDate(Date departure, Date issuingDate){
		
		if (issuingDate == null || departure == null) return;
					
		this.travelDate = DateTimeUtils.getDateDifference(issuingDate,departure);
		this.departureTime =  DateTimeUtils.getTime(departure);
	}
	
	public void setDepartureTimeZone(Date dateLocal, Date dateUTC ) {
		// -- (UTC = local + offset * 15 Minutes)	
		this.departureUTCOffset = new Long(dateLocal.getTime() - dateUTC.getTime()) / (1000 * 60 * 15);
	}
	
	public Date getDepartureDate(Date issuingDate){
		return DateTimeUtils.getDate(issuingDate, this.travelDate, this.departureTime);
	}
	
	public Date getUTCDepartureDate(Date issuingDate){
		return DateTimeUtils.getUTCDate(issuingDate, this.travelDate, this.departureTime, this.departureUTCOffset);
	}	
	



}