package net.varkhan.serv.http.page;
import net.varkhan.base.management.state.Level;
import net.varkhan.base.management.state.StateCheck;
import net.varkhan.base.management.state.StateReport;
import net.varkhan.base.management.state.State;
import net.varkhan.core.pres.format.HtmlFormatter;
import net.varkhan.core.pres.widget.page.HtmlPage;
import net.varkhan.core.pres.widget.page.HtmlWidget;
import java.io.IOException;
import static net.varkhan.core.pres.format.HtmlFormatter.ATR_CLASS;
/**
* <b></b>.
* <p/>
*
* @author varkhan
* @date 3/25/12
* @time 12:26 AM
*/
public class StateReportPage<L extends Level,S extends State<L,S>,F extends HtmlFormatter,P> extends HtmlWidget<F,String[],P> implements HtmlPage<F,String[],P> {
private StateReport<L,S> rep;
public StateReportPage(String id, StateReport<L,S> rep) {
super(id);
this.rep = rep;
}
@Override
public void render(F fmt, String[] loc, P par) throws IOException {
rep.update();
fmt.tb_(ATR_CLASS, "state report");
fmt.tr_(ATR_CLASS, "header block");
fmt.td_(ATR_CLASS, "header state","colspan","5").div("Global state")._td();
fmt._tr();
fmt.tr_(ATR_CLASS, "global block "+rep.state().name());
fmt.td_(ATR_CLASS, "global state","colspan","5").div(rep.state().name())._td();
fmt._tr();
fmt.tr_(ATR_CLASS, "header block");
fmt.td_(ATR_CLASS, "header name").div("Name")._td();
fmt.td_(ATR_CLASS, "header level").div("Level")._td();
fmt.td_(ATR_CLASS, "header desc").div("Description")._td();
fmt.td_(ATR_CLASS, "header state").div("State")._td();
fmt.td_(ATR_CLASS, "header reason").div("Reason")._td();
fmt._tr();
for(StateCheck<L,S> chk: rep.checks()) {
fmt.tr_(ATR_CLASS, "check block "+chk.level().name()+" "+chk.state().name());
fmt.td_(ATR_CLASS, "check name").div(chk.name())._td();
fmt.td_(ATR_CLASS, "check level").div(chk.level().name())._td();
fmt.td_(ATR_CLASS, "check desc").div(chk.desc())._td();
fmt.td_(ATR_CLASS, "check state").div(chk.state().name())._td();
fmt.td_(ATR_CLASS, "check reason").div(chk.reason())._td();
fmt._tr();
}
fmt._tb();
}
@Override
public String getLoc(String[] loc, P par) {
if(loc==null || loc.length==0) return "";
return "#"+loc[0];
}
}