annotate rep/xml/SessionXMLDecoder.java @ 386:bba62c4ac323

sync-option
author one@firefly.cr.ie.u-ryukyu.ac.jp
date Mon, 10 Nov 2008 22:19:34 +0900
parents 1fca50ce3508
children 6f356d160e58
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
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
3 import java.io.IOException;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
4 import java.io.StringReader;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
5
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
6 import javax.xml.parsers.DocumentBuilder;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
7 import javax.xml.parsers.DocumentBuilderFactory;
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
8 import javax.xml.parsers.ParserConfigurationException;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
9
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
10 import org.w3c.dom.Document;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
11 import org.w3c.dom.Element;
386
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
12 import org.w3c.dom.NamedNodeMap;
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
13 import org.w3c.dom.Node;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
14 import org.w3c.dom.NodeList;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
15 import org.xml.sax.InputSource;
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
16 import org.xml.sax.SAXException;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
17
74
391d44c94799 *** empty log message ***
pin
parents: 56
diff changeset
18 import rep.Session;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
19 import rep.SessionList;
382
4b87f89b3afd REP Session Manager (Java version)
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 359
diff changeset
20 import rep.handler.Editor;
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
21
40
5c0cd6c01ba8 new file SessionXMLEncoder and SessionXMLDecoder
pin
parents:
diff changeset
22 public class SessionXMLDecoder {
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
23
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
24 DocumentBuilderFactory factory;
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
25 DocumentBuilder builder;
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
26
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
27
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
28 public SessionXMLDecoder() {
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
29 factory = DocumentBuilderFactory.newInstance();
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
30 try {
386
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
31 builder = factory.newDocumentBuilder();
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
32 } catch (ParserConfigurationException e) {
386
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
33 assert false;
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
34 }
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
35 }
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
36
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
37 public SessionList decode(String string) throws SAXException, IOException {
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
38 SessionList sessionlist = null;
322
5893fd8c0f50 *** empty log message ***
kono
parents: 317
diff changeset
39 //System.out.println("");
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
40 InputSource source = new InputSource(new StringReader(string));
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
41 //source.setEncoding("UTF-8");
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
42 Document doc = builder.parse(source);
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
43 Element root = doc.getDocumentElement();
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
44
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
45 //sessionlist = createSessionList(root);
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
46 sessionlist = generateSessionList(root);
358
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
47 //sessionlist.setMaxHost(getSessionManagerHost(root));
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
48
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
49
56
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
50 return sessionlist;
6ead43b2475e *** empty log message ***
pin
parents: 41
diff changeset
51 }
347
86935b872385 *** empty log message ***
kono
parents: 322
diff changeset
52
358
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
53 // private String getSessionManagerHost(Element root) {
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
54 // NodeList nodelist = root.getChildNodes();
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
55 // String host = null;
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
56 // for(int i = 0; i < nodelist.getLength(); i++){
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
57 // if(nodelist.item(i).getNodeName().equals("host")){
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
58 // host = nodelist.item(i).getTextContent();
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
59 // }
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
60 // }
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
61 // return host;
034acadc0cdc *** empty log message ***
kono
parents: 347
diff changeset
62 // }
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
63
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
64 private SessionList generateSessionList(Element element){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
65 SessionList sessionlist = new SessionList();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
66 NodeList nodelistSession = element.getElementsByTagName("Session");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
67 for(int i = 0; i < nodelistSession.getLength(); i++){
386
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
68 Node elementSession = nodelistSession.item(i);
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
69 int sid = getIntValue(elementSession,"sid");
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
70 NodeList nodelistEditor = ((Element)elementSession).getElementsByTagName("Editor");
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
71
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
72 Session session = null;
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
73 for(int j = 0; j < nodelistEditor.getLength(); j++){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
74 String eid = ((Element)nodelistEditor.item(j)).getAttribute("eid");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
75
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
76 Element elementEditor = (Element) nodelistEditor.item(j);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
77 NodeList nodelistEditorHost = elementEditor.getElementsByTagName("host");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
78 Element elementHost = (Element) nodelistEditorHost.item(0);
386
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
79 Node hostValue = elementHost.getFirstChild();
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
80 String host = hostValue==null?"":hostValue.getNodeValue();
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
81
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
82 if(elementEditor.getChildNodes().getLength() > 2){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
83 NodeList nodelistEditorFile = elementEditor.getElementsByTagName("file");
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
84 Element elementFile = (Element) nodelistEditorFile.item(0);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
85 String file = elementFile.getFirstChild().getNodeValue();
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
86
385
1fca50ce3508 first-working-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
87 Editor editor = new Editor(null, 0);
179
763aad2da6b3 *** empty log message ***
pin
parents: 131
diff changeset
88 editor.setHost(host);/* editor.setPort(port)*/; editor.setName(file); editor.setEID(Integer.parseInt(eid));
322
5893fd8c0f50 *** empty log message ***
kono
parents: 317
diff changeset
89 session = new Session(sid, editor);
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
90 session.addEditor(editor);
359
fa041bae35f1 all code written for distributed session except gather.
kono
parents: 358
diff changeset
91 sessionlist.put(sid,session);
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
92
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
93 }else {
385
1fca50ce3508 first-working-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
94 Editor editor = new Editor(null, 0);
179
763aad2da6b3 *** empty log message ***
pin
parents: 131
diff changeset
95 editor.setHost(host);/* editor.setPort(port)*/; editor.setName(null); editor.setEID(Integer.parseInt(eid));
77
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
96 if(session != null){
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
97 session.addEditor(editor);
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
98 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
99 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
100 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
101 }
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
102 return sessionlist;
eb78312ea831 *** empty log message ***
pin
parents: 74
diff changeset
103 }
386
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
104
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
105 private int getIntValue(Node elementSession, String attrName) {
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
106 NamedNodeMap attr = elementSession.getAttributes();
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
107 Node sidNode = attr.getNamedItem(attrName);
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
108 int sid = Integer.parseInt(sidNode.getNodeValue());
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
109 return sid;
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
110 }
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
111 //
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
112 // private String getString(Node elementSession, String attrName) {
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
113 // NamedNodeMap attr = elementSession.getAttributes();
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
114 // Node sidNode = attr.getNamedItem(attrName);
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
115 // return sidNode.getNodeValue();
bba62c4ac323 sync-option
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 385
diff changeset
116 // }
41
86a1553028ad *** empty log message ***
pin
parents: 40
diff changeset
117
40
5c0cd6c01ba8 new file SessionXMLEncoder and SessionXMLDecoder
pin
parents:
diff changeset
118 }