--- CircuitBreaker/src/dk/thoerup/curcuitbreaker/web/ViewCircuitBreaker.java 2009/10/21 07:56:37 460 +++ CircuitBreaker/src/dk/thoerup/circuitbreaker/web/ViewCircuitBreaker.java 2012/08/31 06:33:12 1844 @@ -1,13 +1,16 @@ -package dk.thoerup.curcuitbreaker.web; +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.curcuitbreaker.AccountingCircuitBreaker; -import dk.thoerup.curcuitbreaker.CircuitBreaker; -import dk.thoerup.curcuitbreaker.CircuitBreakerManager; +import dk.thoerup.circuitbreaker.AccountingCircuitBreaker; +import dk.thoerup.circuitbreaker.LoggingCircuitBreaker; +import dk.thoerup.circuitbreaker.CircuitBreaker; +import dk.thoerup.circuitbreaker.CircuitBreakerManager; public class ViewCircuitBreaker implements Command { @@ -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(); @@ -62,7 +73,7 @@ sb.append("Attributes:\n"); sb.append(""); sb.append("\n"); - sb.append("\n"); + sb.append("\n"); sb.append("\n"); sb.append("\n"); sb.append("\n"); @@ -72,16 +83,47 @@ if (breaker instanceof AccountingCircuitBreaker) { AccountingCircuitBreaker acb = (AccountingCircuitBreaker) breaker; + + double failure_percentage = ((double) acb.getTotalFailureCount()*100) / ((double) acb.getTotalCallCount() ); + StringBuilder sbf = new StringBuilder(); + Formatter formatter = new Formatter(sb); + formatter.format("%.2f", failure_percentage); + + sb.append("\n"); sb.append("\n"); + sb.append("\n"); sb.append("\n"); sb.append("\n"); sb.append("\n"); - sb.append("\n"); - sb.append("\n"); + sb.append("\n"); + sb.append("\n"); + sb.append("\n"); + sb.append("\n"); + sb.append("\n"); + + sb.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("\n"); + + int max = list.size() > 10 ? 10 : list.size(); + for (int i=0; i"); + } } - sb.append("
Name ").append(breaker.getName()).append("
State ").append( breaker ).append("
State ").append( getStateBar(breaker) ).append("
Type ").append(breaker.getClass().getSimpleName() ).append("
Notifier ").append(breaker.getNotifierName()).append("
Failure count ").append(breaker.getFailureCount()).append("
Accounting
Trip count").append( acb.getTripCount() ).append("
Re-trip count").append( acb.getRetripCount() ).append("
Block count").append( acb.getBlockCount() ).append("
Total failure count").append( acb.getTotalFailureCount() ).append("
Total Call count").append( acb.getTotalCallCount() ).append("
Last trip").append( new Date(acb.getLastTrip()).toString() ).append("
Last reset").append( new Date(acb.getLastResetCounters()).toString() ).append("
Failure Percentage").append( sb.toString() ).append("%
Last failure").append( formatDate(acb.getLastFailure()) ).append("
Last trip").append( formatDate(acb.getLastTrip()) ).append("
Last re-trip").append( formatDate(acb.getLastRetrip()) ).append("
Last reset").append( formatDate(acb.getLastReset()) ).append("
Last resetCounters").append( formatDate(acb.getLastResetCounters()) ).append("
").append(headerLink).append("
"); + sb.append( entry.toString() ); + sb.append("

\n"); + sb.append("\n"); + sb.append("Current time: ").append( new Date().toString() ).append("

\n"); sb.append("Operations:\n"); if ( !readOnly ) { @@ -90,6 +132,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"); }