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;
|
|
8 import javax.xml.transform.Transformer;
|
|
9 import javax.xml.transform.TransformerFactory;
|
|
10 import javax.xml.transform.dom.DOMSource;
|
|
11 import javax.xml.transform.stream.StreamResult;
|
|
12
|
|
13 import org.w3c.dom.Document;
|
|
14 import org.w3c.dom.Element;
|
|
15
|
|
16 import rep.Editor;
|
|
17 import rep.Session;
|
|
18 import rep.SessionList;
|
|
19
|
|
20 public class SessionXMLEncoder {
|
56
|
21 private LinkedList<Session> list = new LinkedList<Session>();
|
77
|
22 private String sessionmanagerHost;
|
40
|
23
|
77
|
24 public SessionXMLEncoder(SessionList sessionlist) {
|
82
|
25 sessionmanagerHost = sessionlist.getMaxHost();
|
77
|
26 this.list = sessionlist.getList();
|
40
|
27 }
|
|
28
|
164
|
29 public SessionXMLEncoder(LinkedList<Session> sessionList) {
|
|
30 this.list = sessionList;
|
40
|
31 }
|
|
32
|
|
33 public SessionXMLEncoder() {
|
|
34 }
|
|
35
|
56
|
36 public SessionXMLEncoder(Session session) {
|
|
37 list.add(session);
|
|
38 }
|
|
39
|
40
|
40 public String sessionListToXML() {
|
122
|
41 /* SessionListをXMLに書き出す。ときの形式
|
40
|
42 * <Session>
|
|
43 * <editor>
|
43
|
44 * <sid> 1 </sid>
|
|
45 * <host> firefly </host>
|
|
46 * <port> 5555 </port>
|
|
47 * <filename> text.java </filename>
|
40
|
48 * </editor>
|
|
49 * <editor>
|
43
|
50 * <sid> 2 </sid>
|
|
51 * <host> asbel </host>
|
|
52 * <port> 6666 </port>
|
40
|
53 * </editor>
|
|
54 * </Session>
|
|
55 * <SessionManager>
|
43
|
56 * <host> karateka </host>
|
|
57 * <port> 7777 </port>
|
40
|
58 * </SessionManager>
|
|
59 * <Session>
|
|
60 * </Session>
|
|
61 */
|
|
62 StringWriter str = null;
|
|
63 try {
|
|
64 str = new StringWriter();
|
|
65 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
|
66 DocumentBuilder builder = factory.newDocumentBuilder();
|
|
67 Document doc = builder.newDocument();
|
|
68 Element root = doc.getDocumentElement();
|
|
69 root = doc.createElement("SessionList");
|
77
|
70
|
|
71 Element elementSeMaHost = doc.createElement("host");
|
|
72 if(sessionmanagerHost != null) elementSeMaHost.setTextContent(sessionmanagerHost);
|
|
73 root.appendChild(elementSeMaHost);
|
43
|
74
|
40
|
75 for(Session session : list){
|
|
76 Element elementSession = doc.createElement("Session");
|
|
77 root.appendChild(elementSession);
|
43
|
78
|
40
|
79 LinkedList <Editor> editorlist = session.getEditorList();
|
|
80 for(Editor editor : editorlist){
|
|
81 Element elementEditor = doc.createElement("Editor");
|
76
|
82 elementEditor.setAttribute("eid", Integer.toString(editor.getEID()));
|
43
|
83 elementSession.appendChild(elementEditor);
|
|
84
|
|
85 Element elementHost = doc.createElement("host");
|
|
86 elementEditor.appendChild(elementHost);
|
|
87 elementHost.setTextContent(editor.getHost());
|
|
88
|
|
89 Element elementPort = doc.createElement("port");
|
|
90 elementEditor.appendChild(elementPort);
|
179
|
91 //elementPort.setTextContent(editor.getPort());
|
43
|
92
|
|
93 if(editor.getName() != null){
|
|
94 Element elementName = doc.createElement("file");
|
40
|
95 elementEditor.appendChild(elementName);
|
43
|
96 elementName.setTextContent(editor.getName());
|
113
|
97 System.out.println(editor.getName());
|
40
|
98 }
|
|
99 }
|
|
100 }
|
|
101 doc.appendChild(root);
|
|
102
|
|
103 TransformerFactory tfactory = TransformerFactory.newInstance();
|
|
104 Transformer transformer = tfactory.newTransformer();
|
|
105 StreamResult result = new StreamResult(str);
|
|
106 transformer.transform(new DOMSource(doc), result);
|
|
107
|
|
108 }catch (Exception e){
|
|
109 e.printStackTrace();
|
|
110 }
|
113
|
111 System.out.println(str.toString());
|
40
|
112 return str.toString();
|
|
113 }
|
|
114 }
|