Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.29 KB | None | 0 0
  1. import java.util.*;
  2. import javax.servlet.http.*;
  3. import org.apache.log4j.spi.*;
  4. import javax.servlet.*;
  5. import java.io.*;
  6. import org.apache.log4j.*;
  7. import javax.xml.parsers.*;
  8. import javax.xml.transform.*;
  9. import javax.xml.transform.dom.*;
  10. import javax.xml.transform.stream.*;
  11. import org.apache.xerces.parsers.*;
  12. import org.w3c.dom.*;
  13. import java.lang.Long;
  14.  
  15. //Most of the html stuff in here is quite roughly done. normally id be sane and use a library but I dont know what you wanted so i figured id do it this way.
  16. //in most projects like this i would have created a seperate servlet to act as a rest service, but in the case of this one ive made it so that the get request
  17. //passes a "service" parameter to determine what to send back.
  18. public class Demo extends HttpServlet{
  19.  
  20.     private LogDB logDB;
  21.  
  22.     public Demo()
  23.     {
  24.    
  25.     }
  26.  
  27.     public void doGet(HttpServletRequest request, HttpServletResponse response)
  28.     {
  29.     PrintWriter writer = null;
  30.     try
  31.     {
  32.         writer = response.getWriter();
  33.     }
  34.     catch(Exception e)
  35.     {
  36.         System.out.println(e.getMessage());
  37.     }
  38.     if(request.getParameter("service") == null)
  39.     {
  40.         writer.write(this.getPage());
  41.         return;
  42.     }
  43.     if(request.getParameter("service").equals("update"))
  44.     {
  45.         String logger = request.getParameter("logger");
  46.         Level level = Level.toLevel(request.getParameter("level"));
  47.         response.setContentType("text/xml");
  48.         response.setHeader("Cache-Control", "no-cache");
  49.         response.setHeader("Pragma", "no-cache");
  50.        
  51.         try{
  52.         Document document = this.getXML(level, logger);
  53.         Source source = new DOMSource(document);
  54.         Result result = new StreamResult(response.getWriter());
  55.         Transformer xformer = TransformerFactory.newInstance().newTransformer();
  56.         xformer.transform(source, result);
  57.         }
  58.         catch(Exception e)
  59.         {
  60.         System.out.println(e.getMessage());
  61.         }
  62.  
  63.     }
  64.     else
  65.     if(request.getParameter("service").equals("delete"))
  66.     {
  67.         this.logDB.reset();
  68.     }
  69.     else
  70.     {
  71.         writer.write(this.getPage());
  72.     }
  73.     }
  74.  
  75.     /**
  76.        All of the init stuff goes in here. the connection details are read from the web.xml config file.
  77.      **/
  78.     public void init()
  79.     {
  80.     this.logDB = new LogDB();
  81.     ServletConfig config = getServletConfig();
  82.     String user = config.getInitParameter("user");
  83.     String password = config.getInitParameter("password");
  84.     String url = config.getInitParameter("url");
  85.     String table = config.getInitParameter("table");
  86.     String database = config.getInitParameter("database");
  87.     this.logDB.setDetails(table, user, password, url, database);
  88.     this.logDB.connect();
  89.     }
  90.  
  91.     /**
  92.      
  93.      **/
  94.     public String getSearchForm()
  95.     {
  96.     StringBuffer output = new StringBuffer();
  97.     output.append("<form id = 'SearchForm'>");
  98.     output.append("<table>");
  99.     output.append(getTextSearchRow());
  100.     output.append(getLevelRow());
  101.     output.append(getNumberOfResultsRow());
  102.     output.append(getLoggerRow());
  103.     output.append(getUpdateButton());
  104.     output.append("</table>");
  105.     output.append("</form>");
  106.     return output.toString();
  107.     }
  108.  
  109.     public String getUpdateButton()
  110.     {
  111.     StringBuffer output = new StringBuffer();
  112.     output.append("<tr>");
  113.     output.append("<td>");
  114.     output.append("<input type = 'button' onClick = 'updateValues()' value='update'/>");
  115.     output.append("</td>");
  116.     output.append("</tr>");
  117.     return output.toString();
  118.     }
  119.  
  120.     public String getRow(String data1, String data2)
  121.     {
  122.     StringBuffer output = new StringBuffer();
  123.     output.append("<tr>");
  124.     output.append("<td>");
  125.     output.append(data1);
  126.     output.append("</td>");
  127.     output.append("<td>");
  128.     output.append(data2);
  129.     output.append("</td>");
  130.     output.append("</tr>");
  131.     return output.toString();
  132.     }
  133.  
  134.     public String getNumberOfResultsRow()
  135.     {
  136.     return getRow("Maximum Results", "<input type = 'text' name = 'numberResults' id = 'numberResults'");
  137.     }
  138.  
  139.     public String getTextSearchRow()
  140.     {
  141.     return getRow("Search", "<input type = 'text' name = 'search' id = 'search'");
  142.     }
  143.  
  144.     public String getLevelRow()
  145.     {
  146.     return getRow("Level", getLevelOptions());
  147.     }
  148.  
  149.     public String getLoggerRow()
  150.     {
  151.     return getRow("Logger", "<input type = 'text' name = 'logger' id = 'loggerEntry'");
  152.     }
  153.  
  154.     public String getLevelOptions()
  155.     {
  156.     StringBuffer options = new StringBuffer();
  157.     options.append("<select id = 'levelSelect' name = 'levelSelect'>");
  158.     options.append("<option>DEBUG</option>");
  159.     options.append("<option>WARN</option>");
  160.     options.append("<option>INFO</option>");
  161.     options.append("<option>ERROR</option>");
  162.     options.append("<option>ALL</option>");
  163.     options.append("</select>");
  164.     return options.toString();
  165.     }
  166.  
  167.     public String getResultsXml()
  168.     {
  169.     String output = new String();
  170.     return output;
  171.     }
  172.  
  173.     public String getPage()
  174.     {
  175.     StringBuffer page = new StringBuffer();
  176.     page.append("<html>");
  177.     page.append("<head>");
  178.     page.append("<script type = 'text/javascript' src = 'Demo.js'></script>");
  179.  
  180.     page.append("</head>");
  181.     page.append("<body onload='init()'>");
  182.     page.append("<div id = 'Events'>");
  183.     page.append("</div>");
  184.     page.append(this.getSearchForm());
  185.     page.append("</body>");
  186.     page.append("<html>");
  187.     return page.toString();
  188.     }
  189.  
  190.  
  191.  
  192.     public Document getXML(Level level, String logger) throws ParserConfigurationException
  193.     {
  194.     Iterator<LoggingEvent> events = this.logDB.getLogEvents(level, logger);
  195.     DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
  196.         DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
  197.         Document document = docBuilder.newDocument();
  198.  
  199.     Element root = document.createElement("Events");
  200.     while(events.hasNext())
  201.     {
  202.         System.out.println("looping");
  203.         LoggingEvent e = events.next();
  204.         root.appendChild(this.getLoggingEventXml(e, document));
  205.     }
  206.     document.appendChild(root);
  207.     return document;
  208.     }
  209.  
  210.     public Element getLoggingEventXml(LoggingEvent event, Document document)
  211.     {
  212.     Element root = document.createElement("Event");
  213.  
  214.     Element logger = document.createElement("Logger");
  215.     Text loggerText = document.createTextNode(event.getLoggerName());
  216.     logger.appendChild(loggerText);
  217.     Element message = document.createElement("Message");
  218.     Text messageText = document.createTextNode(event.getMessage().toString());
  219.     message.appendChild(messageText);
  220.     Element level = document.createElement("Level");
  221.     Text levelText = document.createTextNode(event.getLevel().toString());
  222.     level.appendChild(levelText);
  223.     Element time = document.createElement("Time");
  224.     Text timeText = document.createTextNode(new Long(event.getTimeStamp()).toString());
  225.     time.appendChild(timeText);
  226.  
  227.    
  228.     root.appendChild(time);
  229.     root.appendChild(logger);
  230.     root.appendChild(message);
  231.     root.appendChild(level);
  232.  
  233.     return root;
  234.     }
  235. }import javax.servlet.*;
  236. import java.io.*;
  237. import javax.servlet.http.*;
  238.  
  239. public class Index extends HttpServlet
  240. {
  241.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  242.     {
  243.     response.setHeader("content-type", "text/html");
  244.     PrintWriter out = response.getWriter();
  245.     out.write("<html>");
  246.     out.write("");
  247.     out.write("</html>");
  248.     }
  249. }import java.sql.*;
  250. import java.util.*;
  251. import java.io.*;
  252. import org.apache.log4j.spi.*;
  253. import org.apache.log4j.*;
  254.  
  255. public class LogDB{
  256.  
  257.  
  258.     private Connection connection;
  259.     private String url;
  260.     private String user;
  261.     private String password;
  262.     private String database;
  263.     private String table;
  264.  
  265.     public LogDB()
  266.     {
  267.    
  268.     }
  269.  
  270.     public void reset()
  271.     {
  272.     try
  273.     {
  274.         String statementString = "delete from " + this.table;
  275.         Statement statement = this.connection.createStatement();
  276.         statement.execute(statementString);
  277.     }
  278.     catch(Exception e)
  279.     {
  280.         System.out.println(e.getMessage());
  281.     }
  282.     }
  283.  
  284.     public void setDetails(String table, String user, String password, String url, String database)
  285.     {
  286.     this.table = table;
  287.     this.password = password;
  288.     this.user = user;
  289.     this.url = url;
  290.     this.database = database;
  291.     }
  292.  
  293.     public void connect()
  294.     {
  295.     try
  296.     {
  297.         Class.forName("com.mysql.jdbc.Driver").newInstance();
  298.         String connectString = "jdbc:mysql://" + this.url + "/" + this.database + "?user=" + this.user + "&password=" +this.password;
  299.         this.connection = DriverManager.getConnection(connectString);
  300.     }
  301.     catch(Exception e)
  302.     {
  303.        
  304.     }
  305.      
  306.     }
  307.    
  308.     public Iterator<LoggingEvent> getLogEvents(Level level, String loggerName)
  309.     {
  310.     ArrayList<LoggingEvent> events = new ArrayList<LoggingEvent>();
  311.     try
  312.     {
  313.         String statementString = new String("select * from " + this.table + " where logger = " + "'"+loggerName+"' and level = " + "'" + level.toString() + "' order by timeStamp desc");
  314.         System.out.println(statementString);
  315.         Statement statement = connection.createStatement();
  316.         ResultSet rs = statement.executeQuery(statementString);
  317.         InputStream is = null;
  318.         ObjectInputStream ois = null;
  319.         while(rs.next())
  320.         {
  321.         is = rs.getBlob("event").getBinaryStream();
  322.         ois = new ObjectInputStream(is);
  323.         LoggingEvent e = (LoggingEvent)ois.readObject();
  324.         events.add(e);
  325.         System.out.println(e.getMessage());
  326.         }
  327.     }
  328.     catch(Exception e)
  329.     {
  330.         System.out.println("blah" + e.getMessage());
  331.     }
  332.     return events.iterator();
  333.     }
  334.  
  335. }import org.apache.log4j.spi.*;
  336. import org.apache.log4j.*;
  337. import java.lang.*;
  338. import java.util.*;
  339. /**
  340. I should justify this class. Hibernate requires quite a few things that LoggingEvent simply doesnt offer, such as a no arguments constructor.
  341. As a solution to this problem and in order to save my sanity, I have implemented this class as a wrapper. It contains a LoggingEvent and the idea is that
  342. instead of storing a LoggingEvent directly I will store this class. It provides better setters and getters and provides the all important no arguments constructor.
  343. The downside is that it doesnt know what kind of LoggingEvent it should store. As a result it implements a default one, this is fine as long as its correctly setup
  344. The class itself doesn't store much information, mostly just passes back and forth between the LoggingEvent.
  345.  **/
  346.  
  347. class LoggingEventWrapper{
  348.  
  349.     private LoggingEvent event;
  350.     private String loggerName;
  351.     private String message;
  352.     private int level;
  353.     private long date;
  354.  
  355.     public LoggingEventWrapper()
  356.     {
  357.     Logger logger = Logger.getRootLogger();
  358.     Priority priority = Level.toLevel(0);
  359.     Object message = new Object();
  360.     Throwable throwable = new Throwable();
  361.     event.timeStamp = date;
  362.     LoggingEvent event = new LoggingEvent("", logger, priority, message, throwable);
  363.     }
  364.  
  365.     public Date getDate()
  366.     {
  367.     //due to the fact that the LoggingEvent stores its date as a long from 1970 ill make a new and improved date function
  368.     //this way it can be stored directly into the database as a date
  369.     return new Date(this.event.getTimeStamp());
  370.     }
  371.  
  372.     public void setDate(Date date)
  373.     {
  374.     this.date = date.getTime();
  375.     }
  376.  
  377.     public LoggingEvent getEvent()
  378.     {
  379.     Logger logger = Logger.getLogger(this.loggerName);
  380.     Priority priority = Level.toLevel(this.level);
  381.     Throwable throwable = new Throwable();
  382.     LoggingEvent event = new LoggingEvent("", logger, priority, message, throwable);
  383.     return event;
  384.     }
  385.  
  386.     public void setEvent(LoggingEvent event)
  387.     {
  388.     this.event = event;
  389.     }
  390.  
  391.     public String getMessage()
  392.     {
  393.     return this.event.getRenderedMessage();
  394.     }
  395.  
  396.     public void setMessage(String message)
  397.     {
  398.     this.message = message;
  399.     }
  400.  
  401.     public String getLoggerName()
  402.     {
  403.     return this.event.getLoggerName();
  404.     }
  405.  
  406.     public void setLoggerName(String name)
  407.     {
  408.     this.loggerName = name;
  409.     }
  410.  
  411. }import javax.servlet.http.*;
  412. import org.apache.log4j.*;
  413.  
  414. public class Log extends HttpServlet
  415. {
  416.     public void init()
  417.     {
  418.    
  419.     }
  420.  
  421.     public void doGet(HttpServletRequest request, HttpServletResponse response)
  422.     {
  423.     try
  424.     {
  425.         String level = request.getParameter("level");
  426.         String logger = request.getParameter("logger");
  427.         String message = request.getParameter("message");
  428.         response.getWriter().write("boo");
  429.         Logger theLogger = Logger.getLogger(logger);
  430.         theLogger.log(Level.toLevel(level), message);
  431.     }
  432.     catch(Exception e)
  433.     {
  434.     }
  435.     }
  436. }import org.apache.log4j.*;
  437. import org.apache.log4j.spi.*;
  438. import java.util.*;
  439. import java.sql.*;
  440.  
  441. public class MyAppender implements Appender{
  442.  
  443.     public String user;
  444.     private String url;
  445.     private String password;
  446.     private String name;
  447.     private String database;
  448.     private String table;
  449.    
  450.     private ArrayList<LoggingEvent> loggingEvents;
  451.     private ArrayList<Filter> filters;
  452.     private Layout layout;
  453.     private ErrorHandler errorHandler;
  454.  
  455.     public MyAppender()
  456.     {
  457.     this.loggingEvents = new ArrayList<LoggingEvent>();
  458.     this.filters = new ArrayList<Filter>();
  459.     this.layout = null;
  460.     this.errorHandler = null;
  461.     //fix this lot later
  462.     this.user = "root";
  463.     this.password = "f5g7eaef";
  464.     this.url = "localhost";
  465.     this.database="assignment";
  466.     this.table = "test";
  467.     }
  468.  
  469.     public void activateOptions()
  470.     {
  471.     System.out.println("acti");
  472.     }
  473.  
  474.     public void close()
  475.     {
  476.     }
  477.  
  478.     public void append(LoggingEvent e)
  479.     {
  480.     this.loggingEvents.add(e);
  481.     }
  482.  
  483.     public boolean requiresLayout()
  484.     {
  485.     return false;
  486.     }
  487.  
  488.     public String getName()
  489.     {
  490.     return this.name;
  491.     }
  492.  
  493.     public void setName(String name)
  494.     {
  495.     this.name = name;
  496.     }
  497.  
  498.     public void addFilter(Filter filter)
  499.     {
  500.     this.filters.add(filter);
  501.     }
  502.  
  503.     public Layout getLayout()
  504.     {
  505.     return this.layout;
  506.     }
  507.  
  508.     public void setLayout(Layout layout)
  509.     {
  510.     this.layout = layout;
  511.     }
  512.  
  513.     public Filter getFilter()
  514.     {
  515.     return this.filters.get(0);
  516.     }
  517.  
  518.  
  519.     public void doAppend(LoggingEvent event)
  520.     {
  521.     try{
  522.         Class.forName("com.mysql.jdbc.Driver").newInstance();
  523.         String connectString = "jdbc:mysql://" + this.url + "/" + this.database + "?user=" + this.user + "&password=" +this.password;
  524.         Connection connection = DriverManager.getConnection(connectString, this.user, this.password);
  525.         PreparedStatement statement = getPreparedStatement(event, connection);
  526.         statement.execute();
  527.     }
  528.     catch(Exception e)
  529.     {
  530.         System.out.println("nooooooooo" + e.getMessage());
  531.     }
  532.     }
  533.  
  534.     public PreparedStatement getPreparedStatement(LoggingEvent event, Connection connection)
  535.     {
  536.     try{
  537.     String prepared =getPreparedString();
  538.     PreparedStatement statement = connection.prepareStatement(prepared);
  539.     statement.setObject(1, event);
  540.     statement.setString(2, event.getRenderedMessage());
  541.     statement.setString(3, event.getLoggerName());
  542.     statement.setString(4, event.getLevel().toString());
  543.     statement.setLong(5, event.getTimeStamp());
  544.     return statement;
  545.     }
  546.     catch(Exception e)
  547.     {
  548.         System.out.println(e.getMessage());
  549.         return null;
  550.     }
  551.     }
  552.  
  553.     public String getPreparedString()
  554.     {
  555.     return new String("insert into " + this.table + " (event, message, logger, level, timeStamp) values(?,?,?, ?, ?)");
  556.     }
  557.  
  558.     public void setErrorHandler(ErrorHandler handler)
  559.     {
  560.     this.errorHandler = handler;
  561.     }
  562.  
  563.     public ErrorHandler getErrorHandler()
  564.     {
  565.     return this.errorHandler;
  566.     }
  567.  
  568.     public void clearFilters()
  569.     {
  570.     this.filters.clear();
  571.     }
  572.  
  573.     public String getUser()
  574.     {
  575.     return this.user;
  576.     }
  577.  
  578.     public void setUser(String user)
  579.     {
  580.     this.user = user;
  581.     }
  582.  
  583.     public String getUrl()
  584.     {
  585.     return this.url;
  586.     }
  587.  
  588.     public String getPassword()
  589.     {
  590.     return this.password;
  591.     }
  592.  
  593.     public void setUrl(String url)
  594.     {
  595.     this.url = url;
  596.     }
  597.     public void setPassword(String password)
  598.     {
  599.     this.password = password;
  600.     }
  601. }class MyLoggingEvent extends LoggingEventimport org.apache.log4j.spi.*;
  602.  
  603. //I am cheating, hibernate requires a great many things that LoggingEvent doesnt have such as a no arguments constructor
  604. //and hibernate is driving me insane.
  605. //by writing this class I still have a LoggingEvent, just a better one, and i keep my sanity.
  606. //thank you.
  607. class MyLoggingEvent extends LoggingEvent
  608. {
  609.     MyLoggingEvent()
  610.     {
  611.     super(null, null, null, null, null);
  612.     //this is a no argument constructor.
  613.     }
  614. }import java.sql.*;
  615. import java.util.*;
  616. import java.io.*;
  617. import org.apache.log4j.spi.*;
  618. import org.apache.log4j.*;
  619. import org.apache.log4j.Level;
  620. public class test{
  621.  
  622.     public static void main(String[] args)
  623.     {
  624.     LogDB log = new LogDB();
  625.     Iterator<LoggingEvent> events = log.getLogEvents(Level.toLevel("INFO"), "root");
  626.     while(events.hasNext())
  627.         {
  628.         LoggingEvent e = events.next();
  629.         System.out.println(e.getMessage());
  630.         }
  631.     }
  632. }import javax.servlet.*;
  633. import java.io.*;
  634. import javax.servlet.http.*;
  635. import soup.*;
  636. import org.apache.log4j.*;
  637.  
  638.  
  639. public class Word extends  HttpServlet
  640. {
  641.  
  642.     public static final long serialVersionUID = 1;
  643.     private static final Logger logger = Logger.getRootLogger();
  644.  
  645.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  646.     {
  647.     logger.debug("foo:this is info, bar:debug");
  648.     logger.info("bar:this is debug, foo:info");
  649.  
  650.     PrintWriter writer = response.getWriter();
  651.     writer.print("<html>");
  652.     writer.print(this.getHead());
  653.  
  654.     if(request.getParameter("word1") != null)
  655.         {
  656.         soup.Board board = new soup.Board(Integer.parseInt(request.getParameter("width")),Integer.parseInt(request.getParameter("height")));
  657.         for(int i = 1; true; i++)
  658.             {
  659.             if(request.getParameter("word" + Integer.toString(i)) != null)
  660.                 board.addWord(request.getParameter("word" + Integer.toString(i)));
  661.             else
  662.                 break;
  663.             }
  664.         board.fillBoard();
  665.  
  666.         //output the html
  667.         writer.write(this.getSoup(board));
  668.         }
  669.  
  670.  
  671.    
  672.     writer.write(this.getForm());
  673.     writer.print("</html>");
  674.     }
  675.  
  676.  
  677.     private String getForm()
  678.     {
  679.     String form = "";
  680.     form += "<form action = 'Index.html' method = 'get' onsubmit='return checkSubmission()'>";
  681.  
  682.     form += "<div id = 'words'>";
  683.     form += "<div id = entryDiv1><input type = text name = 'word1' id = 'word1'></div>";
  684.     form += "</div>";
  685.     form += "<input type = button onclick = 'createWord()' value = 'add word'>";
  686.     form += "<br>";
  687.     form += "<div class = sizeLabel>";
  688.     form += "height";
  689.     form += "</div>";
  690.     form += "<div class = sizeEntry id = heightDiv>";
  691.     form += "<input type = text name = height id = heightEntry>";
  692.     form += "</div>";
  693.     form += "<div class = sizeLabel>";
  694.     form += "width";
  695.     form += "</div>";
  696.     form += "<div class = sizeEntry id = 'widthDiv'>";
  697.     form += "<input type = text name = width id = widthEntry>";
  698.     form += "</div>";
  699.     form += "<input type = submit value = 'Get Word Soup!'>";
  700.     form += "</form>";
  701.     return form;
  702.     }
  703.  
  704.     private String getSoup(Board board)
  705.     {
  706.     String soup = "";
  707.     soup += "<div id = 'Soup'";
  708.     soup += "<table border = solid 1px>";
  709.     for(int i = 0; i < board.getHeight(); i++)
  710.         {
  711.         soup += "<tr>";
  712.         for(int j = 0; j < board.getWidth(); j++)
  713.             {
  714.             soup += "<td>";
  715.             soup += board.getXY(j,i);
  716.             soup += "</td>";
  717.             }
  718.         soup += "</tr>";
  719.         }
  720.     soup += "</table>";
  721.     soup += "</div>";
  722.     return soup;
  723.     }
  724.  
  725.     private String getHead()
  726.     {
  727.     String head = "";
  728.     head += "<head>";
  729.     head += "<script type = text/javascript src = 'words.js'>";
  730.     head += "</script>";
  731.     head += "</head>";
  732.     return head;
  733.     }
  734. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement