View Javadoc

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.DateTime;
25  import org.joda.time.Duration;
26  import org.joda.time.Period;
27  import org.joda.time.ReadableInstant;
28  
29  /***
30   * <p>Describes the timing information of a programme, both billed and actual 
31   * relative to its parent</p>
32   */
33  public class RelativeTime {
34  
35  	/***
36  	 * Billed programme start time relative to the billed
37  	 * start time of the parent
38  	 */
39  	private Duration billedTime;
40  	
41  	/***
42  	 * Billed programme duration
43  	 */
44  	private Duration billedDuration;
45  	
46  	/***
47  	 * Actual programme start time relative to the actual
48  	 * start time of the parent
49  	 */
50  	private Duration actualTime;
51  	
52  	/***
53  	 * Actual programme duration
54  	 */
55  	private Duration actualDuration;
56  	
57  	/***
58  	 * Create a new relative programme time
59  	 * @param billedTime Billed programme time relative to its parent
60  	 * @param billedDuration Billed programme duration
61  	 */
62  	public RelativeTime(Duration billedTime, Duration billedDuration) {
63  		this.billedTime = billedTime;
64  		this.billedDuration = billedDuration;
65  	}
66  	
67  	/***
68  	 * Create a new relative programme time
69  	 * @param billedTime Billed programme time relative to its parent
70  	 * @param billedDuration Billed programme duration
71  	 */
72  	public RelativeTime(ReadableInstant parent, Period timePeriod, Period billedPeriod) {
73  		this.billedTime = timePeriod.toDurationFrom(parent);
74  		this.billedDuration = billedPeriod.toDurationFrom(new DateTime(parent).plus(billedTime));
75  	}
76  	
77  	/***
78  	 * Create a new programme time
79  	 * @param billedTime Billed programme time relative to its parent
80  	 * @param billedDuration Billed programme duration
81  	 * @param actualTime Actual start time of the programme relative to its parent
82  	 * @param actualDuration Actual duration of the programme
83  	 */
84  	public RelativeTime(Duration billedTime, Duration billedDuration, Duration actualTime, Duration actualDuration) {
85  		this.billedTime = billedTime;
86  		this.billedDuration = billedDuration;
87  		this.actualTime = actualTime;
88  		this.actualDuration = actualDuration;
89  	}
90  
91  	/***
92  	 * @return Returns the actual duration of the programme
93  	 */
94  	public Duration getActualDuration() {
95  		return actualDuration;
96  	}
97  
98  	/***
99  	 * @param actualDuration Sets the actual duration of the programme
100 	 */
101 	public void setActualDuration(Duration actualDuration) {
102 		this.actualDuration = actualDuration;
103 	}
104 
105 	/***
106 	 * @return Returns the actual start time of the programme relative
107 	 * to its parent
108 	 */
109 	public Duration getActualTime() {
110 		return actualTime;
111 	}
112 
113 	/***
114 	 * @param actualTime Sets the actual start time of the programme
115 	 * relative to its parent
116 	 */
117 	public void setActualTime(Duration actualTime) {
118 		this.actualTime = actualTime;
119 	}
120 
121 	/***
122 	 * @return Returns the billed duration of the programme
123 	 */
124 	public Duration getBilledDuration() {
125 		return billedDuration;
126 	}
127 
128 	/***
129 	 * @return Returns the billed start time of the programme 
130 	 * relative to its parent
131 	 */
132 	public Duration getBilledTime() {
133 		return billedTime;
134 	}
135 	
136 }