adding doc
[mir.git] / source / mir / entity / adapter / EntityAdapterModel.java
index 154b161..b840bc6 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2001, 2002  The Mir-coders group
+ * Copyright (C) 2001, 2002 The Mir-coders group
  *
  * This file is part of Mir.
  *
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with the com.oreilly.servlet library, any library
- * licensed under the Apache Software License, The Sun (tm) Java Advanced
- * Imaging library (JAI), The Sun JIMI library (or with modified versions of
- * the above that use the same license as the above), and distribute linked
- * combinations including the two.  You must obey the GNU General Public
- * License in all respects for all of the code used other than the above
- * mentioned libraries.  If you modify this file, you may extend this exception
- * to your version of the file, but you are not obligated to do so.  If you do
- * not wish to do so, delete this exception statement from your version.
+ * the code of this program with  any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two.  You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries.  If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
  */
+package mir.entity.adapter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import mir.entity.Entity;
+import mir.storage.Database;
+
+public class EntityAdapterModel {
+  private Map entityAdapterMappings;
+
+  public EntityAdapterModel() {
+    entityAdapterMappings = new HashMap();
+  }
+
+  public EntityAdapter makeEntityAdapter( String aName, Entity anEntity ) {
+    Mapping mapping = getMappingForName( aName );
+
+    return mapping.getDefinition().makeEntityAdapter( anEntity, this );
+  }
+
+  public EntityAdapter createNewEntity( String aName ) throws EntityAdapterExc {
+    try {
+      Mapping mapping = getMappingForName(aName);
+      Entity entity = mapping.database.createNewEntity();
+
+      return mapping.getDefinition().makeEntityAdapter(entity, this);
+    }
+    catch (Throwable t) {
+      throw new EntityAdapterFailure(t);
+    }
+  }
+
+  public void addMapping(String aName, Database aDatabase, EntityAdapterDefinition aDefinition ) {
+    entityAdapterMappings.put(aName, new Mapping(aDatabase, aDefinition));
+  }
+
+  public Mapping getMappingForName( String aName ) {
+    if (!entityAdapterMappings.containsKey(aName))
+      throw new EntityAdapterFailure("'" + aName + "' not present in model", null);
+
+    return (Mapping) entityAdapterMappings.get( aName );
+  }
+
+  public class Mapping {
+    private Database database;
+    private EntityAdapterDefinition definition;
+
+    public Mapping(Database aDatabase, EntityAdapterDefinition aDefinition ) {
+      database = aDatabase;
+      definition = aDefinition;
+    }
+
+    public Database getDatabase() {
+      return database;
+    }
+
+    public EntityAdapterDefinition getDefinition() {
+      return definition;
+    }
+  }
+}
+
 
-package mir.entity.adapter;\r
-\r
-import java.util.*;\r
-import mir.entity.*;\r
-import mir.storage.*;\r
-import mir.util.*;\r
-\r
-public class EntityAdapterModel {\r
-  private Map entityAdapterMappings;\r
-\r
-  public EntityAdapterModel() {\r
-    entityAdapterMappings = new HashMap();\r
-  }\r
-\r
-  public EntityAdapter makeEntityAdapter( String aName, Entity anEntity ) {\r
-    Mapping mapping = getMappingForName( aName );\r
-\r
-    if (mapping == null )\r
-      throw new RuntimeException( "Adapter definition with name '" + aName + "' not present in model" );\r
-\r
-    return mapping.getDefinition().makeEntityAdapter( anEntity, this );\r
-  }\r
-\r
-  public void addMapping( String aName, StorageObject aStorage, EntityAdapterDefinition aDefinition ) {\r
-    entityAdapterMappings.put( aName, new Mapping( aStorage, aDefinition ) );\r
-    }\r
-\r
-  public Mapping getMappingForName( String aName ) {\r
-    return (Mapping) entityAdapterMappings.get( aName );\r
-  }\r
-\r
-  public class Mapping {\r
-    private StorageObject storage;\r
-    private EntityAdapterDefinition definition;\r
-\r
-    public Mapping( StorageObject aStorage, EntityAdapterDefinition aDefinition ) {\r
-      storage = aStorage;\r
-      definition = aDefinition;\r
-    }\r
-\r
-    public StorageObject getStorage() {\r
-      return storage;\r
-    }\r
-\r
-    public EntityAdapterDefinition getDefinition() {\r
-      return definition;\r
-    }\r
-  }\r
-}\r
-\r
-\r
-                                                                                                   
\ No newline at end of file