Coverage Report - liquibase.integration.servlet.LiquibaseStatusServlet
 
Classes in this File Line Coverage Branch Coverage Complexity
LiquibaseStatusServlet
0%
0/36
0%
0/12
3.333
 
 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  0
 public class LiquibaseStatusServlet extends HttpServlet {
 20  
 
 21  0
     private static List<LogRecord> liquibaseRunLog = new ArrayList<LogRecord>();
 22  
 
 23  
     public static synchronized void logMessage(LogRecord message) {
 24  0
         liquibaseRunLog.add(message);
 25  
 
 26  0
     }
 27  
 
 28  
     @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  0
     }
 79  
 
 80  
     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  
 }