?? persondao.java
字號:
/*
* 創(chuàng)建日期 2005-9-21
*
* TODO 要更改此生成的文件的模板,請轉(zhuǎn)至
* 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
*/
package cn.itcareers.lxh.exercise.util;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import cn.itcareers.lxh.exercise.interfaces.Person;
import cn.itcareers.lxh.exercise.io.FileOperate;
import cn.itcareers.lxh.exercise.io.InputData;
import cn.itcareers.lxh.exercise.main.ShowPerson;
import cn.itcareers.lxh.exercise.person.Student;
import cn.itcareers.lxh.exercise.person.Worker;
/**
* @author 白濤
*
* 此類用與進(jìn)行添加、修改、刪除、查詢的功能
*/
public class PersonDAO {
/**
*
* @param hm 現(xiàn)有的HashMap
* @param name 得到查入的類名稱
* @return
*/
public boolean insert(HashMap hm, String name) {
boolean flag = true;
InputData in = new InputData();
Person p = null;
try {
p = in.getPerson(name);
} catch (Exception e) {
flag = false;
}
String key = this.createKey(p);
hm.put(key, p);
this.writeFile(hm, p);
return flag;
}
/**
*
* @param hm 得到現(xiàn)有的HashMap
* @param id 操作ID
* @return
*/
public boolean delete(HashMap hm, String id) {
boolean flag = true;
String str = this.getKey(hm, id);
if (str.equals(""))
flag = false;
Person p = (Person) hm.get(str);
hm.remove(str);
this.writeFile(hm, p);
return flag;
}
/**
* 更新操作
* @param hm 得到現(xiàn)有的HashMap
* @param id 要更新的ID
* @return
*/
public boolean update(HashMap hm, String id) {
boolean flag = true;
String key = this.getUpdate(hm, id);
if (key.equals("nothing")) {
System.out.println("沒有此人!!!");
flag = false;
} else {
Person p = (Person) hm.get(key);
InputData in = new InputData();
try {
in.updatePerson(p);
} catch (Exception e) {
flag = false;
}
this.writeFile(hm, p);
flag = true;
}
return flag;
}
/**
* 查詢方法
* @param hm 得到現(xiàn)有的HashMap
* @param condition 查詢條件
* @param type 所選類型
*/
public void search(HashMap hm, String condition, String type) {
ShowPerson.display(this.getSearch(hm, condition), type);
}
/**
* 瀏覽全部
* @param hm 得到現(xiàn)有的HashMap
* @param type 所選類型
*/
public void select(HashMap hm, String type) {
ShowPerson.display(hm.values(), type);
}
/**
* 模糊查找得到要查找的鍵值
* @param hm 得到現(xiàn)有的HashMap
* @param id 要查找的內(nèi)容
* @return
*/
private String getKey(HashMap hm, String id) {
Set s = hm.keySet();
Iterator i = s.iterator();
String str = "";
while (i.hasNext()) {
str = (String) i.next();
if (str.indexOf(id) != -1) {
break;
}
}
return str;
}
/**
* 取得所有檢索信息
* @param hm 得到現(xiàn)有的HashMap
* @param id 要查找的內(nèi)容
* @return
*/
private ArrayList getSearch(HashMap hm, String id) {
Set s = hm.keySet();
Iterator i = s.iterator();
String str = "";
ArrayList al = new ArrayList();
while (i.hasNext()) {
str = (String) i.next();
if (str.indexOf(id) != -1) {
al.add(hm.get(str));
}
}
return al;
}
/**
*
* @param hm 得到現(xiàn)有的HashMap
* @param id 查找更新的ID號
* @return
*/
private String getUpdate(HashMap hm, String id) {
Set s = hm.keySet();
Iterator i = s.iterator();
String str = "";
while (i.hasNext()) {
str = (String) i.next();
if (str.indexOf(id) != -1) {
String st[] = str.split(":");
if (st[0].equalsIgnoreCase(id)) {
break;
}
} else {
str = "nothing";
}
}
return str;
}
/**
* 寫入文件
* @param hm 得到現(xiàn)有的HashMap
* @param p 得到Person實例,用于找到文件名
* @return
*/
private boolean writeFile(HashMap hm, Person p) {
String filename = p.getClass().getName();
File f = new File(subString(filename) + ".info");
return FileOperate.writeFile(hm, f);
}
/**
* 截取字符串
* @param name 完整的類名
* @return
*/
private String subString(String name) {
return name.substring(name.lastIndexOf(".") + 1);
}
/**
* 生成HashMap的鍵值
* @param p 要操作的Person類型
* @return
*/
private String createKey(Person p) {
String temp_key = "";
if (p instanceof Student) {
Student s = (Student) p;
temp_key = s.getId() + ":" + s.getName() + ":" + s.getAge();
}
if (p instanceof Worker) {
Worker w = (Worker) p;
temp_key = w.getId() + ":" + w.getName() + ":" + w.getAge();
}
return temp_key;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -