Clover Coverage Report - Liquibase Core 2.0.2
Coverage timestamp: Wed Aug 3 2011 19:29:16 EDT
../../../img/srcFileCovDistChart0.png 69% of files have more coverage
32   88   8   10.67
10   74   0.25   3
3     2.67  
1    
 
  LiquibaseStatusServlet       Line # 19 32 0% 8 45 0% 0.0
 
No Tests
 
1    package liquibase.integration.servlet;
2   
3    import javax.servlet.ServletException;
4    import javax.servlet.http.HttpServlet;
5    import javax.servlet.http.HttpServletRequest;
6    import javax.servlet.http.HttpServletResponse;
7    import java.io.IOException;
8    import java.io.PrintWriter;
9    import java.text.DateFormat;
10    import java.util.ArrayList;
11    import java.util.Date;
12    import java.util.List;
13    import java.util.logging.Level;
14    import java.util.logging.LogRecord;
15   
16    /**
17    * Servlet that can be registered via web.xml to view the log of the Liquibase run from the LiquibaseServletListener.
18    */
 
19    public class LiquibaseStatusServlet extends HttpServlet {
20   
21    private static List<LogRecord> liquibaseRunLog = new ArrayList<LogRecord>();
22   
 
23  0 toggle public static synchronized void logMessage(LogRecord message) {
24  0 liquibaseRunLog.add(message);
25   
26    }
27   
 
28  0 toggle @Override
29    protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
30    throws ServletException, IOException {
31  0 httpServletResponse.setContentType("text/html");
32   
33  0 String logLevelToDisplay = httpServletRequest.getParameter("logLevel");
34  0 Level currentLevel = Level.INFO;
35  0 if (logLevelToDisplay != null) {
36  0 currentLevel = Level.parse(logLevelToDisplay);
37    }
38   
39  0 PrintWriter writer = httpServletResponse.getWriter();
40  0 writer.println("<html>");
41  0 writer.println("<head><title>Liquibase Status</title></head>");
42  0 writer.println("<body>");
43  0 if (liquibaseRunLog.size() == 0) {
44  0 writer.println("<b>Liquibase did not run</b>");
45    } else {
46  0 writer.println("<b>View level: " + getLevelLink(Level.SEVERE, currentLevel, httpServletRequest) + " "
47    + getLevelLink(Level.WARNING, currentLevel, httpServletRequest) + " "
48    + getLevelLink(Level.INFO, currentLevel, httpServletRequest) + " "
49    + getLevelLink(Level.CONFIG, currentLevel, httpServletRequest) + " "
50    + getLevelLink(Level.FINE, currentLevel, httpServletRequest) + " "
51    + getLevelLink(Level.FINER, currentLevel, httpServletRequest) + " "
52    + getLevelLink(Level.FINEST, currentLevel, httpServletRequest) + "</b>");
53   
54  0 writer.println("<hr>");
55  0 writer.println("<b>Liquibase started at "
56    + DateFormat.getDateTimeInstance().format(new Date(liquibaseRunLog.get(0).getMillis())));
57  0 writer.println("<hr>");
58  0 writer.println("<pre>");
59  0 for (LogRecord record : liquibaseRunLog) {
60  0 if (record.getLevel().intValue() >= currentLevel.intValue()) {
61  0 writer.println(record.getLevel() + ": " + record.getMessage());
62  0 if (record.getThrown() != null) {
63  0 record.getThrown().printStackTrace(writer);
64    }
65    }
66    }
67  0 writer.println("");
68  0 writer.println("");
69   
70  0 writer.println("</pre>");
71  0 writer.println("<hr>");
72  0 writer.println("<b>Liquibase finished at "
73    + DateFormat.getDateTimeInstance().format(
74    new Date(liquibaseRunLog.get(liquibaseRunLog.size() - 1).getMillis())));
75    }
76  0 writer.println("</body>");
77  0 writer.println("</html>");
78    }
79   
 
80  0 toggle private String getLevelLink(Level level, Level currentLevel, HttpServletRequest request) {
81  0 if (currentLevel.equals(level)) {
82  0 return level.getName();
83    } else {
84  0 return "<a href=" + request.getRequestURI() + "?logLevel=" + level.getName() + ">" + level.getName()
85    + "</a>";
86    }
87    }
88    }