📄 employeedaoxml.java
字号:
package com.mycompany.myapp.dao.xml;import java.io.File;import java.io.FileWriter;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import com.mycompany.myapp.dao.EmployeeDao;import com.mycompany.myapp.exception.XmlFileReadException;import com.mycompany.myapp.exception.XmlFileWriteException;import com.mycompany.myapp.model.Employee;/** * the xml file implement for employeeDao */public class EmployeeDaoXml implements EmployeeDao { private String xmlFilePos; private Document document; public EmployeeDaoXml() { } public EmployeeDaoXml(String xmlFilePos) throws XmlFileReadException, XmlFileWriteException { this.xmlFilePos = xmlFilePos; if (isFileExist(this.xmlFilePos) == false) { // Create document when file not exist createDocument(); return; } else { // Get Docunent when file exist SAXReader reader = new SAXReader(); try { document = reader.read(new File(this.xmlFilePos)); } catch (Exception ex) { throw new XmlFileReadException(ex.getMessage()); } } } //@Override public Employee get(Long id) { Element rootElm = document.getRootElement(); List nodes = rootElm.elements("employee"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); if (elm.attributeValue("id").equals(String.valueOf(id))) { Employee employee = new Employee(); employee.setId(id); employee.setFirstName(elm.element("firstName").getText()); employee.setLastName(elm.element("lastName").getText()); employee.setPhoneNumber(elm.element("phoneNumber").getText()); employee.setAddress(elm.element("address").getText()); return employee; } } return null; } ///////////////////////////@Override public List<Employee> getAll() { List<Employee> lst = new ArrayList<Employee>(); List nodes = document.getRootElement().elements("employee"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); Employee employee = new Employee(); employee.setId(Long.valueOf(elm.attributeValue("id"))); employee.setFirstName(elm.elementText("firstName")); employee.setLastName(elm.elementText("lastName")); employee.setPhoneNumber(elm.elementText("phoneNumber")); employee.setAddress(elm.elementText("address")); lst.add(employee); } return lst; } //@Override public void remove(Long id) { try { Element rootElm = document.getRootElement(); List nodes = rootElm.elements("employee"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); Employee employee = new Employee(); employee.setId(Long.valueOf(elm.attributeValue("id"))); employee.setFirstName(elm.elementText("firstName")); employee.setLastName(elm.elementText("lastName")); employee.setPhoneNumber(elm.elementText("phoneNumber")); employee.setAddress(elm.elementText("address")); if (employee.getId().equals(id)) { rootElm.remove(elm); break; } else{ System.out.println("No employee with id="+id+" exist!\n"); } } writeDocumentToFile(); } catch (XmlFileWriteException ex) { System.err.println(ex.getMessage()); } } //@Override public Employee insert(Employee employee) { try { Element rootElm = document.getRootElement(); Element newEmployeeElm = rootElm.addElement("employee"); newEmployeeElm.addAttribute("id", String.valueOf(employee.getId())); Element firstNameElm = newEmployeeElm.addElement("firstName"); firstNameElm.setText(employee.getFirstName()); Element lastNameElm = newEmployeeElm.addElement("lastName"); lastNameElm.setText(employee.getLastName()); Element phoneNumberElm = newEmployeeElm.addElement("phoneNumber"); phoneNumberElm.setText(employee.getPhoneNumber()); Element addressElm = newEmployeeElm.addElement("address"); addressElm.setText(employee.getAddress()); writeDocumentToFile(); } catch (XmlFileWriteException e) { e.printStackTrace(); } return employee; } //@Override public Employee update(Employee employee) { try { Element rootElm = document.getRootElement(); List nodes = rootElm.elements("employee"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); if (elm.attributeValue("id").equals( String.valueOf(employee.getId()))) { elm.element("firstName").setText(employee.getFirstName()); elm.element("lastName").setText(employee.getLastName()); elm.element("phoneNumber").setText( employee.getPhoneNumber()); elm.element("address").setText(employee.getAddress()); break; } } writeDocumentToFile(); } catch (XmlFileWriteException e) { e.printStackTrace(); } return employee; } private void writeDocumentToFile() throws XmlFileWriteException { try { XMLWriter writer = new XMLWriter(new FileWriter(this.xmlFilePos)); writer.write(document); writer.close(); } catch (Exception ex) { throw new XmlFileWriteException(ex.getMessage()); } } private void createDocument() throws XmlFileWriteException { String text = "<employees></employees>"; try { document = DocumentHelper.parseText(text); writeDocumentToFile(); } catch (XmlFileWriteException ex) { throw ex; } catch (Exception ex) { ex.printStackTrace(); } } public static boolean isFileExist(String filePath) { boolean exists = (new File(filePath)).exists(); return exists; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -