1 /*******************************************************************************
2 * Copyright (c) 2012 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.internal
.lttng2
.kernel
.ui
.views
.common
;
15 import java
.util
.Iterator
;
16 import java
.util
.List
;
17 import java
.util
.NoSuchElementException
;
19 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.ITimeEvent
;
20 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.TimeEvent
;
22 public class EventIterator
implements Iterator
<ITimeEvent
> {
24 private long fStartTime
;
25 private long fEndTime
;
26 private List
<ITimeEvent
> fEventList
;
27 private List
<ITimeEvent
> fZoomedEventList
;
28 private long fZoomedStartTime
;
29 private long fZoomedEndTime
;
30 private int fIndex
= 0;
31 private int fZoomedIndex
= 0;
32 private ITimeEvent fNext
= null;
33 private ITimeEvent fZoomedNext
= null;
35 public EventIterator(List
<ITimeEvent
> eventList
, List
<ITimeEvent
> zoomedEventList
) {
36 this(eventList
, zoomedEventList
, Long
.MIN_VALUE
, Long
.MAX_VALUE
);
39 public EventIterator(List
<ITimeEvent
> eventList
, List
<ITimeEvent
> zoomedEventList
, long startTime
, long endTime
) {
40 fEventList
= eventList
;
41 fZoomedEventList
= zoomedEventList
;
42 if (zoomedEventList
!= null && zoomedEventList
.size() > 0) {
43 fZoomedStartTime
= zoomedEventList
.get(0).getTime();
44 ITimeEvent lastEvent
= zoomedEventList
.get(zoomedEventList
.size() - 1);
45 fZoomedEndTime
= lastEvent
.getTime() + lastEvent
.getDuration();
47 fZoomedStartTime
= Long
.MAX_VALUE
;
48 fZoomedEndTime
= Long
.MIN_VALUE
;
50 fStartTime
= startTime
;
55 public boolean hasNext() {
56 if (fNext
== null && fEventList
!= null) {
57 while (fIndex
< fEventList
.size()) {
58 ITimeEvent event
= fEventList
.get(fIndex
++);
59 if (event
.getTime() + event
.getDuration() >= fStartTime
&& event
.getTime() <= fEndTime
) {
69 if (fZoomedNext
== null && fZoomedEventList
!= null) {
70 while (fZoomedIndex
< fZoomedEventList
.size()) {
71 ITimeEvent event
= fZoomedEventList
.get(fZoomedIndex
++);
72 if (event
.getTime() + event
.getDuration() >= fStartTime
&& event
.getTime() <= fEndTime
) {
77 if (fZoomedNext
== null) {
78 fZoomedEventList
= null;
82 return fNext
!= null || fZoomedNext
!= null;
86 public ITimeEvent
next() {
88 if (fZoomedNext
!= null && (fNext
== null || fZoomedNext
.getTime() <= fNext
.getTime())) {
89 if (fNext
!= null && fNext
.getTime() == fZoomedNext
.getTime()) {
90 long duration
= fNext
.getTime() + fNext
.getDuration() - fZoomedEndTime
;
92 fNext
= new TimeEvent(fNext
.getEntry(), fZoomedEndTime
, duration
);
97 ITimeEvent event
= fZoomedNext
;
101 if (fNext
.getTime() < fZoomedEndTime
&& fNext
.getTime() + fNext
.getDuration() > fZoomedStartTime
) {
102 ITimeEvent event
= new TimeEvent(fNext
.getEntry(), fNext
.getTime(), fZoomedStartTime
- fNext
.getTime());
103 long duration
= fNext
.getTime() + fNext
.getDuration() - fZoomedEndTime
;
105 fNext
= new TimeEvent(fNext
.getEntry(), fZoomedEndTime
, duration
);
111 ITimeEvent event
= fNext
;
115 throw new NoSuchElementException();
119 public void remove() {
120 throw new UnsupportedOperationException();
This page took 0.032539 seconds and 5 git commands to generate.