--- CircuitBreaker/src/dk/thoerup/circuitbreaker/web/ViewCircuitBreaker.java 2009/10/22 06:01:35 467 +++ miscJava/CircuitBreaker/src/main/java/dk/thoerup/circuitbreaker/web/ViewCircuitBreaker.java 2015/03/20 08:58:46 2449 @@ -1,11 +1,14 @@ package dk.thoerup.circuitbreaker.web; import java.util.Date; +import java.util.Formatter; +import java.util.LinkedList; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dk.thoerup.circuitbreaker.AccountingCircuitBreaker; +import dk.thoerup.circuitbreaker.LoggingCircuitBreaker; import dk.thoerup.circuitbreaker.CircuitBreaker; import dk.thoerup.circuitbreaker.CircuitBreakerManager; @@ -45,6 +48,14 @@ return sb.toString(); } + public static String formatDate(long date) { + if (date == 0L) { + return "-"; + } else { + return new Date(date).toString(); + } + } + public String execute(HttpServletRequest req, HttpServletResponse resp) { CircuitBreaker breaker = CircuitBreakerManager.getManager().getCircuitBreaker( req.getParameter("breaker")); String uri = req.getRequestURI(); @@ -72,16 +83,52 @@ if (breaker instanceof AccountingCircuitBreaker) { AccountingCircuitBreaker acb = (AccountingCircuitBreaker) breaker; + + StringBuilder sbf = new StringBuilder(); + if (acb.getTotalCallCount() > 0) { + double failure_percentage = ((double) acb.getTotalFailureCount()*100) / ((double) acb.getTotalCallCount() ); + Formatter formatter = new Formatter(sbf); + formatter.format("%.2f", failure_percentage); + formatter.close(); + } else { + sbf.append("0.0"); + } + + sb.append("Accounting\n"); sb.append("Trip count").append( acb.getTripCount() ).append("\n"); + sb.append("Re-trip count").append( acb.getRetripCount() ).append("\n"); sb.append("Block count").append( acb.getBlockCount() ).append("\n"); sb.append("Total failure count").append( acb.getTotalFailureCount() ).append("\n"); sb.append("Total Call count").append( acb.getTotalCallCount() ).append("\n"); - sb.append("Last trip").append( new Date(acb.getLastTrip()).toString() ).append("\n"); - sb.append("Last resetCounters").append( new Date(acb.getLastResetCounters()).toString() ).append("\n"); + sb.append("Failure Percentage").append( sbf.toString() ).append("%\n"); + sb.append("Last failure").append( formatDate(acb.getLastFailure()) ).append("\n"); + sb.append("Last trip").append( formatDate(acb.getLastTrip()) ).append("\n"); + sb.append("Last re-trip").append( formatDate(acb.getLastRetrip()) ).append("\n"); + sb.append("Last reset").append( formatDate(acb.getLastReset()) ).append("\n"); + + sb.append("Last resetCounters").append( formatDate(acb.getLastResetCounters()) ).append("\n"); + } + + if (breaker instanceof LoggingCircuitBreaker) { + LoggingCircuitBreaker lcb = (LoggingCircuitBreaker) breaker; + + LinkedList list = lcb.getLog(); + String headerLink = String.format("Logging", req.getRequestURI(), breaker.getName() ); + + sb.append("").append(headerLink).append("\n"); + + int max = list.size() > 10 ? 10 : list.size(); + for (int i=0; i"); + sb.append( entry.toString() ); + sb.append(""); + } } - sb.append("
\n"); + sb.append("\n"); + sb.append("Current time: ").append( new Date().toString() ).append("

\n"); sb.append("Operations:\n"); if ( !readOnly ) { @@ -90,6 +137,9 @@ if (breaker instanceof AccountingCircuitBreaker ) { sb.append( actionBuilder(uri, "resetCounters", breaker.getName())).append("
\n"); } + if (breaker instanceof LoggingCircuitBreaker ) { + sb.append( actionBuilder(uri, "clearLog", breaker.getName())).append("
\n"); + } } else { sb.append("the CircuitBreakers can only be viewed"); }