introduced AdapterEntityModel
[mir.git] / source / mir / entity / adapter / EntityAdapterModel.java
1 package mir.entity.adapter;\r
2 \r
3 import java.util.*;\r
4 import mir.entity.*;\r
5 import mir.storage.*;\r
6 import mir.util.*;\r
7 \r
8 public class EntityAdapterModel {\r
9   private Map entityAdapterMappings;\r
10 \r
11   public EntityAdapterModel() {\r
12     entityAdapterMappings = new HashMap();\r
13   }\r
14 \r
15   public EntityAdapter makeEntityAdapter( String aName, Entity anEntity ) {\r
16     Mapping mapping = getMappingForName( aName );\r
17 \r
18     if (mapping == null )\r
19       throw new RuntimeException( "Adapter definition with name '" + aName + "' not present in model" );\r
20 \r
21     return mapping.getDefinition().makeEntityAdapter( anEntity, this );\r
22   }\r
23 \r
24   public void addMapping( String aName, StorageObject aStorage, EntityAdapterDefinition aDefinition ) {\r
25     entityAdapterMappings.put( aName, new Mapping( aStorage, aDefinition ) );\r
26     }\r
27 \r
28   public Mapping getMappingForName( String aName ) {\r
29     return (Mapping) entityAdapterMappings.get( aName );\r
30   }\r
31 \r
32   public class Mapping {\r
33     private StorageObject storage;\r
34     private EntityAdapterDefinition definition;\r
35 \r
36     public Mapping( StorageObject aStorage, EntityAdapterDefinition aDefinition ) {\r
37       storage = aStorage;\r
38       definition = aDefinition;\r
39     }\r
40 \r
41     public StorageObject getStorage() {\r
42       return storage;\r
43     }\r
44 \r
45     public EntityAdapterDefinition getDefinition() {\r
46       return definition;\r
47     }\r
48   }\r
49 }\r
50 \r
51 \r
52