⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlhelper.java

📁 分布式议程管理系统
💻 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 + -