view rep/xml/SessionXMLEncoder.java @ 322:5893fd8c0f50

*** empty log message ***
author kono
date Fri, 10 Oct 2008 16:18:03 +0900
parents dfed28488274
children 034acadc0cdc
line wrap: on
line source

package rep.xml;

import java.io.StringWriter;
import java.util.LinkedList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
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 rep.EditorPlus;
import rep.Session;
import rep.SessionList;

public class SessionXMLEncoder {
	private LinkedList<Session> list = new LinkedList<Session>();
	private String sessionmanagerHost;

	public SessionXMLEncoder(SessionList sessionlist) {
		sessionmanagerHost = sessionlist.getMaxHost();
		this.list = sessionlist.getList();
	}

	public SessionXMLEncoder(LinkedList<Session> sessionList) {
		this.list = sessionList;
	}

	public SessionXMLEncoder() {
	}

	public SessionXMLEncoder(Session session) {
		list.add(session);
	}

	public String sessionListToXML() {
		/* SessionListをXMLに書き出す。ときの形式
		 * <?xml version="1.0" encoding="UTF-8"?>
		 * <SessionList><host>naha.ie.u-ryukyu.ac.jp</host>
		 * <Session sid="1">
		 *  <Editor eid="1">
		 *   <host>firefly.cr.ie.u-ryukyu.ac.jp</host>
		 *   <port/>
		 *   <file>Test.java</file>
		 *  </Editor>
		 *  <Editor eid="1">
		 *   <host>firefly.cr.ie.u-ryukyu.ac.jp</host>
		 *   <port/>
		 *   <file>Test.java</file>
		 *   </Editor>
		 *   <Editor eid="2">
		 *    <host>teto.cr.ie.u-ryukyu.ac.jp</host>
		 *    <port/>
		 *    </Editor>
		 *   </Session>
		 * </SessionList>
		 */
				StringWriter str = null;
				try {
					str = new StringWriter();
					DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
					DocumentBuilder builder = factory.newDocumentBuilder();
					Document doc = builder.newDocument();
					Element root = doc.getDocumentElement();
					root = doc.createElement("SessionList");
					
					Element elementSeMaHost = doc.createElement("host");
					if(sessionmanagerHost != null) elementSeMaHost.setTextContent(sessionmanagerHost);
					root.appendChild(elementSeMaHost);

					for(Session session : list){
						Element elementSession = doc.createElement("Session");
						root.appendChild(elementSession);
						elementSession.setAttribute("sid", Integer.toString(session.getSID()));

						LinkedList <EditorPlus> editorlist = session.getEditorList();
						for(EditorPlus editor : editorlist){
							Element elementEditor = doc.createElement("Editor");
							elementEditor.setAttribute("eid", Integer.toString(editor.getEID()));
							elementSession.appendChild(elementEditor);
							
							Element elementHost = doc.createElement("host");
							elementEditor.appendChild(elementHost);
							elementHost.setTextContent(editor.getHost());
							
							Element elementPort = doc.createElement("port");
							elementEditor.appendChild(elementPort);
							//elementPort.setTextContent(editor.getPort());
							
							if(editor.getName() != null){
								Element elementName = doc.createElement("file");
								elementEditor.appendChild(elementName);
								elementName.setTextContent(editor.getName());
								//System.out.println(editor.getName());
							}
						}
					}
					doc.appendChild(root);
					
					TransformerFactory tfactory = TransformerFactory.newInstance(); 
					Transformer transformer = tfactory.newTransformer(); 
					StreamResult result = new StreamResult(str);
					transformer.transform(new DOMSource(doc), result); 

				}catch (Exception e){
					
				}
				//System.out.println(str.toString());
				return str.toString();
			}
}