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

📄 filedao.java

📁 java编写的简易留言本
💻 JAVA
字号:
package anni.gbook;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import anni.tools.FileSystem;


/**
 * 实现了IBoardDAO接口的类.
 * 注意这东西是个Singleton,不过方法都没有考虑同步
 * 因为没有经验,也不知道该怎么改
 * 与其现在考虑又想不出来,不如先记下来,以后有问题再改好了
 *
 * @author Lingo
 * @version 1.0
 * @since 2006-01-01 18:52
 */
public final class FileDAO implements IBoardDAO {
    /**
     * singleton中保存的是实例.
     */
    private static FileDAO instance = new FileDAO("data.txt");

    /**
     * 实际上使用FileSystem来操作数据.
     * FileDAO的作用只是进行数据封装
     */
    private FileSystem system;

    /**
     * 构造方法,指定一个保存数据的文件.
     * 因为使用的是相对变量,到底在哪里就不清楚了
     * @since 2006-01-01 18:53
     * @author Lingo
     * @param fileName 操作的文件名
     */
    private FileDAO(final String fileName) {
        system = new FileSystem(fileName);
    }

    /**
     * 取得这个Singleton的方法.
     * @since 2006-01-01 18:54
     * @author Lingo
     * @return FileDAO 实例
     */
    public static FileDAO getInstance() {
        return instance;
    }

    /**
     * 查找所有记录.
     * @return List 保存所有记录的列表
     */
    public List findAll() {
        List tmp;
        List all = new ArrayList();

        try {
            tmp = system.findAll();

            BoardInfo info;
            List item;

            //这里要把得到的列表反转
            //这样最新的留言就到了最前面了
            int len = tmp.size();

            for (int i = len - 1; i >= 0; i--) {
                item = (List) tmp.get(i);
                info = list2Bean(item);

                all.add(info);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return all;
    }

    /**
     * 从List转换到Bean.
     * @param list 原始保存数据的List
     * @return BoardInfo 转换成的Bean,如果List为null就返回null
     */
    private BoardInfo list2Bean(final List list) {
        if (list != null) {
            BoardInfo bean = new BoardInfo();
            bean.setId(Integer.parseInt((String) list.get(0)));
            bean.setName((String) list.get(1));
            bean.setEmail((String) list.get(2));
            bean.setPageName((String) list.get(3));
            bean.setPageUrl((String) list.get(4));
            bean.setSex(Integer.parseInt((String) list.get(5)));
            bean.setImg((String) list.get(6));
            bean.setContent((String) list.get(7));
            bean.setIp((String) list.get(8));
            bean.setDateTime(new Date(Long.parseLong((String) list.get(9))));
            bean.setReply((String) list.get(10));

            return bean;
        } else {
            return null;
        }
    }

    /**
     * 新添加的方法,根据id返回一个BoardInfo.
     * 如果找不到,就返回null
     * @since 2006-01-02 22:07
     * @author Lingo
     * @param id id
     * @return BoardInfo 找到的pojo
     */
    public BoardInfo findById(final int id) {
        List item;
        BoardInfo info = null;

        try {
            item = system.findById(id);

            if (item == null) {
                return null;
            }

            info = list2Bean(item);
        } catch (Exception ex) {
            return null;
        }

        return info;
    }

    /**
     * 插入一条记录.
     * @param info 保存记录的pojo
     */
    public void insert(final BoardInfo info) {
        try {
            List list = bean2List(info);

            system.insert(list);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * 从bean转换成List.
     * @param bean 原始的bean
     * @return List 转换后的List
     */
    private List bean2List(final BoardInfo bean) {
        if (bean != null) {
            List list = new ArrayList();
            //list.add(String.valueOf(bean.getId()));
            list.add(bean.getName());
            list.add(bean.getEmail());
            list.add(bean.getPageName());
            list.add(bean.getPageUrl());
            list.add(String.valueOf(bean.getSex()));
            list.add(bean.getImg());
            list.add(bean.getContent());
            list.add(bean.getIp());
            list.add(String.valueOf(bean.getDateTime().getTime()));
            list.add(bean.getReply());

            return list;
        } else {
            return null;
        }
    }

    /**
     * 修改info的信息.
     * 现在虽然只是用于修改回复信息,
     * 就是只对最后一列数据进行修改,
     * 不过还是做成可以对所有数据进行修改的样子
     * 毕竟这样更像orm的样子
     * @author Lingo
     * @since 2006-01-02 23:26
     * @param info 需要修改的信息,不能修改id
     */
    public void update(final BoardInfo info) {
        try {
            List list = bean2List(info);

            system.update(list);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * 根据id删除记录.
     * @param id id
     */
    public void delete(final int id) {
        try {
            system.delete(id);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

⌨️ 快捷键说明

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