-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.py
executable file
·72 lines (59 loc) · 2.11 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tornado.ioloop
import tornado.web
import os
import random
import FSMLoader
import xmlParser
from xml.etree import ElementTree
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hellow world!")
def post(self):
self.set_header("Content-Type","application/xml")
s = self.request.body
typematrix = {"UML_ActivityStartModel":lambda:"A0",
"UML_ActivityEndModel":lambda:"Ak",
"UML_ActivityActionModel":lambda:"A",
"UML_ActivityBranchStartModel":lambda:"P",
"UML_ActivityBranchEndModel":lambda:"W",
"UML_ActivityForkStartModel":lambda:"R",
"UML_ActivityForkEndModel":lambda:"L"
}
d = xmlParser.XmlUtil.readXml(s,typematrix)
d.startWith('A0')
loader = FSMLoader.FSMLoader()
fsm = loader.load("Activity")
er = d.check(fsm)
fsm.debug()
self.write(xmlParser.XmlUtil.dictToXml(er))
class TestHandler(tornado.web.RequestHandler):
def get(self):
self.write("Use only POST request")
def post(self):
self.set_header("Content-Type", "application/xml")
typematrix = {"Initial State":lambda:"A0",
"Final State":lambda:"Ak",
"State":lambda:"A",
"Decision":lambda:"P",
"Decision End":lambda:"W",
"Transition (Fork)":lambda:"R",
"Transition (Join)":lambda:"L"
}
diagramm = xmlParser.XmlUtil.readXml(self.request.body, typematrix)
diagramm.startWith('A0')
loader = FSMLoader.FSMLoader()
fsm = loader.load("Activity")
errors = diagramm.check(fsm)
xmlResponse = xmlParser.XmlUtil.dictToXml(errors)
print xmlResponse
self.write(xmlResponse)
application = tornado.web.Application([
(r"/uml", MainHandler),
(r"/test", TestHandler),
])
if __name__ == "__main__":
print "Server start at port 8888"
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()