44
|
1 package jungle.test.bbs.codesegment;
|
|
2
|
|
3 import java.util.regex.Pattern;
|
|
4 import java.util.regex.Matcher;
|
|
5
|
|
6 import javax.servlet.Servlet;
|
|
7
|
|
8 import jungle.test.bbs.BulletinBoard;
|
|
9 import jungle.test.bbs.CreateBoardMessageServlet;
|
|
10 import jungle.test.bbs.CreateBoardServlet;
|
|
11 import jungle.test.bbs.EditMessageServlet;
|
|
12 import jungle.test.bbs.NetworkJungleBulletinBoard;
|
|
13 import jungle.test.bbs.ShowBoardMessageServlet;
|
|
14 import jungle.test.bbs.ShowBoardsServlet;
|
|
15
|
|
16 import org.mortbay.jetty.Server;
|
|
17 import org.mortbay.jetty.servlet.ServletHandler;
|
|
18 import org.mortbay.jetty.servlet.ServletHolder;
|
|
19
|
|
20 import alice.codesegment.CodeSegment;
|
|
21 import alice.datasegment.CommandType;
|
|
22 import alice.datasegment.Receiver;
|
52
|
23 import alice.jungle.datasegment.HashSetDataSegment;
|
44
|
24
|
|
25 public class StartBBSCodeSegment extends CodeSegment {
|
|
26
|
48
|
27 int bbsPort = 8080;
|
44
|
28 Receiver host = ids.create(CommandType.PEEK);
|
|
29 private Pattern pattern = Pattern.compile("^(node|cli)([0-9]+)$");
|
|
30
|
48
|
31 public StartBBSCodeSegment(int p) {
|
|
32 bbsPort = p;
|
|
33 host.setKey("host");
|
|
34 }
|
|
35
|
44
|
36 public StartBBSCodeSegment() {
|
|
37 host.setKey("host");
|
|
38 }
|
|
39
|
|
40 public void run() {
|
|
41 System.out.println("StartBBSCodeSegment");
|
|
42 String name = host.asString();
|
46
|
43 System.out.println("name : "+ name);
|
44
|
44 Matcher matcher = pattern.matcher(name);
|
|
45 matcher.find();
|
|
46 String type = matcher.group(1);
|
52
|
47
|
|
48
|
44
|
49 BulletinBoard cassaBBS = new NetworkJungleBulletinBoard(name);
|
|
50 String createBoardMessagePath = "/createBoardMessage";
|
|
51 String createBoardPath = "/createBoard";
|
|
52 String editMessagePath = "/editMessage";
|
|
53 String showBoardMessagePath = "/showBoardMessage";
|
|
54
|
|
55 Servlet createBoardMessage = new CreateBoardMessageServlet(cassaBBS);
|
|
56 Servlet createBoard = new CreateBoardServlet(cassaBBS);
|
|
57 Servlet editBoardMessage = new EditMessageServlet(cassaBBS);
|
|
58 Servlet index = new ShowBoardsServlet(cassaBBS,createBoardPath,showBoardMessagePath);
|
|
59 Servlet board = new ShowBoardMessageServlet(cassaBBS,createBoardMessagePath,editMessagePath);
|
|
60
|
48
|
61 Server serv = new Server(bbsPort);
|
44
|
62 ServletHandler context = new ServletHandler();
|
|
63 context.addServletWithMapping(new ServletHolder(createBoardMessage),createBoardMessagePath);
|
|
64 context.addServletWithMapping(new ServletHolder(createBoard),createBoardPath);
|
|
65 context.addServletWithMapping(new ServletHolder(editBoardMessage),editMessagePath);
|
|
66 context.addServletWithMapping(new ServletHolder(index),"/");
|
|
67 context.addServletWithMapping(new ServletHolder(board),showBoardMessagePath);
|
|
68 serv.addHandler(context);
|
|
69 try {
|
|
70 serv.start();
|
|
71 } catch (Exception e) {
|
|
72 e.printStackTrace();
|
|
73 }
|
49
|
74
|
50
|
75 new ChildLogCheckCodeSegment();
|
52
|
76 HashSetDataSegment hashLog = new HashSetDataSegment();
|
|
77 ods.put("hashLog", hashLog);
|
|
78
|
49
|
79 int num = new Integer(matcher.group(2));
|
|
80 if (num != 0) {
|
|
81 // try {Thread.sleep(100);} catch(Exception e) { e.printStackTrace(); }
|
50
|
82 new LogUpdateCodeSegment();
|
49
|
83 }
|
|
84
|
|
85
|
44
|
86
|
|
87 }
|
|
88
|
|
89 }
|