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.List;
26
27 /***
28 * <p>Container for all EPG information. It may contain schedule, programme or
29 * group information.:</p>
30 *
31 * <p><b>Programme Groups</b> are used as a container for group elements.</p>
32 *
33 * <p><b>Schedules</b> allow programmes to be identified within a given time
34 * period. Note that for contiguous schedules the stop time of a schedule
35 * should be equal to the start time of the next schedule</p>
36 *
37 * <p><b>Alternate Sources</b> are used to indicate whether this or related
38 * EPG data is available elsewhere.<p>
39 *
40 * <p>Programme, Programme Event and Programme Groups all point 'upwards' to
41 * their parent group(s) using the memberOf link.</p>
42 */
43 public class Epg {
44
45 /***
46 * EPG System type
47 */
48 private SystemType type;
49
50 /***
51 * Programme Groups
52 */
53 private List<ProgrammeGroup> programmeGroups;
54
55 /***
56 * Programmes
57 */
58 private List<Programme> programmes;
59
60 /***
61 * Schedule data
62 */
63 private Schedule schedule;
64
65 /***
66 * Create a new EPG container for DAB
67 */
68 public Epg() {
69 this(SystemType.DAB);
70 }
71
72 /***
73 * Create a new EPG container
74 * @param type EPG System type
75 */
76 public Epg(SystemType type) {
77 this.type = type;
78 programmeGroups = new ArrayList<ProgrammeGroup>();
79 programmes = new ArrayList<Programme>();
80 }
81
82 /***
83 * Set the EPG system type (DAB or DRM)
84 * @param type
85 */
86 public void setSystemType(SystemType type) {
87 this.type = type;
88 }
89
90 /***
91 * @return Returns the system type
92 */
93 public SystemType getSystemType() {
94 return type;
95 }
96
97 /***
98 * Add a programme group
99 * @param group Programme group to add
100 */
101 public void addProgrammeGroup(ProgrammeGroup group) {
102 programmeGroups.add(group);
103 }
104
105 /***
106 * @return Returns all programme groups
107 */
108 public List<ProgrammeGroup> getProgrammeGroups() {
109 return programmeGroups;
110 }
111
112 /***
113 * Add a programme
114 * @param programme Programme to add
115 */
116 public void addProgramme(Programme programme) {
117 programmes.add(programme);
118 }
119
120 /***
121 * @return Returns all programmes
122 */
123 public List<Programme> getProgrammes() {
124 return programmes;
125 }
126
127 /***
128 * Set the schedule
129 * @param schedule Schedule to set
130 */
131 public void setSchedule(Schedule schedule) {
132 this.schedule = schedule;
133 }
134
135 /***
136 * @return Returns the Schedule
137 */
138 public Schedule getSchedule() {
139 return schedule;
140 }
141
142 /***
143 * @see java.lang.Object#equals(java.lang.Object)
144 */
145 @Override
146 public boolean equals(Object obj) {
147 if(!(obj instanceof Epg)) {
148 return false;
149 }
150 Epg that = (Epg)obj;
151
152 return this.type == that.type &&
153 this.programmeGroups.equals(that.programmeGroups) &&
154 this.programmes.equals(that.programmes) &&
155 this.schedule.equals(that.schedule);
156 }
157
158 /***
159 * @see java.lang.Object#toString()
160 */
161 public String toString() {
162 return "EPG [type=" + type + "]: Programme Groups = " + programmeGroups + ", Programmes = " + programmes + ", schedule = [" + schedule + "]";
163 }
164 }