View Javadoc

1   package org.lcsim.detector;
2   
3   import java.util.ArrayList;
4   import java.util.HashMap;
5   import java.util.List;
6   import java.util.Map;
7   
8   public class PhysicalVolumeNavigatorStore 
9   extends ArrayList<IPhysicalVolumeNavigator>
10  implements IPhysicalVolumeNavigatorStore
11  {
12      Map<String,IPhysicalVolumeNavigator> navigators = new HashMap<String,IPhysicalVolumeNavigator>();    
13      private static PhysicalVolumeNavigatorStore store;
14      private String defaultNavigator="default";
15      
16      public static IPhysicalVolumeNavigatorStore getInstance()
17      {
18          if ( store == null )
19          {
20              store = new PhysicalVolumeNavigatorStore();
21          }
22          return store;        
23      }
24      
25      public boolean add(IPhysicalVolumeNavigator nav)
26      {
27          add(nav,nav.getName());
28          return true;
29      }
30      
31      public void add(IPhysicalVolumeNavigator nav, String name)
32      {   
33          navigators.put(name, nav);
34      }
35      
36      public IPhysicalVolumeNavigator createDefault(IPhysicalVolume topVolume)
37      {
38          //System.out.println("PhysicalVolumeNavigatorStore.createDefault");
39          return create("default",topVolume);
40      }
41      
42      public IPhysicalVolumeNavigator create(String name, IPhysicalVolume topVolume)
43      {
44          //System.out.println("PhysicalVolumeNavigatorStore.create - " + name);
45          IPhysicalVolumeNavigator nav = new PhysicalVolumeNavigator(name, topVolume);
46          add(nav, name);
47          return nav;
48      }
49      
50      public IPhysicalVolumeNavigator get(String name)
51      {
52          return navigators.get(name);
53      }
54      
55      public IPhysicalVolumeNavigator get(IPhysicalVolume world)
56      {
57          List<IPhysicalVolumeNavigator> search = find(world);
58          IPhysicalVolumeNavigator nav;
59          if ( search.size() == 0 )
60          {
61              nav = new PhysicalVolumeNavigator(defaultNavigator, world);
62          }
63          else {
64              nav = search.get(0);
65          }                
66          return nav;
67      }
68      
69      public List<IPhysicalVolumeNavigator> find(IPhysicalVolume world)
70      {
71          List<IPhysicalVolumeNavigator> navList = new ArrayList<IPhysicalVolumeNavigator>();
72          for ( IPhysicalVolumeNavigator nav : navList )
73          {
74              if ( nav.getTopPhysicalVolume() == world )
75              {
76                  navList.add(nav);
77              }
78          }
79          return navList;
80      }
81      
82      public IPhysicalVolumeNavigator getDefaultNavigator()
83      {
84          if ( !navigators.containsKey(defaultNavigator) )
85          {
86              throw new RuntimeException("No default navigator was found!");
87          }
88          else {
89              return navigators.get(defaultNavigator);
90          }
91      }           
92      
93      public void reset()
94      {
95          this.clear();
96          navigators = new HashMap<String,IPhysicalVolumeNavigator>();        
97      }
98  }