40
|
1 package rep.xml;
|
|
2
|
|
3 import java.io.StringWriter;
|
|
4 import java.util.LinkedList;
|
|
5
|
|
6 import javax.xml.parsers.DocumentBuilder;
|
|
7 import javax.xml.parsers.DocumentBuilderFactory;
|
358
|
8 import javax.xml.parsers.ParserConfigurationException;
|
40
|
9 import javax.xml.transform.Transformer;
|
358
|
10 import javax.xml.transform.TransformerConfigurationException;
|
|
11 import javax.xml.transform.TransformerException;
|
40
|
12 import javax.xml.transform.TransformerFactory;
|
|
13 import javax.xml.transform.dom.DOMSource;
|
|
14 import javax.xml.transform.stream.StreamResult;
|
|
15
|
|
16 import org.w3c.dom.Document;
|
|
17 import org.w3c.dom.Element;
|
|
18
|
319
|
19 import rep.EditorPlus;
|
40
|
20 import rep.Session;
|
|
21 import rep.SessionList;
|
|
22
|
|
23 public class SessionXMLEncoder {
|
358
|
24 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
|
25 TransformerFactory tfactory = TransformerFactory.newInstance();
|
40
|
26
|
358
|
27 public String sessionListToXML(SessionList list) {
|
122
|
28 /* SessionListをXMLに書き出す。ときの形式
|
322
|
29 * <?xml version="1.0" encoding="UTF-8"?>
|
|
30 * <SessionList><host>naha.ie.u-ryukyu.ac.jp</host>
|
|
31 * <Session sid="1">
|
|
32 * <Editor eid="1">
|
|
33 * <host>firefly.cr.ie.u-ryukyu.ac.jp</host>
|
|
34 * <port/>
|
|
35 * <file>Test.java</file>
|
|
36 * </Editor>
|
|
37 * <Editor eid="1">
|
|
38 * <host>firefly.cr.ie.u-ryukyu.ac.jp</host>
|
|
39 * <port/>
|
|
40 * <file>Test.java</file>
|
|
41 * </Editor>
|
|
42 * <Editor eid="2">
|
|
43 * <host>teto.cr.ie.u-ryukyu.ac.jp</host>
|
|
44 * <port/>
|
|
45 * </Editor>
|
|
46 * </Session>
|
|
47 * </SessionList>
|
40
|
48 */
|
358
|
49 StringWriter str = new StringWriter();
|
|
50 DocumentBuilder builder;
|
|
51 try {
|
|
52 builder = factory.newDocumentBuilder();
|
|
53 } catch (ParserConfigurationException e) {
|
|
54 return "";
|
|
55 }
|
|
56 Document doc = builder.newDocument();
|
|
57 Element root = doc.getDocumentElement();
|
|
58 root = doc.createElement("SessionList");
|
|
59 //
|
|
60 // Element elementSeMaHost = doc.createElement("host");
|
|
61 // if(sessionmanagerHost != null) elementSeMaHost.setTextContent(sessionmanagerHost);
|
|
62 // root.appendChild(elementSeMaHost);
|
43
|
63
|
358
|
64 for(Session session : list.values()){
|
|
65 Element elementSession = doc.createElement("Session");
|
|
66 root.appendChild(elementSession);
|
|
67 elementSession.setAttribute("sid", Integer.toString(session.getSID()));
|
|
68
|
|
69 LinkedList <EditorPlus> editorlist = session.getEditorList();
|
|
70 for(EditorPlus editor : editorlist){
|
|
71 Element elementEditor = doc.createElement("Editor");
|
|
72 elementEditor.setAttribute("eid", Integer.toString(editor.getEID()));
|
|
73 elementSession.appendChild(elementEditor);
|
|
74
|
|
75 Element elementHost = doc.createElement("host");
|
|
76 elementEditor.appendChild(elementHost);
|
|
77 elementHost.setTextContent(editor.getHost());
|
43
|
78
|
358
|
79 Element elementPort = doc.createElement("port");
|
|
80 elementEditor.appendChild(elementPort);
|
|
81 //elementPort.setTextContent(editor.getPort());
|
|
82
|
|
83 if(editor.getName() != null){
|
|
84 Element elementName = doc.createElement("file");
|
|
85 elementEditor.appendChild(elementName);
|
|
86 elementName.setTextContent(editor.getName());
|
|
87 //System.out.println(editor.getName());
|
|
88 }
|
|
89 }
|
|
90 }
|
|
91 doc.appendChild(root);
|
40
|
92
|
358
|
93 Transformer transformer;
|
|
94 StreamResult result = new StreamResult(str);
|
|
95 try {
|
|
96 transformer = tfactory.newTransformer();
|
|
97 transformer.transform(new DOMSource(doc), result);
|
|
98 } catch (TransformerConfigurationException e1) {
|
|
99 return "";
|
|
100 } catch (TransformerException e) {
|
|
101 return "";
|
|
102 }
|
|
103
|
|
104 //System.out.println(str.toString());
|
|
105 return str.toString();
|
|
106 }
|
40
|
107 }
|