001: /**
002: * JDBM LICENSE v1.00
003: *
004: * Redistribution and use of this software and associated documentation
005: * ("Software"), with or without modification, are permitted provided
006: * that the following conditions are met:
007: *
008: * 1. Redistributions of source code must retain copyright
009: * statements and notices. Redistributions must also contain a
010: * copy of this document.
011: *
012: * 2. Redistributions in binary form must reproduce the
013: * above copyright notice, this list of conditions and the
014: * following disclaimer in the documentation and/or other
015: * materials provided with the distribution.
016: *
017: * 3. The name "JDBM" must not be used to endorse or promote
018: * products derived from this Software without prior written
019: * permission of Cees de Groot. For written permission,
020: * please contact cg@cdegroot.com.
021: *
022: * 4. Products derived from this Software may not be called "JDBM"
023: * nor may "JDBM" appear in their names without prior written
024: * permission of Cees de Groot.
025: *
026: * 5. Due credit should be given to the JDBM Project
027: * (http://jdbm.sourceforge.net/).
028: *
029: * THIS SOFTWARE IS PROVIDED BY THE JDBM PROJECT AND CONTRIBUTORS
030: * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
031: * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
032: * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
033: * CEES DE GROOT OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
034: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
035: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
036: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
037: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
038: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
039: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
040: * OF THE POSSIBILITY OF SUCH DAMAGE.
041: *
042: * Copyright 2000 (C) Cees de Groot. All Rights Reserved.
043: * Copyright 2000-2001 (C) Alex Boisvert. All Rights Reserved.
044: * Contributions are Copyright (C) 2000 by their associated contributors.
045: *
046: * $Id: RecordManagerFactory.java,v 1.2 2005/06/25 23:12:31 doomdark Exp $
047: */package jdbm;
048:
049: import java.io.IOException;
050: import java.util.Properties;
051:
052: /**
053: * This is the factory class to use for instantiating {@link RecordManager}
054: * instances.
055: *
056: * @author <a href="mailto:boisvert@intalio.com">Alex Boisvert</a>
057: * @author <a href="cg@cdegroot.com">Cees de Groot</a>
058: * @version $Id: RecordManagerFactory.java,v 1.2 2005/06/25 23:12:31 doomdark Exp $
059: */
060: public final class RecordManagerFactory {
061:
062: /**
063: * Create a record manager.
064: *
065: * @param name Name of the record file.
066: * @throws IOException if an I/O related exception occurs while creating
067: * or opening the record manager.
068: * @throws UnsupportedOperationException if some options are not supported by the
069: * implementation.
070: * @throws IllegalArgumentException if some options are invalid.
071: */
072: public static RecordManager createRecordManager(String name)
073: throws IOException {
074: return createRecordManager(name, new Properties());
075: }
076:
077: /**
078: * Create a record manager.
079: *
080: * @param name Name of the record file.
081: * @param options Record manager options.
082: * @throws IOException if an I/O related exception occurs while creating
083: * or opening the record manager.
084: * @throws UnsupportedOperationException if some options are not supported by the
085: * implementation.
086: * @throws IllegalArgumentException if some options are invalid.
087: */
088: public static RecordManager createRecordManager(String name,
089: Properties options) throws IOException {
090: String provider;
091: Class clazz;
092: RecordManagerProvider factory;
093:
094: provider = options.getProperty(
095: RecordManagerOptions.PROVIDER_FACTORY,
096: "jdbm.recman.Provider");
097:
098: try {
099: clazz = Class.forName(provider);
100: factory = (RecordManagerProvider) clazz.newInstance();
101: } catch (Exception except) {
102: throw new IllegalArgumentException(
103: "Invalid record manager provider: " + provider
104: + "\n[" + except.getClass().getName()
105: + ": " + except.getMessage() + "]");
106: }
107: return factory.createRecordManager(name, options);
108: }
109:
110: }
|