1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jmonit.web;
17
18 import java.util.Collection;
19 import java.util.Iterator;
20
21 import org.jmonit.Monitor;
22 import org.jmonit.reporting.Visitable;
23
24 public final class MonitorsIterator
25 implements Iterator<Visitable>
26 {
27
28 private final Iterator<Monitor> iterator;
29
30 private final Collection<Class> features;
31
32 private Monitor next;
33
34
35
36
37
38
39 public MonitorsIterator( Iterator<Monitor> iterator, Collection<Class> features )
40 {
41 this.iterator = iterator;
42 this.features = features;
43 findNext();
44 }
45
46 public boolean hasNext()
47 {
48 return next != null;
49 }
50
51 public Visitable next()
52 {
53 final Monitor monitor = next;
54 Visitable visit = new VisitableMonitor( monitor, features );
55 findNext();
56 return visit;
57 }
58
59 private void findNext()
60 {
61 next = null;
62 while ( iterator.hasNext() )
63 {
64 Monitor m = iterator.next();
65 if ( features == null || m.getFeatures().containsAll( features ) )
66 {
67 next = m;
68 break;
69 }
70 }
71 }
72
73 public void remove()
74 {
75 throw new UnsupportedOperationException();
76 }
77 }