1 /***
2 * Java DAB EPG API - Serialize/Deserialize To/From POJOs to XML/Binary as per
3 * ETSI specifications TS 102 818 (XML Specification for DAB EPG) and TS 102
4 * 371 (Transportation and Binary Encoding Specification for EPG).
5 *
6 * Copyright (C) 2007 GCap Media PLC
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22 package com.gcapmedia.dab.epg;
23
24 import org.joda.time.Duration;
25 import org.joda.time.Period;
26 import org.joda.time.ReadableInstant;
27
28 /***
29 * <p>Describes the timing information of a programme, both billed and actual.</p>
30 *
31 * <p>For example, a programme may be billed to start at 18:00 and last 30
32 * minutes but is actually scheduled to start at 18:03 after a 3 minute news
33 * bulletin and will therefore last only 27 minutes.</p>
34 */
35 public class Time {
36
37 /***
38 * Billed programme start time
39 */
40 private ReadableInstant billedTime;
41
42 /***
43 * Billed programme duration
44 */
45 private Duration billedDuration;
46
47 /***
48 * Actual programme start time
49 */
50 private ReadableInstant actualTime;
51
52 /***
53 * Actual programme duration
54 */
55 private Duration actualDuration;
56
57 /***
58 * Create a new programme time
59 * @param billedTime Billed programme time
60 * @param billedDuration Billed programme duration
61 */
62 public Time(ReadableInstant billedTime, Duration billedDuration) {
63 this.billedTime = billedTime;
64 this.billedDuration = billedDuration;
65 }
66
67 /***
68 * Create a new programme time
69 * @param billedTime Billed programme time
70 * @param billedDuration Billed programme duration
71 */
72 public Time(ReadableInstant billedTime, Period period) {
73 this.billedTime = billedTime;
74 this.billedDuration = period.toDurationFrom(billedTime);
75 }
76
77 /***
78 * Create a new programme time
79 * @param billedTime Billed programme time
80 * @param billedDuration Billed programme duration
81 * @param actualTime Actual start time of the programme
82 * @param actualDuration Actual duration of the programme
83 */
84 public Time(ReadableInstant billedTime, Duration billedDuration, ReadableInstant actualTime, Duration actualDuration) {
85 this.billedTime = billedTime;
86 this.billedDuration = billedDuration;
87 this.actualTime = actualTime;
88 this.actualDuration = actualDuration;
89 }
90
91 /***
92 * Create a new programme time
93 * @param billedTime Billed programme time
94 * @param billedDuration Billed programme duration
95 * @param actualTime Actual start time of the programme
96 * @param actualDuration Actual duration of the programme
97 */
98 public Time(ReadableInstant billedTime, Period billedPeriod, ReadableInstant actualTime, Period actualPeriod) {
99 this.billedTime = billedTime;
100 this.billedDuration = billedPeriod.toDurationFrom(billedTime);
101 this.actualTime = actualTime;
102 this.actualDuration = actualPeriod.toDurationFrom(actualTime);
103 }
104
105 /***
106 * @return Returns the actual duration of the programme
107 */
108 public Duration getActualDuration() {
109 return actualDuration;
110 }
111
112 /***
113 * @param actualDuration Sets the actual duration of the programme
114 */
115 public void setActualDuration(Duration actualDuration) {
116 this.actualDuration = actualDuration;
117 }
118
119 /***
120 * @return Returns the actual start time of the programme
121 */
122 public ReadableInstant getActualTime() {
123 return actualTime;
124 }
125
126 /***
127 * @param actualTime Sets the actual start time of the programme
128 */
129 public void setActualTime(ReadableInstant actualTime) {
130 this.actualTime = actualTime;
131 }
132
133 /***
134 * @return Returns the billed duration of the programme
135 */
136 public Duration getBilledDuration() {
137 return billedDuration;
138 }
139
140 /***
141 * @return Returns the billed start time of the programme
142 */
143 public ReadableInstant getBilledTime() {
144 return billedTime;
145 }
146
147 }