Package EMIDA.db

Source Code of EMIDA.db.RecordStoreImpl

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package EMIDA.db;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import javax.microedition.rms.RecordComparator;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordFilter;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreNotFoundException;
import javax.microedition.rms.RecordStoreNotOpenException;

/**
*
* @author nmartinez
*/
public class RecordStoreImpl  {

    private RecordStore recordStore = null;
    private RecordFilter filter = null;
    private RecordComparator comparator = null;

    /***
     *
     * @param _storeName
     */
    public RecordStoreImpl(String _storeName) {
        try {
            recordStore = RecordStore.openRecordStore(_storeName, true);
        } catch (RecordStoreNotFoundException rsnfe) {
            rsnfe.printStackTrace();
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    /***
     *
     * @param _recordType
     * @param _value
     * @return
     */
    public int addRecord(String _recordType, String _value) {
        int result = 1;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream outputStream = new DataOutputStream(baos);
        try {
            // Push the record type.
            outputStream.writeUTF(_recordType);
            // Then push the value.
            outputStream.writeUTF(_value);
        } catch (IOException ioe) {
            ioe.printStackTrace();
            result = 0;
        }

        // Extract the byte array
        byte[] b = baos.toByteArray();

        // Add it to the record store
        try {
            recordStore.addRecord(b, 0, b.length);
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
            result = 0;
        }
        return result;
    }

    /***
     *
     * @param _recordType
     * @return
     */
    public String getRecord(String _recordType) {
        //logger.debug("getRecord begins");
        String s_retValue = null;
        try {
            filter = new Filter(_recordType, _recordType);
            comparator = new Comparator();

            RecordEnumeration re = recordStore.enumerateRecords(filter, comparator, true);
            s_retValue = getRecordHelper(re);
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
        }
        //logger.debug("getRecord ends");
        return s_retValue;
    }

    /***
     *
     * @param _enumeration
     * @return
     */
    public String getRecordHelper(RecordEnumeration _enumeration) {
        //logger.debug("getRecordHelper begins");
        String s_recordValue = null;
        String s_recordType = null;
        try {
            while (_enumeration.hasNextElement()) {
                int id = _enumeration.nextRecordId();
                ByteArrayInputStream bais = new ByteArrayInputStream(recordStore.getRecord(id));
                DataInputStream inputStream = new DataInputStream(bais);
                try {
                    s_recordType = inputStream.readUTF();
                    s_recordValue = inputStream.readUTF();
                } catch (EOFException eofe) {
                    eofe.printStackTrace();
                }
            }
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        //logger.debug("getRecordHelper ends");
        return s_recordValue;
    }

    /***
     *
     * @return
     */
    public String[] getAllRecords() {
        //logger.debug("getAllRecords begins");
        String[] records = null;
        try {
            int numRecords = recordStore.getNumRecords();
            records = new String[numRecords];
            filter = null;
            comparator = null;

            RecordEnumeration re_enum = recordStore.enumerateRecords(filter, comparator, true);
            int i = 0;
            while (re_enum.hasNextElement()) {
                int id = re_enum.nextRecordId();
                ByteArrayInputStream bais = new ByteArrayInputStream(recordStore.getRecord(id));
                DataInputStream inputStream = new DataInputStream(bais);

                try {
                    String s_propID = inputStream.readUTF();
                    String s_propvalue = inputStream.readUTF();
                    records[i] = s_propvalue;
                    i++;
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        } catch (RecordStoreNotOpenException rsnoe) {
            rsnoe.printStackTrace();
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
        }
        //logger.debug("getAllRecords ends");
        return records;
    }

    /***
     *
     * @param _recordType
     * @param _value
     * @return
     */
    public int setRecord(String _recordType, String _value) {
        int result = 1;
        //logger.debug("setRecord begins");
        try {
            filter = new Filter(_recordType, _recordType);
            comparator = new Comparator();

            RecordEnumeration re = recordStore.enumerateRecords(filter, comparator, true);

            while (re.hasNextElement()) {
                int id = re.nextRecordId();

                // Delete the old record.
                recordStore.deleteRecord(id);
            }
            addRecord(_recordType, _value);
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
            result = 0;
        }
        //logger.debug("setRecord ends");
        return result;
    }

    /***
     *
     */
    public void printAllRecords() {
        //logger.debug("printAllRecords begins");
        try {
            filter = null;
            comparator = null;

            RecordEnumeration re_enum = recordStore.enumerateRecords(filter, comparator, true);
            while (re_enum.hasNextElement()) {
                int id = re_enum.nextRecordId();
                ByteArrayInputStream bais = new ByteArrayInputStream(recordStore.getRecord(id));
                DataInputStream inputStream = new DataInputStream(bais);

                try {
                    String s_propID = inputStream.readUTF();
                    String s_propvalue = inputStream.readUTF();
                    //logger.debug("Record " + id + ": " + s_propID + " : " + s_propvalue);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        } catch (RecordStoreNotOpenException rsnoe) {
            rsnoe.printStackTrace();
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
        }
        //logger.debug("printAllRecords ends");
    }

    /***
     *
     * @return
     */
    public int getRecordCount() {
        int numRecords = -1;
        try {
            numRecords = recordStore.getNumRecords();
        } catch (RecordStoreNotOpenException rsnoe) {
            rsnoe.printStackTrace();
        }
        return numRecords;
    }

    /***
     *
     * @param _recordStoreMaxSize
     * @return
     */
    public int controlSize(int _recordStoreMaxSize) {
        int result = 1;
        try {
            if (recordStore.getNumRecords() > _recordStoreMaxSize) {

                int numToDel = recordStore.getNumRecords() - _recordStoreMaxSize;

                for(int i = 0; i < numToDel; i++)
                {
                    deleteOldestRecord();
                }
            } else {

            }
        } catch (RecordStoreNotOpenException rsnoe) {

            rsnoe.printStackTrace();
        }
        return result;
    }

    /***
     *
     * @return
     */
    public int deleteOldestRecord() {
        int result = 1;
        int index;
        try {
            filter = null;
            comparator = null;

            RecordEnumeration re_enum = recordStore.enumerateRecords(filter, comparator, true);
            int id = re_enum.nextRecordId();
            index = id;
            while (re_enum.hasNextElement()) {
                id = re_enum.nextRecordId();
                if(id < index)
                    index = id;
            }
            recordStore.deleteRecord(index);
        } catch (RecordStoreNotOpenException rsnoe) {
            rsnoe.printStackTrace();
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
        }
        return result;
    }

    /***
     *
     * @return
     */
    public int deleteAllRecords() {
        int result = 1;
        try {
            filter = null;
            comparator = null;

            RecordEnumeration re_enum = recordStore.enumerateRecords(filter, comparator, true);
            while (re_enum.hasNextElement()) {
                int id = re_enum.nextRecordId();
                recordStore.deleteRecord(id);
            }
        } catch (RecordStoreNotOpenException rsnoe) {
            rsnoe.printStackTrace();
        } catch (RecordStoreException rse) {
            rse.printStackTrace();
        }
        return result;
    }
}
TOP

Related Classes of EMIDA.db.RecordStoreImpl

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.