📄 accountxmldao.java
字号:
package dao.impl;
import java.util.*;
import model.*;
import dao.AccountDao;
import java.io.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
public class AccountXmlDao implements AccountDao {
private String name;
public AccountXmlDao(String name) {
super();
this.name = name;
}
public Map loadAccounts() {
Map accounts=new HashMap();
Document doc=null;
try {
DocumentBuilderFactory fact=DocumentBuilderFactory.newInstance();
DocumentBuilder b=fact.newDocumentBuilder();
doc = b.parse(name);
} catch (Exception e1) {
e1.printStackTrace();
return accounts;
}
NodeList nl=doc.getElementsByTagName("Account");
for(int i=0;i<nl.getLength();i++){
Element e=(Element)nl.item(i);
String id=this.getText(e,"ID");
String password=this.getText(e,"Password");
String name=this.getText(e,"Name");
String personId=this.getText(e,"PersonId");
String email=this.getText(e,"Email");
String balance=this.getText(e,"Balance");
String type=e.getAttribute("type");
Account c=null;
if (type.equals("Saving")){
c=new SavingAccount();
}
if (type.equals("Credit")){
c=new CreditAccount();
}
if (type.equals("LoanSaving")){
c=new LoanSavingAccount();
}
if (type.equals("LoanCredit")){
c=new LoanCreditAccount();
}
c.setId(Long.parseLong(id));
c.setPassword(password);
c.setName(name);
c.setPersonId(personId);
c.setEmail(email);
c.setBalance(Double.parseDouble(balance));
accounts.put(Long.valueOf(id),c);
if (type.equals("Credit")){
CreditAccount ca=(CreditAccount)c;
String ceiling=this.getText(e,"Ceiling");
ca.setCeiling(Double.parseDouble(ceiling));
}
if (type.equals("LoanSaving")){
LoanSavingAccount ca=(LoanSavingAccount)c;
String loan=this.getText(e,"Loan");
ca.setLoan(Double.parseDouble(loan));
}
if (type.equals("LoanCredit")){
LoanCreditAccount ca=(LoanCreditAccount)c;
String loan=this.getText(e,"Loan");
ca.setLoan(Double.parseDouble(loan));
String ceiling=this.getText(e,"Ceiling");
ca.setCeiling(Double.parseDouble(ceiling));
}
}
return accounts;
}
public void saveAccounts(Map m) {
PrintWriter out=null;
try {
out = new PrintWriter(name);
out.println("<?xml version=\"1.0\" ?>");
out.println("<Accounts>");
Collection c=m.values();
Iterator it=c.iterator();
while(it.hasNext()){
Account a=(Account)it.next();
out.print("\t<Account type=\"");
if (a instanceof LoanSavingAccount){
out.println("LoanSaving\">");
}
else if (a instanceof LoanCreditAccount){
out.println("LoanCredit\">");
}
else if (a instanceof SavingAccount){
out.println("Saving\">");
}
else {
out.println("Credit\">");
}
out.println("\t\t<ID>"+a.getId()+"</ID>");
out.println("\t\t<Password>"+a.getPassword()+"</Password>");
out.println("\t\t<Name>"+a.getName()+"</Name>");
out.println("\t\t<PersonId>"+a.getPersonId()+"</PersonId>");
out.println("\t\t<Email>"+a.getEmail()+"</Email>");
out.println("\t\t<Balance>"+a.getBalance()+"</Balance>");
if (a instanceof CreditAccount){
CreditAccount ca=(CreditAccount)a;
out.println("\t\t<Ceiling>"+ca.getCeiling()+"</Ceiling>");
}
if (a instanceof Loanable){
Loanable l=(Loanable)a;
out.println("\t\t<Loan>"+l.getLoan()+"</Loan>");
}
out.println("\t</Account>");
}
out.println("</Accounts>");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
finally{
out.close();
}
}
//得到e下边的tagName子标记,获取其文本内容
private String getText(Element e,String tagName){
NodeList nl=e.getElementsByTagName(tagName);
Element e2=(Element)nl.item(0);
return e2.getTextContent().trim();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -