TestStore.java Source code

Java tutorial

Introduction

Here is the source code for TestStore.java

Source

/* License
 * 
 * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *  
 *  * Redistribution of source code must retain the above copyright notice,
 *      this list of conditions and the following disclaimer.
 * 
 *  * Redistribution 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.
 * 
 * Neither the name of Sun Microsystems, Inc. or the names of contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *  
 * This software is provided "AS IS," without a warranty of any kind. ALL
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN")
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *  
 * You acknowledge that this software is not designed, licensed or intended
 * for use in the design, construction, operation or maintenance of any
 * nuclear facility. 
 */

import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;

public class TestStore extends MIDlet {

    static final String DBNAME = "mydata";

    public TestStore() {

        RecordStore rs = null;

        // Data is persistent across MIDlet invocations.
        // So, first clear out the old record store...

        try {
            RecordStore.deleteRecordStore(DBNAME);
        } catch (Exception e) {
            // ignore any errors...
        }

        // Now create a new one and dump
        // each element out....

        try {
            rs = RecordStore.openRecordStore(DBNAME, true);

            byte[] data1 = "Here is the first record".getBytes();
            byte[] data2 = "And here is the second".getBytes();
            byte[] data3 = "And then the third".getBytes();

            data3[0] = 0;
            data3[data3.length - 1] = (byte) -1;

            rs.addRecord(data1, 0, data1.length);
            rs.addRecord(data2, 0, data2.length);
            rs.addRecord(data3, 0, data3.length);

            dumpRecordStore(rs, System.out);

            rs.closeRecordStore();
        } catch (RecordStoreException e) {
            System.out.println(e);
        }

        notifyDestroyed();
    }

    public void dumpRecordStore(RecordStore rs, PrintStream out) {
        if (rs == null)
            return;

        StringBuffer hexLine = new StringBuffer();
        StringBuffer charLine = new StringBuffer();

        try {
            int lastID = rs.getNextRecordID();
            byte[] data = new byte[100];
            int size;

            for (int i = 1; i < lastID; ++i) {
                try {
                    size = rs.getRecordSize(i);
                    if (size > data.length) {
                        data = new byte[size * 2];
                    }

                    out.println("Record " + i + " of size " + size);

                    rs.getRecord(i, data, 0);
                    dumpRecord(data, size, out, hexLine, charLine, 16);

                    out.println("");
                } catch (InvalidRecordIDException e) {
                    continue;
                }
            }
        }

        catch (RecordStoreException e) {
            out.println("Exception reading record store: " + e);
        }
    }

    private void dumpRecord(byte[] data, int size, PrintStream out, StringBuffer hexLine, StringBuffer charLine,
            int maxLen) {
        if (size == 0)
            return;

        hexLine.setLength(0);
        charLine.setLength(0);

        int count = 0;

        for (int i = 0; i < size; ++i) {
            char b = (char) (data[i] & 0xFF);

            if (b < 0x10) {
                hexLine.append('0');
            }

            hexLine.append(Integer.toHexString(b));
            hexLine.append(' ');

            if ((b >= 32 && b <= 127) || Character.isDigit(b) || Character.isLowerCase(b)
                    || Character.isUpperCase(b)) {
                charLine.append((char) b);
            } else {
                charLine.append('.');
            }

            if (++count >= maxLen || i == size - 1) {
                while (count++ < maxLen) {
                    hexLine.append("   ");
                }

                hexLine.append(' ');
                hexLine.append(charLine.toString());

                out.println(hexLine.toString());

                hexLine.setLength(0);
                charLine.setLength(0);
                count = 0;
            }
        }
    }

    public void destroyApp(boolean unconditional) {
    }

    public void startApp() {
    }

    public void pauseApp() {
    }
}