?? filedao.java
字號:
package anni.gbook;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import anni.tools.FileSystem;
/**
* 實現(xiàn)了IBoardDAO接口的類.
* 注意這東西是個Singleton,不過方法都沒有考慮同步
* 因為沒有經(jīng)驗,也不知道該怎么改
* 與其現(xiàn)在考慮又想不出來,不如先記下來,以后有問題再改好了
*
* @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來操作數(shù)據(jù).
* FileDAO的作用只是進行數(shù)據(jù)封裝
*/
private FileSystem system;
/**
* 構(gòu)造方法,指定一個保存數(shù)據(jù)的文件.
* 因為使用的是相對變量,到底在哪里就不清楚了
* @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;
//這里要把得到的列表反轉(zhuǎn)
//這樣最新的留言就到了最前面了
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轉(zhuǎn)換到Bean.
* @param list 原始保存數(shù)據(jù)的List
* @return BoardInfo 轉(zhuǎn)換成的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;
}
}
/**
* 新添加的方法,根據(jù)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轉(zhuǎn)換成List.
* @param bean 原始的bean
* @return List 轉(zhuǎn)換后的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的信息.
* 現(xiàn)在雖然只是用于修改回復信息,
* 就是只對最后一列數(shù)據(jù)進行修改,
* 不過還是做成可以對所有數(shù)據(jù)進行修改的樣子
* 畢竟這樣更像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();
}
}
/**
* 根據(jù)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 + -