View Javadoc

1   package org.weda.model.impl;
2   
3   import java.util.HashMap;
4   import java.util.List;
5   import java.util.Map;
6   import org.weda.data.DataProvider;
7   import org.weda.data.DataProviderServiceException;
8   import org.weda.model.EditorModel;
9   import org.weda.model.EditorModelFactory;
10  import org.weda.model.EditorModelRegistry;
11  import org.weda.model.EditorModelRegistryException;
12  import org.weda.model.EditorModelGroup;
13  import org.weda.tapestry.component.EditorGroup;
14  
15  /**
16   *
17   * @author tim
18   */
19  public class EditorModelRegistryImpl implements EditorModelRegistry{
20      private Map<String, EditorModelGroup> modelGroups =
21          new HashMap<String, EditorModelGroup>();
22      
23      public EditorModelGroup getEditorModelGroup(String name) 
24          throws EditorModelRegistryException
25      {
26          if (modelGroups.containsKey(name))
27              return modelGroups.get(name);
28          else
29              throw new EditorModelRegistryException(
30                  String.format(
31                      "Editor model group (%s) not registered in registry"
32                      , name));
33      }
34      
35      public void setEditorModelFactories(List<EditorModelFactory> factories){
36          for (EditorModelFactory factory: factories)
37              for (EditorModelGroup group: factory.getEditorModelGroups())
38                  modelGroups.put(group.getName(), group);
39      }
40  
41      public DataProvider getDataProvider(Object dataIdentificator) 
42          throws DataProviderServiceException 
43      {
44          EditorModelDataId dataId = (EditorModelDataId)dataIdentificator;
45          try{            
46              EditorModelGroup group = 
47                      getEditorModelGroup(dataId.getEditorGroupName());
48              EditorModel model = 
49                      group.getEditorModel(dataId.getEditorModelName());
50              EditorModelDataProvider provider = 
51                      new EditorModelDataProvider(model);
52              return provider;
53          }catch(Exception e){
54              throw new DataProviderServiceException(
55                      String.format(
56                          "Can't create data provider for editor model (%s) " +
57                          "in editor model group (%s)"
58                          , dataId.getEditorModelName()
59                          , dataId.getEditorGroupName())
60                      , e);
61          }
62      }
63  
64      public Class getDataIdentificatorClass() {
65          return EditorModelDataId.class;
66      }
67      
68  }