Mercurial > hg > blitz_condensed
diff src/org/dancres/blitz/meta/RegistryFactory.java @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/dancres/blitz/meta/RegistryFactory.java Sat Mar 21 11:00:06 2009 +0000 @@ -0,0 +1,51 @@ +package org.dancres.blitz.meta; + +import java.io.File; +import java.io.IOException; + +import java.util.Map; +import java.util.HashMap; + +import org.dancres.blitz.disk.Disk; + +public class RegistryFactory { + private static Map theMetas = new HashMap(); + + /** + @param aName the name of the registry you wish to load/create + @param anInitializer Registry instances are created under a transaction. + Certain uses may require that initialization be done under the same + transaction. In these cases, the caller should pass in an Initializer + instance containing the appropriate "boot code". If no initialization + is required, the caller may pass <code>null</code>. + */ + public static Registry get(String aName, Initializer anInitializer) + throws IOException { + + synchronized(theMetas) { + Registry myData = (Registry) theMetas.get(aName); + + if (myData == null) { + myData = new RegistryImpl(aName, anInitializer); + theMetas.put(aName, myData); + } + + return myData; + } + } + + public static boolean exists(String aName) { + return RegistryImpl.exists(aName); + } + + public static void delete(String aName) throws IOException { + synchronized(theMetas) { + RegistryImpl myData = (RegistryImpl) theMetas.get(aName); + + if (myData != null) { + theMetas.remove(aName); + myData.delete(); + } + } + } +}