View Javadoc

1   /*
2    * Copyright 2001-2004 The Apache Software Foundation.
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.jdiagnose.remote.provider;
17  
18  import java.util.ArrayList;
19  import java.util.Collection;
20  import java.util.Iterator;
21  import java.util.List;
22  
23  /***
24   * @author jmccrindle
25   */
26  public class MultiSystemProvider implements SystemProvider {
27      
28      private List providers = new ArrayList();
29      private SystemHolder defaultHolder = null;
30  
31      /* (non-Javadoc)
32       * @see org.jdiagnose.remote.provider.SystemProvider#getHolder(java.lang.String)
33       */
34      public SystemHolder getHolder(String id) {
35          
36          if(id == null) {
37              return defaultHolder;
38          }
39          
40          for (Iterator providerIterator = providers.iterator(); providerIterator.hasNext();) {
41              SystemProvider provider = (SystemProvider) providerIterator.next();
42              SystemHolder holder = provider.getHolder(id);
43              if(holder != null) {
44                  return holder;
45              }
46          }
47          return defaultHolder;
48      }
49  
50      /* (non-Javadoc)
51       * @see org.jdiagnose.remote.provider.SystemProvider#getDefaultHolder()
52       */
53      public SystemHolder getDefaultHolder() {
54          return defaultHolder;
55      }
56  
57      /* (non-Javadoc)
58       * @see org.jdiagnose.remote.provider.SystemProvider#getHolders()
59       */
60      public Collection getHolders() {
61          List holders = new ArrayList();
62          for (Iterator providerIterator = providers.iterator(); providerIterator.hasNext();) {
63              SystemProvider provider = (SystemProvider) providerIterator.next();
64              holders.addAll(provider.getHolders());
65          }
66          return holders;
67      }
68  
69      public void setDefaultHolder(SystemHolder defaultHolder) {
70          this.defaultHolder = defaultHolder;
71      }
72      public void setProviders(List providers) {
73          this.providers = providers;
74      }
75  }