View Javadoc

1   /*
2    ~ Copyright 2006-2007 Nicolas De Loof.
3    ~
4    ~ Licensed under the Apache License, Version 2.0 (the "License");
5    ~ you may not use this file except in compliance with the License.
6    ~ You may obtain a copy of the License at
7    ~
8    ~      http://www.apache.org/licenses/LICENSE-2.0
9    ~
10   ~ Unless required by applicable law or agreed to in writing, software
11   ~ distributed under the License is distributed on an "AS IS" BASIS,
12   ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   ~ See the License for the specific language governing permissions and
14   ~ limitations under the License.
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       * @param iterator
36       * @param path
37       * @param feature
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  }