📄 xmlhelper.java
字号:
/**
*
*/
package sysu.agenda.ctrl;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import sysu.agenda.exception.ParameterException;
import sysu.agenda.model.Meeting;
import sysu.agenda.model.User;
/**
* @author Administrator
*
*/
public class XMLHelper {
private File client = new File(Service.getInstance().getPath()
+ "\\data\\client.xml");
private File meeting = new File(Service.getInstance().getPath()
+ "\\data\\meeting.xml");
/**
*
*/
public XMLHelper() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
XMLHelper.getInstance().read();
System.out.println(Service.getInstance().getUsers());
System.out.println(Service.getInstance().getMeetings());
XMLHelper.getInstance().write(Service.getInstance().getPath());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void read() throws ParserConfigurationException, SAXException,
IOException, ParameterException, ParseException {
Service.getInstance().clear();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(client);
doc.normalize();
NodeList clients = doc.getElementsByTagName("client");
for (int i = 0; i < clients.getLength(); i++) {
Element clt = (Element) clients.item(i);
Service.getInstance().vecUser.add(new User(
clt.getAttribute("name"), clt.getAttribute("password")));
}
doc = builder.parse(meeting);
doc.normalize();
NodeList meetings = doc.getElementsByTagName("meeting");
for (int i = 0; i < meetings.getLength(); i++) {
Element mt = (Element) meetings.item(i);
Service.getInstance().vecMeeting.add(new Meeting(mt
.getAttribute("user"), mt.getAttribute("other"), mt
.getAttribute("title"), InputHelper.getInstance()
.StingToDate(mt.getAttribute("start")), InputHelper
.getInstance().StingToDate(mt.getAttribute("end"))));
}
}
@SuppressWarnings({ "static-access", "deprecation" })
public void write(String path) throws ParserConfigurationException,
SAXException, IOException, SecurityException, TransformerException {
if (!this.client.delete() || !this.meeting.delete())
throw new SecurityException("XML File is not acceptable.");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
doc.normalize();
Element table = doc.createElement("table");
doc.appendChild(table);
for (User user : Service.getInstance().vecUser) {
Element clt = (Element) table.appendChild((Node) doc
.createElement("client"));
clt.setAttribute("name", user.getName());
clt.setAttribute("password", user.getPassword());
}
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(path + "\\data\\client.xml"));
transformer.transform(source, result);
doc = builder.newDocument();
doc.normalize();
table = doc.createElement("table");
doc.appendChild(table);
for (Meeting mt : Service.getInstance().vecMeeting) {
Element meet = (Element) table.appendChild((Node) doc
.createElement("meeting"));
meet.setAttribute("user", mt.getUser());
meet.setAttribute("other", mt.getOther());
meet.setAttribute("title", mt.getTitle());
meet.setAttribute("start", InputHelper.getInstance().DateToString(mt.getStart()));
meet.setAttribute("end", InputHelper.getInstance().DateToString(mt.getEnd()));
}
tFactory = TransformerFactory.newInstance();
transformer = tFactory.newTransformer();
source = new DOMSource(doc);
result = new StreamResult(new File(path + "\\data\\meeting.xml"));
transformer.transform(source, result);
Service.getInstance().clear();
}
/**
* static class for Singleton design pattern, instance of Service will be
* created when the first time you make a call to XMLHelper.getInstance
*
* @author Cyberpet
* @see XMLHelper#getInstance()
*/
static class XMLHelperSingletonHolder {
static XMLHelper instance = new XMLHelper();
}
/**
* get the only instance of XMLHelper
*
* @return XMLHelper
* @see XMLHelper
*/
public static XMLHelper getInstance() {
return XMLHelperSingletonHolder.instance;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -