www.pudn.com > 20061029005.rar > SeaPersistence.java


// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov. 
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html 
// Decompiler options: packimports(3) fieldsfirst ansi  
 
package org.cesar.inmotion.sea; 
 
import java.io.*; 
import javax.microedition.rms.RecordStore; 
 
public class SeaPersistence 
{ 
 
    private static final String SEA_DB = "Sea_DB"; 
    private static SeaPersistence instance; 
    private RecordStore recordStore; 
    private int scoreValues[] = { 
        0, 0, 0 
    }; 
    private String scoreNames[] = { 
        "AAA", "BBB", "CCC" 
    }; 
    private byte level; 
 
    public SeaPersistence() 
    { 
        level = 0; 
        load(); 
    } 
 
    public String getScoreName(int i) 
    { 
        return scoreNames[i]; 
    } 
 
    public int getScoreValue(int i) 
    { 
        return scoreValues[i]; 
    } 
 
    public static SeaPersistence getInstance() 
    { 
        if(instance == null) 
            instance = new SeaPersistence(); 
        return instance; 
    } 
 
    public void load() 
    { 
        try 
        { 
            if(recordStore == null) 
                recordStore = RecordStore.openRecordStore("Sea_DB", true); 
            if(recordStore != null && recordStore.getNumRecords() > 0) 
                unpack(recordStore.getRecord(1)); 
        } 
        catch(Exception exception) { } 
    } 
 
    public boolean save() 
    { 
        boolean flag = false; 
        if(recordStore != null) 
        { 
            byte abyte0[] = pack(); 
            try 
            { 
                if(recordStore.getNumRecords() == 0) 
                    recordStore.addRecord(abyte0, 0, abyte0.length); 
                else 
                    recordStore.setRecord(1, abyte0, 0, abyte0.length); 
                flag = true; 
            } 
            catch(Exception exception) { } 
        } 
        return flag; 
    } 
 
    public void setScore(String s, int i) 
    { 
        byte byte0 = (byte)s.length(); 
        for(int j = 0; j < 3 - byte0; j++) 
            s = s + " "; 
 
        for(int k = 0; k < scoreValues.length; k++) 
            if(scoreValues[k] < i) 
            { 
                for(int l = scoreValues.length - 1; l > k; l--) 
                { 
                    scoreNames[l] = scoreNames[l - 1]; 
                    scoreValues[l] = scoreValues[l - 1]; 
                } 
 
                scoreNames[k] = s; 
                scoreValues[k] = i; 
                k = scoreValues.length; 
            } 
 
        save(); 
    } 
 
    public void close() 
    { 
        if(recordStore != null) 
            try 
            { 
                recordStore.closeRecordStore(); 
            } 
            catch(Exception exception) { } 
    } 
 
    public static void resetRecordStore(String s) 
        throws Exception 
    { 
        RecordStore.deleteRecordStore(s); 
    } 
 
    public int getScoreNumber() 
    { 
        return scoreNames.length; 
    } 
 
    private byte[] pack() 
    { 
        byte abyte0[] = null; 
        try 
        { 
            ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); 
            DataOutputStream dataoutputstream = new DataOutputStream(bytearrayoutputstream); 
            boolean flag = false; 
            for(int i = 0; i < scoreNames.length; i++) 
                dataoutputstream.writeUTF(scoreNames[i]); 
 
            for(int j = 0; j < scoreValues.length; j++) 
                dataoutputstream.writeInt(scoreValues[j]); 
 
            abyte0 = bytearrayoutputstream.toByteArray(); 
            dataoutputstream.close(); 
        } 
        catch(Exception exception) { } 
        return abyte0; 
    } 
 
    private void unpack(byte abyte0[]) 
    { 
        try 
        { 
            DataInputStream datainputstream = new DataInputStream(new ByteArrayInputStream(abyte0)); 
            boolean flag = false; 
            for(int i = 0; i < scoreNames.length; i++) 
                scoreNames[i] = datainputstream.readUTF(); 
 
            for(int j = 0; j < scoreValues.length; j++) 
                scoreValues[j] = datainputstream.readInt(); 
 
            datainputstream.close(); 
        } 
        catch(Exception exception) { } 
    } 
}