⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curriculumdao.java

📁 J2ME程序设计实例教程的源码
💻 JAVA
字号:
import javax.microedition.rms.*;
import java.io.IOException;

/**
 * 该类是一个数据访问对象(DAO)类,提供了对记录存储中课程对象的访问方法。
 */
public class CurriculumDAO {
    private static final String RS_NAME = "CURRICULUM";     //记录存储名
    private static CurriculumDAO dao = null;    //数据访问对象实例
    private RecordStore rs;                 //记录存储               
    private FindFilter filter;              //过滤器
    private RecordComparator comparator;    //比较器
    
    private CurriculumDAO() {
        filter = new FindFilter();          //创建过滤器
        comparator = new CurrComparator();  //创建比较器
    }
    
    //获取一个数据访问对象的实例
    public static CurriculumDAO getInstance() {
        if(dao == null) {
            dao = new CurriculumDAO();
        }
        
        return dao;
    }
    
    //打开课程对象的记录存储
    public void openRecordStore() throws DAOException {
        try {
            rs = RecordStore.openRecordStore(RS_NAME, true);    //打开记录存储,如果不存在就新建立一个记录存储
        }
        catch(RecordStoreException rse) {
            throw new DAOException("打开记录存储失败!\n原因:\n" + rse.getMessage());
        }
    }
    
    //关闭课程对象的记录存储
    public void closeRecordStore() throws DAOException {
        try {
            rs.closeRecordStore();
        }
        catch(RecordStoreException rse) {
            throw new DAOException("关闭记录存储失败!\n原因:\n" + rse.getMessage());
        }
    }
    
    //保存课程对象curr到记录存储中
    public void save(Curriculum curr) throws DAOException {
        if(find(curr.getDay(), curr.getTime()).length != 0) {
            throw new DAOException("保存课程对象失败!\n原因:\n上课时间发生冲突!\n" 
                   + Curriculum.WEEKS_LABEL[curr.getDay()] + "  "
                   + Curriculum.JIE_LABEL[curr.getTime()] + "已经有课。");
        }
        
        try {
            byte[] data = curr.sequence(); //序列化课程对象curr
            int id = curr.getID();
            if(id == -1) {  //新增课程对象
                rs.addRecord(data, 0, data.length);
            }
            else {          //更新
                rs.setRecord(id, data, 0, data.length);
            }
        }
        catch(IOException ioe) {
            throw new DAOException("保存课程对象失败!\n原因:\n" + ioe.getMessage());
        }
        catch(RecordStoreException rse) {
            throw new DAOException("保存课程对象失败!\n原因:\n" + rse.getMessage());
        }
    }
    
    //删除id课程对象
    public void delete(int id) throws DAOException {
        try {
            rs.deleteRecord(id);
        }
        catch(RecordStoreException rse) {
            throw new DAOException("删除课程对象失败!\n原因:\n" + rse.getMessage());
        }
    }
    
    //查找所有名字为name的课程对象
    public Curriculum[] find(String name) throws DAOException {
        filter.setCondition(name);  //设置过滤条件
        return getCurriculumArray(filter, comparator);
    }
    
    //查找week这天所有的课程对象
    public Curriculum[] find(int week) {
        filter.setCondition(week);  //设置过滤条件
        return getCurriculumArray(filter, comparator);
    }
    
    //查找指定日期,时间的课程
    public Curriculum[] find(int week, int time) {
        filter.setCondition(week, time);
        return getCurriculumArray(filter, comparator);
    }
    
    //获取记录存储中所有的课程对象
    public Curriculum[] getAll() {
        return getCurriculumArray(null, comparator);
    }
    
    //获取符合过滤器rf条件,并且排序的课程对象数组
    private Curriculum[] getCurriculumArray(RecordFilter rf, RecordComparator rc) {
        RecordEnumeration re = null;
        try {
            re = rs.enumerateRecords(rf, rc, false);
        }
        catch(RecordStoreException rse) {
            //
        }
        
        Curriculum[] curricula;
        if(re != null) {
            int size = re.numRecords();
            curricula = new Curriculum[size];
            byte[] data = null;
            for(int i=0; i<size; i++) {
                try {
                    int id = re.nextRecordId();
                    data = rs.getRecord(id);
                    curricula[i] = Curriculum.unSequence(data);//反序列化,生成课程对象
                    curricula[i].setID(id);
                } 
                catch(RecordStoreException rse) {
                    System.out.println("错误!" + rse.getMessage());
                }
                catch(IOException ioe) {
                    System.out.println("错误!" + ioe.getMessage());
                }
            }
        }
        else {
            curricula = new Curriculum[0];
        }
        
        return curricula;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -