Package palmed.io

Source Code of palmed.io.RecordFactory

/**
* Redistribution  and use  in source  and binary  forms, with  or without
* modification, are permitted provided  that the following conditions are
* met :
*
* . Redistributions  of  source  code  must  retain  the  above copyright
*   notice, this list of conditions and the following disclaimer.
*
* . Redistributions in  binary form  must reproduce  the above  copyright
*   notice, this list of conditions  and the following disclaimer in  the
*   documentation and/or other materials provided with the distribution.
*
* . The name of the author may not be used to endorse or promote products
*   derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS  PROVIDED BY THE  AUTHOR ``AS IS''  AND ANY EXPRESS  OR
* IMPLIED  WARRANTIES,  INCLUDING,  BUT   NOT  LIMITED  TO,  THE   IMPLIED
* WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE ARE
* DISCLAIMED.  IN NO  EVENT SHALL  THE AUTHOR  BE LIABLE  FOR ANY  DIRECT,
* INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL  DAMAGES
* (INCLUDING,  BUT  NOT LIMITED  TO,  PROCUREMENT OF  SUBSTITUTE  GOODS OR
* SERVICES;  LOSS  OF USE,  DATA,  OR PROFITS;  OR  BUSINESS INTERRUPTION)
* HOWEVER CAUSED  AND ON  ANY THEORY  OF LIABILITY,  WHETHER IN  CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY  WAY  OUT OF  THE  USE OF  THIS  SOFTWARE, EVEN  IF  ADVISED OF  THE
* POSSIBILITY OF SUCH DAMAGE.
*
* $Id$
*/

package palmed.io;

import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;

/**
* This class implements a record factory based on a record store.
*
* @author Mathieu Champlon
* @version $Revision$ $Date$
*/
public final class RecordFactory implements IRecordFactory
{
    /**
     * The record store.
     */
    private final RecordStore store_;
    /**
     * The record store name.
     */
    private final String name_;

    /**
     * Create a record factory.
     *
     * @param name the record store name
     */
    public RecordFactory( final String name )
    {
        try
        {
            store_ = RecordStore.openRecordStore( name, true );
        }
        catch( RecordStoreException e )
        {
            throw new RecordException( e );
        }
        name_ = name;
    }

    /**
     * {@inheritDoc}
     */
    public IRecord createRecord( final ISerializable serializable )
    {
        return new Record( store_, serializable );
    }

    /**
     * {@inheritDoc}
     */
    public IRecord getIndex( final ISerializable serializable )
    {
        try
        {
            final RecordEnumeration records = store_.enumerateRecords( null, null, false );
            if( records.hasNextElement() )
                return new Record( store_, serializable, records.nextRecordId() );
            final Record record = new Record( store_, serializable );
            record.persist();
            return record;
        }
        catch( RecordStoreException e )
        {
            throw new RecordException( e );
        }
    }

    /**
     * {@inheritDoc}
     */
    public void purge()
    {
        try
        {
            store_.closeRecordStore();
            RecordStore.deleteRecordStore( name_ );
        }
        catch( RecordStoreException e )
        {
            throw new RecordException( e );
        }
    }
}
TOP

Related Classes of palmed.io.RecordFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.