3
3
*
4
4
* http://www.digitalekabeltelevisie.nl/dvb_inspector
5
5
*
6
- * This code is Copyright 2009-2022 by Eric Berendsen (e_berendsen@digitalekabeltelevisie.nl)
6
+ * This code is Copyright 2009-2024 by Eric Berendsen (e_berendsen@digitalekabeltelevisie.nl)
7
7
*
8
8
* This file is part of DVB Inspector.
9
9
*
28
28
29
29
import static nl .digitalekabeltelevisie .data .mpeg .descriptors .Descriptor .findDescriptorApplyListFunc ;
30
30
import static nl .digitalekabeltelevisie .util .Utils .addListJTree ;
31
- import static nl .digitalekabeltelevisie .util .Utils .getDurationMillis ;
32
- import static nl .digitalekabeltelevisie .util .Utils .getUTCDate ;
31
+ import static nl .digitalekabeltelevisie .util .Utils .getDurationSeconds ;
33
32
import static nl .digitalekabeltelevisie .util .Utils .isUndefined ;
34
33
import static nl .digitalekabeltelevisie .util .Utils .simpleModus ;
35
34
36
- import java .util .Arrays ;
37
- import java .util .Collection ;
38
- import java .util .Date ;
39
- import java .util .List ;
40
- import java .util .Map ;
35
+ import java .time .LocalDateTime ;
36
+ import java .util .*;
41
37
import java .util .Map .Entry ;
42
- import java .util .Objects ;
43
- import java .util .Set ;
44
- import java .util .TreeMap ;
45
38
import java .util .function .IntPredicate ;
46
39
import java .util .logging .Level ;
47
40
import java .util .logging .Logger ;
@@ -84,16 +77,16 @@ public class EIT extends AbstractPSITabel{
84
77
private static final Logger logger = Logger .getLogger (EIT .class .getName ());
85
78
86
79
87
- public EIT (final PSI parent ){
80
+ public EIT (PSI parent ){
88
81
super (parent );
89
82
}
90
83
91
- public void update (final EITsection section ){
84
+ public void update (EITsection section ){
92
85
93
- final int original_network_id = section .getOriginalNetworkID ();
94
- final int streamId = section .getTransportStreamID ();
95
- final int serviceId = section .getServiceID ();
96
- final int tableId = section .getTableId ();
86
+ int original_network_id = section .getOriginalNetworkID ();
87
+ int streamId = section .getTransportStreamID ();
88
+ int serviceId = section .getServiceID ();
89
+ int tableId = section .getTableId ();
97
90
98
91
TreeMap <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>> networkSections = newEit .computeIfAbsent (original_network_id ,k -> new TreeMap <>());
99
92
TreeMap <Integer , TreeMap <Integer , EITsection []>> programStreamSections = networkSections .computeIfAbsent (streamId ,k -> new TreeMap <>());
@@ -108,51 +101,51 @@ public void update(final EITsection section){
108
101
if (tableSectionArray [section .getSectionNumber ()]==null ){
109
102
tableSectionArray [section .getSectionNumber ()] = section ;
110
103
}else {
111
- final TableSection last = tableSectionArray [section .getSectionNumber ()];
104
+ TableSection last = tableSectionArray [section .getSectionNumber ()];
112
105
updateSectionVersion (section , last );
113
106
}
114
107
}
115
108
116
109
@ Override
117
- public DefaultMutableTreeNode getJTreeNode (final int modus ) {
110
+ public DefaultMutableTreeNode getJTreeNode (int modus ) {
118
111
119
112
// need this KVP at end of loop to set ImageSource
120
- final KVP eitKVP = new KVP ("EIT" );
121
- final DefaultMutableTreeNode t = new DefaultMutableTreeNode (eitKVP );
113
+ KVP eitKVP = new KVP ("EIT" );
114
+ DefaultMutableTreeNode t = new DefaultMutableTreeNode (eitKVP );
122
115
123
116
Map <ServiceIdentification , EITsection []> allEitImageMap = new TreeMap <>();
124
117
125
118
for (Entry <Integer , TreeMap <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>>> network :newEit .entrySet ()) {
126
- final Integer orgNetworkId = network .getKey ();
127
- TreeMap <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>> networkSections = network .getValue ();
119
+ Integer orgNetworkId = network .getKey ();
120
+ SortedMap <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>> networkSections = network .getValue ();
128
121
129
122
// need this KVP at end of loop to set ImageSource
130
- final KVP networkNodeKVP = new KVP ("original_network_id" , orgNetworkId ,Utils .getOriginalNetworkIDString (orgNetworkId ));
131
- final DefaultMutableTreeNode networkNode = new DefaultMutableTreeNode (networkNodeKVP );
123
+ KVP networkNodeKVP = new KVP ("original_network_id" , orgNetworkId ,Utils .getOriginalNetworkIDString (orgNetworkId ));
124
+ DefaultMutableTreeNode networkNode = new DefaultMutableTreeNode (networkNodeKVP );
132
125
t .add (networkNode );
133
126
134
127
Map <ServiceIdentification , EITsection []> networkImageMap = new TreeMap <>();
135
128
136
129
for (Entry <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>> netWorkSection :networkSections .entrySet ()) {
137
- final Integer transport_stream_id = netWorkSection .getKey ();
138
- TreeMap <Integer , TreeMap <Integer , EITsection []>> streams = netWorkSection .getValue ();
130
+ Integer transport_stream_id = netWorkSection .getKey ();
131
+ SortedMap <Integer , TreeMap <Integer , EITsection []>> streams = netWorkSection .getValue ();
139
132
140
133
// need this KVP at end of loop to set ImageSource
141
- final KVP streamNodeKVP = new KVP ("transport_stream_id" , transport_stream_id ,null );
142
- final DefaultMutableTreeNode streamNode = new DefaultMutableTreeNode (streamNodeKVP );
134
+ KVP streamNodeKVP = new KVP ("transport_stream_id" , transport_stream_id ,null );
135
+ DefaultMutableTreeNode streamNode = new DefaultMutableTreeNode (streamNodeKVP );
143
136
networkNode .add (streamNode );
144
137
145
138
TreeMap <ServiceIdentification , EITsection []> streamImageMap = new TreeMap <>();
146
139
147
140
for (Entry <Integer , TreeMap <Integer , EITsection []>> streamEntry : streams .entrySet ()) {
148
- final Integer serviceId = streamEntry .getKey ();
149
- TreeMap <Integer , EITsection []> service = streamEntry .getValue ();
141
+ Integer serviceId = streamEntry .getKey ();
142
+ SortedMap <Integer , EITsection []> service = streamEntry .getValue ();
150
143
151
144
// for EITImage, sections of this service with tableID >80
152
145
EITsection [] serviceSections = new EITsection [0 ];
153
146
154
- final KVP serviceNodeKVP = new KVP ("service_id" , serviceId ,getParentPSI ().getSdt ().getServiceName (orgNetworkId , transport_stream_id , serviceId ));
155
- final DefaultMutableTreeNode serviceNode = new DefaultMutableTreeNode (serviceNodeKVP );
147
+ KVP serviceNodeKVP = new KVP ("service_id" , serviceId ,getParentPSI ().getSdt ().getServiceName (orgNetworkId , transport_stream_id , serviceId ));
148
+ DefaultMutableTreeNode serviceNode = new DefaultMutableTreeNode (serviceNodeKVP );
156
149
157
150
serviceNodeKVP .addHTMLSource (() -> service .entrySet ().
158
151
stream ().
@@ -172,7 +165,7 @@ public DefaultMutableTreeNode getJTreeNode(final int modus) {
172
165
Integer tableId = serviceEntry .getKey ();
173
166
EITsection [] sections = serviceEntry .getValue ();
174
167
175
- final KVP tableNodeKVP = new KVP ("tableid" , tableId ,TableSection .getTableType (tableId ));
168
+ KVP tableNodeKVP = new KVP ("tableid" , tableId ,TableSection .getTableType (tableId ));
176
169
tableNodeKVP .addHTMLSource (() -> Arrays .stream (sections ).
177
170
filter (Objects ::nonNull ).
178
171
map (e -> e .getHtmlForEit (modus )).
@@ -181,7 +174,7 @@ public DefaultMutableTreeNode getJTreeNode(final int modus) {
181
174
);
182
175
183
176
tableNodeKVP .addTableSource (()->getTableModel (sections ), "Events" );
184
- final DefaultMutableTreeNode tableNode = new DefaultMutableTreeNode (tableNodeKVP );
177
+ DefaultMutableTreeNode tableNode = new DefaultMutableTreeNode (tableNodeKVP );
185
178
serviceNode .add (tableNode );
186
179
187
180
if (tableId >=80 ) {
@@ -191,11 +184,11 @@ public DefaultMutableTreeNode getJTreeNode(final int modus) {
191
184
192
185
for (EITsection section : sections ) {
193
186
if (section != null ){
194
- if (! simpleModus (modus )){
195
- addSectionVersionsToJTree (tableNode , section , modus );
196
- } else {
197
- addListJTree (tableNode ,section . getEventList (), modus , "events" );
198
- }
187
+ if ( simpleModus (modus )) {
188
+ addListJTree (tableNode , section . getEventList () , modus , "events" );
189
+ } else {
190
+ addSectionVersionsToJTree (tableNode , section , modus );
191
+ }
199
192
}
200
193
}
201
194
}
@@ -299,28 +292,28 @@ private static EITsection[] appendSections(EITsection[] serviceSections, EITsect
299
292
* @param eitTable map of service IDs to EITSection[] Can contain sections from different Table IDs, like 0x50 and 0x51, etc... (for very long EPGs)
300
293
* @return Interval that covers all events in eitTable
301
294
*/
302
- public static Interval getSpanningInterval (final Set <ServiceIdentification > serviceSet , Map <ServiceIdentification , EITsection []> eitTable ) {
303
- Date startDate = null ;
304
- Date endDate = null ;
295
+ public static Interval getSpanningInterval (Set <ServiceIdentification > serviceSet , Map <ServiceIdentification , EITsection []> eitTable ) {
296
+ LocalDateTime startDate = null ;
297
+ LocalDateTime endDate = null ;
305
298
// services to be displayed
306
299
307
- for (final ServiceIdentification serviceNo : serviceSet ){
308
- for (final EITsection section :eitTable .get (serviceNo )){
300
+ for (ServiceIdentification serviceNo : serviceSet ){
301
+ for (EITsection section :eitTable .get (serviceNo )){
309
302
if (section != null ){
310
303
List <Event > eventList = section .getEventList ();
311
304
for (Event event :eventList ){
312
- final byte [] startTime = event .getStartTime ();
305
+ byte [] startTime = event .getStartTime ();
313
306
if (isUndefined (startTime )){ // undefined start time
314
307
continue ;
315
308
}
316
- Date eventStart = getUTCDate ( startTime );
317
- if ((startDate ==null )||(startDate .after (eventStart ))){
309
+ LocalDateTime eventStart = Utils . getUTCLocalDateTime ( startTime );
310
+ if ((startDate ==null )||(startDate .isAfter (eventStart ))){
318
311
startDate = eventStart ;
319
312
}
320
313
if (eventStart !=null ){
321
314
try {
322
- Date eventEnd = new Date ( eventStart .getTime ()+ getDurationMillis (event .getDuration ()));
323
- if ((endDate ==null )||(endDate .before (eventEnd ))){
315
+ LocalDateTime eventEnd =eventStart .plusSeconds ( getDurationSeconds (event .getDuration ()));
316
+ if ((endDate ==null )||(endDate .isBefore (eventEnd ))){
324
317
endDate = eventEnd ;
325
318
}
326
319
}catch (NumberFormatException nfe ){
@@ -350,15 +343,15 @@ public Map<ServiceIdentification, EITsection[]> getFlatEit(IntPredicate schedule
350
343
351
344
for (Entry <Integer , TreeMap <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>>> networkEntry : newEit .entrySet ()) {
352
345
int orgNetworkId = networkEntry .getKey ();
353
- TreeMap <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>> network = networkEntry .getValue ();
346
+ SortedMap <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>> network = networkEntry .getValue ();
354
347
355
348
for (Entry <Integer , TreeMap <Integer , TreeMap <Integer , EITsection []>>> streamEntry : network .entrySet ()) {
356
349
int streamId = streamEntry .getKey ();
357
- TreeMap <Integer , TreeMap <Integer , EITsection []>> stream = streamEntry .getValue ();
350
+ SortedMap <Integer , TreeMap <Integer , EITsection []>> stream = streamEntry .getValue ();
358
351
359
352
for (Entry <Integer , TreeMap <Integer , EITsection []>> serviceEntry : stream .entrySet ()) {
360
353
int serviceId = serviceEntry .getKey ();
361
- TreeMap <Integer , EITsection []> service = serviceEntry .getValue ();
354
+ SortedMap <Integer , EITsection []> service = serviceEntry .getValue ();
362
355
363
356
for (Entry <Integer , EITsection []> tableEntry : service .entrySet ()) {
364
357
int tableId = tableEntry .getKey ();
@@ -391,7 +384,7 @@ static TableHeader<EITsection, Event> buildEitTableHeader() {
391
384
392
385
.addOptionalRepeatingRowColumn ("rating " , component -> findDescriptorApplyListFunc (
393
386
component .getDescriptorList (), ParentalRatingDescriptor .class ,
394
- ratingDescriptor -> ratingDescriptor .getRatingList (). stream (). collect ( Collectors . toList ())),
387
+ ratingDescriptor -> new ArrayList <>( ratingDescriptor .getRatingList ())),
395
388
ParentalRatingDescriptor .Rating .class )
396
389
.build ();
397
390
}
0 commit comments