📄 accountxmldao.java
字号:
package dao.impl;
import java.util.*;
import java.io.*;
import model.*;
import dao.AccountDao;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
public class AccountXmlDao implements AccountDao{
String fileName;
public AccountXmlDao(String fileName) {
super();
this.fileName = fileName;
}
public Map loadAccounts() {
Map as=new HashMap();
try {
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder b=dbf.newDocumentBuilder();
Document doc=b.parse(fileName);
NodeList nl=doc.getElementsByTagName("Account");
for(int i=0;i<nl.getLength();i++){
Element e=(Element)nl.item(i);
String type=e.getAttribute("type");
Account c=null;
if (type.equals("SavingAccount")) c=new SavingAccount();
if (type.equals("CreditAccount")) c=new CreditAccount();
if (type.equals("LoanSavingAccount")) c=new LoanSavingAccount();
if (type.equals("LoanCreditAccount")) c=new LoanCreditAccount();
NodeList nl2=e.getChildNodes();
for(int j=0;j<nl2.getLength();j++){
Node n=nl2.item(j);
if (n.getNodeType()==Node.ELEMENT_NODE){
Element e2=(Element)n;
String name=e2.getTagName();
String value=e2.getTextContent().trim();
if (name.equals("ID")) c.setId(Long.parseLong(value));
if (name.equals("Password")) c.setPassword(value);
if (name.equals("PersonId")) c.setPersonId(value);
if (name.equals("Name")) c.setName(value);
if (name.equals("Email")) c.setEmail(value);
if (name.equals("Balance")) c.setBalance(Double.parseDouble(value));
if (name.equals("Ceiling")){
CreditAccount ca=(CreditAccount)c;
ca.setCeiling(Double.parseDouble(value));
}
if (name.equals("Loan")){
Loanable l=(Loanable)c;
l.setLoan(Double.parseDouble(value));
}
}
}
as.put(c.getId(),c);
}
} catch (Exception e) {
e.printStackTrace();
}
return as;
}
public void saveAccounts(Map accounts) {
PrintWriter out=null;
try {
out = new PrintWriter(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
out.println("<?xml version=\"1.0\" ?>");
out.println("<Accounts>");
Collection as=accounts.values();
for(Object o:as){
Account c=(Account)o;
out.print("\t<Account type=\"");
out.println(o.getClass().getSimpleName()+"\" >");
out.println("\t\t<ID>"+c.getId()+"</ID>");
out.println("\t\t<Password>"+c.getPassword()+"</Password>");
out.println("\t\t<Name>"+c.getName()+"</Name>");
out.println("\t\t<PersonId>"+c.getPersonId()+"</PersonId>");
out.println("\t\t<Email>"+c.getEmail()+"</Email>");
out.println("\t\t<Balance>"+c.getBalance()+"</Balance>");
if (c instanceof CreditAccount){
CreditAccount ca=(CreditAccount)c;
out.println("\t\t<Ceiling>"+ca.getCeiling()+"</Ceiling>");
}
if (c instanceof Loanable ){
Loanable l=(Loanable)c;
out.println("\t\t<Loan>"+l.getLoan()+"</Loan>");
}
out.println("\t</Account>");
}
out.println("</Accounts>");
out.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -