view src/main/java/app/bbs/codesegment/StartBBSCodeSegment.java @ 177:89db8388db0f

bag fix
author tatsuki
date Mon, 01 Sep 2014 17:16:20 +0900
parents 6f104ab4eb81
children ef5045af0753
line wrap: on
line source

package app.bbs.codesegment;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

import javax.servlet.Servlet;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.thread.ThreadPool;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardMessageServlet;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardServlet;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageServlet;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageUseGetServlet;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.ShowBoardsServlet;



import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;
import app.bbs.NetworkBulletinBoard;
import app.bbs.NetworkJungleBulletinBoard;
import app.bbs.RequestNumCheckServlet;
import app.bbs.ShowMessageWithTimeStampServlet;
import app.bbs.thinks.CreateNode;
import app.bbs.thinks.EditAttributeServlet;
import app.bbs.thinks.EditNodeName;
import app.bbs.thinks.ShowMatrix;
import app.bbs.thinks.createAttributeMatrix;
import app.bbs.thinks.deleteAttributeServlet;
import app.bbs.thinks.deleteNodeServlet;

public class StartBBSCodeSegment extends CodeSegment {

    int bbsPort = 8080;
    Receiver host = ids.create(CommandType.PEEK);
    private Pattern pattern = Pattern.compile("^(node|cli)([0-9]+)$");
    private String[] args;
    boolean persistentFlag = false;

    public StartBBSCodeSegment(String[] _args, int p) {
        args = _args;
        bbsPort = p;
        host.setKey("host");	
    }

    public StartBBSCodeSegment() {
        args = null;
        host.setKey("host");	
    }

    @Override
    public void run() {
        String name = host.asString();
        Matcher matcher = pattern.matcher(name);
        matcher.find();
        //		String type = matcher.group(1);
        for(String arg: args) {
            if(arg.equals("-persistent")){
                persistentFlag = true;
            }
        }
        NetworkBulletinBoard cassaBBS = null;
        if(persistentFlag) {
            System.out.println("log loading...");
            cassaBBS = NetworkJungleBulletinBoard.NewPersistentJungle(name);
            cassaBBS.init();
        } else {
            cassaBBS = new NetworkJungleBulletinBoard(name);
            cassaBBS.init();
        }

        System.out.println("StartBBSCodeSegment");
        System.out.println("name : "+ name);
        /* Jetty registration */
        String createBoardMessagePath = "/createBoardMessage";
        String createFolderPath = "/createFolder";
        String createBoardPath = "/createBoard";
        String editMessagePath = "/editMessage";
        String showBoardMessagePath = "/showBoardMessage";
        String showMatrixPath = "/showMatrix";
        String createAttributePath = "/createAttribute";
        String editAttributePath = "/editAttribute";
        String deleteAttributePath = "/deleteAttribute";
        String deleteNodePath = "/deleteNode";
        String editNodePath = "/editNode";
        Server serv = new Server(bbsPort);
        ThreadPool thp = serv.getThreadPool();
        Servlet createBoardMessage = new CreateBoardMessageServlet(cassaBBS);
        Servlet createFolder = new CreateNode(cassaBBS);
        Servlet createBoard = new CreateBoardServlet(cassaBBS);
        Servlet editNode = new EditNodeName(cassaBBS);
        Servlet createAttribute = new createAttributeMatrix(cassaBBS);
        Servlet editAttribute = new EditAttributeServlet(cassaBBS);
        Servlet deleteAttribute = new deleteAttributeServlet(cassaBBS);
        Servlet deleteNode = new deleteNodeServlet(cassaBBS);
        Servlet editBoardMessage = new EditMessageServlet(cassaBBS);
        Servlet index = new ShowBoardsServlet(cassaBBS,createBoardPath,showBoardMessagePath);
        //    	Servlet board = new ShowBoardMessageServlet(cassaBBS,createBoardMessagePath,editMessagePath);
        Servlet board = new ShowMessageWithTimeStampServlet(cassaBBS,createBoardMessagePath,editMessagePath,showMatrixPath, thp);
        Servlet matrix = new ShowMatrix(cassaBBS,createFolderPath,editNodePath, showMatrixPath, createAttributePath, editAttributePath,deleteAttributePath,deleteNodePath,thp);
        
        ServletHandler context = new ServletHandler();
        context.addServletWithMapping(new ServletHolder(editBoardMessage),editMessagePath);
        
        context.addServletWithMapping(new ServletHolder(createBoardMessage),createBoardMessagePath);
        context.addServletWithMapping(new ServletHolder(createFolder),createFolderPath);
        context.addServletWithMapping(new ServletHolder(createBoard),createBoardPath);
        context.addServletWithMapping(new ServletHolder(editNode),editNodePath);
        context.addServletWithMapping(new ServletHolder(createAttribute),createAttributePath);
        context.addServletWithMapping(new ServletHolder(index),"/");
        context.addServletWithMapping(new ServletHolder(deleteAttribute),deleteAttributePath);
        context.addServletWithMapping(new ServletHolder(deleteNode),deleteNodePath);
        context.addServletWithMapping(new ServletHolder(editAttribute),editAttributePath);
        context.addServletWithMapping(new ServletHolder(board),showBoardMessagePath);
        context.addServletWithMapping(new ServletHolder(matrix),showMatrixPath);
        /* 
         * For write benchmark 
         */
        String editMessageUseGetPath = "/editMessageUseGet";
        Servlet editMessageUseGet = new EditMessageUseGetServlet(cassaBBS);
        context.addServletWithMapping(new ServletHolder(editMessageUseGet), editMessageUseGetPath);
        String requestNumCheckPath = "/requestNum";
        Servlet requestNumCheckServlet = new RequestNumCheckServlet(cassaBBS);
        context.addServletWithMapping(new ServletHolder(requestNumCheckServlet), requestNumCheckPath);

        serv.setHandler(context);
        try {
            serv.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
        new LogUpdateCodeSegment();
    }

}