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 java.util.ArrayList;
25 import java.util.Collection;
26 import java.util.Collections;
27 import java.util.List;
28
29 /***
30 * <p>
31 * Describes the time information and the location in the DAB channel of
32 * a programme. There may be:
33 *
34 * <ul>
35 * <li>One time and one bearer</li>
36 * <li>One time and multiple bearers</li>
37 * <li>One bearer and multiple times</li>
38 * </ul>
39 *
40 * Multiple time properties and multiple bearers is ambiguous and must
41 * not be used. If the EPG data service is associated with an audio service
42 * (i.e. PAD within DAB) and the <b>bearer</b> element is not present then
43 * the programme information releates to that associated audio service.
44 * </p>
45 *
46 * <p>
47 * The <b>time</b> property describes the time information for a programme.
48 * Either as absolute or relative. Relative time should only be used for
49 * nested programme events.
50 * </p>
51 */
52 public class Location {
53
54 /***
55 * Programme times
56 */
57 private List<Time> times;
58
59 /***
60 * Relative times
61 */
62 private List<RelativeTime> relativeTimes;
63
64 /***
65 * DAB channel bearer
66 */
67 private List<Bearer> bearers;
68
69 /***
70 * Create a new location
71 */
72 public Location() {
73 times = new ArrayList<Time>();
74 relativeTimes = new ArrayList<RelativeTime>();
75 bearers = new ArrayList<Bearer>();
76 }
77
78 /***
79 * @return Returns the timing information of this lcoation
80 */
81 public Collection<Time> getTimes() {
82 return Collections.unmodifiableCollection(times);
83 }
84
85 /***
86 * Adds a time to the location
87 * @param time Programme time to add
88 */
89 public void addTime(Time time) {
90 times.add(time);
91 }
92
93 /***
94 * @return Returns the relative time information of this location
95 */
96 public Collection<RelativeTime> getRelativeTimes() {
97 return Collections.unmodifiableCollection(relativeTimes);
98 }
99
100 /***
101 * Adds a relative time to the location
102 * @param relativeTimes Programme relative time to add
103 */
104 public void addRelativeTime(RelativeTime relativeTime) {
105 relativeTimes.add(relativeTime);
106 }
107
108 /***
109 * @return Returns the bearers set against this location
110 */
111 public Collection<Bearer> getBearers() {
112 return Collections.unmodifiableCollection(bearers);
113 }
114
115 /***
116 * Adds a bearer to the location
117 * @param bearer Bearer to add
118 */
119 public void addBearer(Bearer bearer) {
120 bearers.add(bearer);
121 }
122
123 }