package Dao;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class ContactOperatorImp implements ContactOperator {
public void addContact(Contact contact) {
// TODO Auto-generated method stub
try {
File file = new File("d:/contact.xml");
Document doc = null;
Element rootElem = null;
if (!file.exists()) {
doc = DocumentHelper.createDocument();
rootElem = doc.addElement("contactList");
} else {
doc = new SAXReader().read(file);
rootElem = doc.getRootElement();
}
Element contactElem = rootElem.addElement("contact");
contactElem.addAttribute("id", contact.getId());
contactElem.addElement("name").setText(contact.getName());
contactElem.addElement("gender").setText(contact.getGender());
contactElem.addElement("phone").setText(contact.getPhone());
contactElem.addElement("age").setText(contact.getAge());
contactElem.addElement("email").setText(contact.getEmail());
contactElem.addElement("qq").setText(contact.getQq());
FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
public void updateContact(Contact contact) {
// TODO Auto-generated method stub
try {
Document doc = new SAXReader().read("d:/contact.xml");
Element contactEle = (Element) doc
.selectSingleNode("//contact[@id='" + contact.getId()
+ "']");
contactEle.element("name").setText(contact.getName());
contactEle.element("gender").setText(contact.getGender());
contactEle.element("phone").setText(contact.getPhone());
contactEle.element("age").setText(contact.getAge());
contactEle.element("email").setText(contact.getEmail());
contactEle.element("qq").setText(contact.getQq());
FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
} catch (Exception e) {
throw new RuntimeException();
}
}
public void deleteContact(String id) {
// TODO Auto-generated method stub
try {
Document doc = new SAXReader().read("d:/contact.xml");
Element el = (Element) doc.selectSingleNode("//contact[@id='" + id
+ "']");
el.detach();
FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public List findAll() {
// TODO Auto-generated method stub
try {
Document doc = new SAXReader().read("d:/contact.xml");
List listc=new ArrayList();
List lists = (List) doc.selectNodes("//contact");
for(Element list:lists){
Contact contact=new Contact();
contact.setId(list.attributeValue("id"));
contact.setName(list.elementText("name"));
contact.setAge(list.elementText("age"));
contact.setEmail(list.elementText("email"));
contact.setGender(list.elementText("gender"));
contact.setPhone(list.elementText("phone"));
contact.setQq(list.elementText("qq"));
listc.add(contact);
}
return listc;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public Contact findById(String id) {
Document doc = null;
try {
doc = new SAXReader().read("d:/contact.xml");
} catch (DocumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Element e = (Element)doc.selectSingleNode("//contact[@id='"+id+"']");
Contact c = null;
if(e!=null){
//´´½¨COntact¶ÔÏó
c = new Contact();
c.setId(e.attributeValue("id"));
c.setName(e.elementText("name"));
c.setGender(e.elementText("gender"));
c.setAge(e.elementText("age"));
c.setPhone(e.elementText("phone"));
c.setEmail(e.elementText("email"));
c.setQq(e.elementText("qq"));
}
return c;
}
}