www.pudn.com > phonebk.rar > Model.java


/* 
 * Model.java 
 * 
 * Created on 2006年3月17日, 上午9:33 
 * 
 * To change this template, choose Tools | Options and locate the template under 
 * the Source Creation and Management node. Right-click the template and choose 
 * Open. You can then make changes to the template in the Source Editor. 
 */ 
 
package com.j2medev.sample.phonebook; 
 
 
import java.util.*; 
import javax.microedition.rms.*; 
import java.io.*; 
/** 
 * 
 * @author Admin 
 */ 
public class Model { 
     
    private RecordStore rs = null; 
    private RecordStore rs_index = null; 
    private RecordStore accout = null; 
 //   private Vector entries = new Vector(); 
    //添加联系人 
     
    public Model(){ 
        try{             
        rs = RecordStore.openRecordStore("data", true); 
        rs_index = RecordStore.openRecordStore("dataindex", true); 
        accout = RecordStore.openRecordStore("accout",true); 
        }catch(RecordStoreException e){ 
            e.printStackTrace(); 
        }  
    } 
    private static class indexFilter implements RecordFilter{ 
        private String key; 
        private int flag; 
        public indexFilter(String key,int flag){ 
            this.key = key; 
            this.flag = flag; 
        } 
        public boolean matches(byte[] data){ 
            if(key != null){ 
            try{ 
            return Index.matches(data,key,flag); 
            }catch(IOException e){ 
                e.printStackTrace(); 
                return false; 
            } 
        }else 
            return true; 
        } 
    } 
    public void addIndex(Index index) throws IOException{ 
        try{ 
             
        byte[] data = index.serialize(); 
        if(rs_index.getNumRecords()>=0){ 
            RecordEnumeration record = rs_index.enumerateRecords(new indexFilter(index.getKey(),0),null,false); 
            if(record.hasNextElement()){ 
                rs_index.setRecord(record.nextRecordId(), data, 0, data.length); 
            }else{ 
                //System.out.println("执行到这儿了"); 
                rs_index.addRecord(data, 0, data.length); 
            } 
        } 
    }catch(RecordStoreException e){ 
        e.printStackTrace(); 
    } 
         
    } 
    public void addEntry(Entry entry){ 
        try{           
        byte[] data = entry.serialize();    
       // System.out.println("执行到这儿了"); 
        int id = rs.addRecord(data, 0, data.length); 
        Index index = new Index(entry.getName(), id); 
        addIndex(index); 
        }catch(IOException ex){ 
            ex.printStackTrace(); 
        }catch(RecordStoreException e){ 
            e.printStackTrace(); 
        } 
        //entries.addElement(entry); 
         
    } 
    //得到联系人信息 
    public Entry getEntry(String name){ 
          try{ 
         RecordEnumeration rei = rs_index.enumerateRecords(new indexFilter(name, 0), null, false); 
        Index index = null; 
         if(rei.numRecords() == 1){ 
             int id = rei.nextRecordId(); 
             index = Index.deserialize(rs_index.getRecord(id)); 
             //int recordid = index.getRecordID(); 
          
             byte[] data = rs.getRecord(index.getRecordID()); 
             Entry entry = null; 
             return entry = Entry.deserialize(data); 
             } 
        }catch(RecordStoreException e){ 
            e.printStackTrace(); 
        }catch(IOException ex){ 
            ex.printStackTrace(); 
            return null; 
        } 
        return null; 
       // return (Entry)entries.elementAt(index); 
    } 
    /*/更新联系人信息 
    public void updateEntry(Entry entry){ 
        for(int i =0;idata.length){ 
                data = new byte[length + 10]; 
            } 
            rs_index.getRecord(id, data, 0); 
            index[i] = Index.deserialize(data); 
            i++; 
        } 
         
        return index; 
       // Entry[] ret= new Entry[entries.size()]; 
       // entries.copyInto(ret); 
      //  return ret; 
    } 
    //删除联系人 
    public void deletRecord(String name) throws RecordStoreException,IOException{ 
        int id = getanddelelindex(name, 0); 
        rs.deleteRecord(id); 
        /* 
        for(int i = 0; i