annotate rep/xml/SessionXMLDecoder.java @ 77:eb78312ea831

*** empty log message ***
author pin
date Tue, 11 Dec 2007 09:01:06 +0900
parents 391d44c94799
children f7a9b323458b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
40
5c0cd6c01ba8 new file SessionXMLEncoder and SessionXMLDecoder
pin
parents:
diff changeset
1 package rep.xml;
5c0cd6c01ba8 new file SessionXMLEncoder and SessionXMLDecoder
pin
parents:
diff changeset
2
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
3 import java.io.File;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
4 import java.io.InputStream;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
5 import java.io.OutputStream;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
6 import java.io.StringReader;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
7 import java.io.StringWriter;
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
8 import java.nio.channels.SocketChannel;
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
9 import java.util.LinkedList;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
10
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
11 import javax.xml.parsers.DocumentBuilder;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
12 import javax.xml.parsers.DocumentBuilderFactory;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
13 import javax.xml.parsers.ParserConfigurationException;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
14 import javax.xml.transform.Transformer;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
15 import javax.xml.transform.TransformerFactory;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
16 import javax.xml.transform.dom.DOMSource;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
17 import javax.xml.transform.stream.StreamResult;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
18
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
19 import org.w3c.dom.Document;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
20 import org.w3c.dom.Element;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
21 import org.w3c.dom.Node;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
22 import org.w3c.dom.NodeList;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
23 import org.xml.sax.InputSource;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
24
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
25 import rep.Editor;
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
26 import rep.Session;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
27 import rep.SessionList;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
28
40
5c0cd6c01ba8 new file SessionXMLEncoder and SessionXMLDecoder
pin
parents:
diff changeset
29 public class SessionXMLDecoder {
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
30
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
31 private SocketChannel channel;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
32
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
33 public SessionXMLDecoder(String string) {
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
34 decode(string);
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
35 }
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
36
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
37 public SessionXMLDecoder() {
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
38 }
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
39
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
40 public SessionList decode(String string) {
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
41 SessionList sessionlist = null;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
42 System.out.println("");
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
43 try {
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
44 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
45 DocumentBuilder builder = factory.newDocumentBuilder();
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
46 InputSource source = new InputSource(new StringReader(string));
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
47 source.setEncoding("UTF-8");
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
48 Document doc = builder.parse(source);
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
49 Element root = doc.getDocumentElement();
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
50
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
51 //sessionlist = createSessionList(root);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
52 sessionlist = generateSessionList(root);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
53 sessionlist.setHost(getSessionManagerHost(root));
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
54
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
55 } catch (Exception e) {
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
56 e.printStackTrace();
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
57 }
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
58 return sessionlist;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
59 }
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
60
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
61 private String getSessionManagerHost(Element root) {
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
62 NodeList nodelist = root.getChildNodes();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
63 String host = null;
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
64 for(int i = 0; i < nodelist.getLength(); i++){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
65 if(nodelist.item(i).getNodeName().equals("host")){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
66 host = nodelist.item(i).getTextContent();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
67 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
68 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
69 return host;
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
70 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
71
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
72 private SessionList generateSessionList(Element element){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
73 SessionList sessionlist = new SessionList();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
74 NodeList nodelistSession = element.getElementsByTagName("Session");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
75
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
76 for(int i = 0; i < nodelistSession.getLength(); i++){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
77 Element elementSession = (Element) nodelistSession.item(i);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
78 NodeList nodelistEditor = elementSession.getElementsByTagName("Editor");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
79
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
80 Session session = null;
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
81 for(int j = 0; j < nodelistEditor.getLength(); j++){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
82 String eid = ((Element)nodelistEditor.item(j)).getAttribute("eid");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
83
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
84 Element elementEditor = (Element) nodelistEditor.item(j);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
85 NodeList nodelistEditorHost = elementEditor.getElementsByTagName("host");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
86 Element elementHost = (Element) nodelistEditorHost.item(0);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
87 String host = elementHost.getFirstChild().getNodeValue();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
88
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
89 NodeList nodelistEditorPort = elementEditor.getElementsByTagName("port");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
90 Element elementPort = (Element) nodelistEditorPort.item(0);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
91 String port = elementPort.getFirstChild().getNodeValue();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
92
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
93 if(elementEditor.getChildNodes().getLength() > 2){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
94 NodeList nodelistEditorFile = elementEditor.getElementsByTagName("file");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
95 Element elementFile = (Element) nodelistEditorFile.item(0);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
96 String file = elementFile.getFirstChild().getNodeValue();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
97
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
98 Editor editor = new Editor();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
99 editor.setHost(host); editor.setPort(port); editor.setName(file); editor.setEID(Integer.parseInt(eid));
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
100 session = new Session(editor);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
101 session.addEditor(editor);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
102 sessionlist.addSession(session);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
103
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
104 }else {
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
105 Editor editor = new Editor();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
106 editor.setHost(host); editor.setPort(port); editor.setName(null); editor.setEID(Integer.parseInt(eid));
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
107 if(session != null){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
108 session.addEditor(editor);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
109 //sessionlist.addSession(session);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
110 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
111 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
112 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
113 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
114 return sessionlist;
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
115 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
116
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
117 private SessionList createSessionList(Element root){
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
118 NodeList nodelistSession = root.getChildNodes();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
119 SessionList sessionlist = new SessionList();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
120
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
121 for(int i = 0; i < nodelistSession.getLength(); i++){
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
122 Node nodeSession = nodelistSession.item(i);
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
123 NodeList nodelistEditor = nodeSession.getChildNodes();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
124 Session session = null;
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
125
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
126 for(int j = 0; j < nodelistEditor.getLength(); j++){
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
127 Node nodeEditor = nodelistEditor.item(j);
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
128 NodeList nodelistEditorInfo = nodeEditor.getChildNodes();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
129
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
130 Editor editor = new Editor();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
131 String host = nodelistEditorInfo.item(0).getTextContent();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
132 editor.setHost(host);
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
133 String port = nodelistEditorInfo.item(1).getTextContent();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
134 editor.setPort(port);
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
135 if(nodelistEditorInfo.getLength() == 3){
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
136 String name = nodelistEditorInfo.item(2).getTextContent();
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
137 editor.setName(name);
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
138 session = new Session(editor);
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
139 }
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
140 //System.out.println(editor.toString());
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
141 session.addEditor(editor);
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
142
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
143 }
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
144 sessionlist.addSession(session);
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
145
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
146 }
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
147
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
148 return sessionlist;
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
149 }
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
150
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
151 /*
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
152 private void seachNode(NodeList list) {
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
153 String[] host_port_name = new String[3];
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
154 for(int i = 0; i < list.getLength(); i++){
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
155 Element element = null;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
156 if(list.item(i) instanceof Element) {
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
157 element = (Element) list.item(i);
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
158 System.out.println(element.getNodeName());
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
159 }else{
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
160 String string = list.item(i).getNodeValue();
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
161 sessionListSize += string;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
162 host_port_name[i] = string;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
163 System.out.println(" " + i + ":" + string);
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
164 }
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
165 if(element != null) seachNode(element.getChildNodes());
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
166 }
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
167 }
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
168 */
41
86a1553028ad *** empty log message ***
pin
parents: 40
diff changeset
169
40
5c0cd6c01ba8 new file SessionXMLEncoder and SessionXMLDecoder
pin
parents:
diff changeset
170 }