Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main;
- import html.HTMLDocument;
- import html.HTMLDocumentHandlerFactory;
- import html.HTMLElement;
- import richtext.RichTextHandler;
- import richtext.NestedMarkupHelper;
- import richtext.InlineMarkup;
- import richtext.SmileyParserFactory;
- import richtext.HyperlinkParser;
- import bbcode.BBCodeParser;
- import server.AbstractServer;
- import server.Query;
- import server.Request;
- import server.RequestMethod;
- import server.Response;
- import server.ExchangedRequest;
- import forum.Forum;
- import reply.ReplyContainer;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.util.Locale;
- import java.util.Stack;
- import java.util.ResourceBundle;
- import server.ResponseStatus;
- /**
- * A main class used to test Liva.
- * @author tobyhinloopen
- */
- public class Main {
- private static Stack<String> msgs = new Stack<String>();
- final static int MAX_MESSAGE_LENGTH = 0x0FFFFF;
- /**
- * The entrypoint of the test class of Liva.
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- try {
- Connection conn = null;
- try {
- ResourceBundle mysqlprops = ResourceBundle.getBundle("main.mysql");
- String host = mysqlprops.getString("host");
- int port = Integer.parseInt(mysqlprops.getString("port"));
- String database = mysqlprops.getString("db");
- String user = mysqlprops.getString("user");
- String password = mysqlprops.getString("pass");
- conn = DriverManager.getConnection("jdbc:mysql://"+host+":"+port+"/"+database+"?user="+user+"&password="+password);
- } catch(Exception e) {
- e.printStackTrace();
- }
- final HTMLDocumentHandlerFactory documentHandlerFactory = new HTMLDocumentHandlerFactory();
- HTMLElement element;
- for(InlineMarkup markup : InlineMarkup.values()) {
- element = new HTMLElement("span");
- element.setAttribute("class", markup.name().toLowerCase());
- documentHandlerFactory.addTag(markup, element);
- }
- final SmileyParserFactory smileyHandlerFactory = new SmileyParserFactory();
- smileyHandlerFactory.set(":P", "joke");
- smileyHandlerFactory.set(":D", "happy");
- smileyHandlerFactory.set("xD", "wtf");
- smileyHandlerFactory.set(":xD", "wtf");
- smileyHandlerFactory.set(":(", "sad");
- smileyHandlerFactory.set(":)", "smile");
- smileyHandlerFactory.set(":'(", "cry");
- smileyHandlerFactory.set(":@", "mad");
- smileyHandlerFactory.set(":|", "shocked");
- smileyHandlerFactory.set(":o", "ooo");
- //Creates a new BBCode parser and register some BBCode tagnames with
- //their RichText InlineMarkup counterpart.
- final BBCodeParser bbcode = new BBCodeParser();
- bbcode.addTag("b", InlineMarkup.BOLD);
- bbcode.addTag("i", InlineMarkup.ITALIC);
- bbcode.addTag("u", InlineMarkup.UNDERLINE);
- bbcode.addTag("s", InlineMarkup.STRIKE);
- bbcode.addTag("strike", InlineMarkup.STRIKE);
- final Forum forum = new Forum(conn, bbcode);
- final ReplyContainer guestbook = forum.getTopic(1);
- ResourceBundle serverprops = ResourceBundle.getBundle("main.server");
- ExchangedRequest.setMaxPostSize(Long.parseLong(serverprops.getString("http.maxPostSize")));
- AbstractServer server = new AbstractServer(
- Integer.parseInt(serverprops.getString("http.port")),
- Integer.parseInt(serverprops.getString("http.maxConnections"))) {
- public void handle(Query query, Request request, Response response) throws IOException {
- try {
- //System.out.println(query);
- //System.out.println(request);
- //System.out.println(response);
- if(request.getRequestMethod() == RequestMethod.POST) {
- String msg = request.getArgument("msg");
- if(msg != null) {
- System.out.println("MSG-LENGTH: "+msg.length());
- if(msg.length()>MAX_MESSAGE_LENGTH) {
- msg = msg.substring(0,MAX_MESSAGE_LENGTH);
- }
- msgs.add(0, msg);
- if(msgs.size()>0xFF) {
- msgs.pop();
- }
- }
- response.setHeader("Location", "/");
- response.sendHeaders(ResponseStatus._303_SEE_OTHER);
- response.finish();
- return;
- }
- HTMLDocument document = new HTMLDocument(response.getWriter());
- document.openDocument(new Locale("nl"));
- document.add("title", "Gast & Boek");
- document.startBody();
- document.add("h1", "Gast & Boek");
- document.open("form");
- document.setAttribute("method", "post");
- document.open("textarea");
- document.setAttribute("name", "msg");
- document.setAttribute("cols", "70");
- document.setAttribute("rows", "5");
- document.close(true);
- document.println();
- document.println("Note: Max "+MAX_MESSAGE_LENGTH+" tekens!");
- document.add("button", "Post!");
- document.close();
- RichTextHandler handler = new HyperlinkParser(
- smileyHandlerFactory.create(
- new NestedMarkupHelper(
- documentHandlerFactory.create(document))));
- for(String msg : msgs) {
- double millitime = (double)System.nanoTime()/1000000d;
- bbcode.parse(msg, handler);
- millitime = (double)System.nanoTime()/1000000d - millitime;
- document.open("code");
- document.setAttribute("style", "float:right;");
- document.print(millitime+"ms");
- document.close();
- document.add("hr");
- }
- document.closeDocument();
- response.finish();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- };
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement