package fr.openwide.core.wicket.more.markup.html.pages.monitoring;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.Page;
import org.apache.wicket.markup.MarkupType;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.util.string.Strings;
import fr.openwide.core.wicket.markup.html.basic.CoreLabel;
public abstract class AbstractMonitoringPage extends Page {
private static final long serialVersionUID = -2327468306332270500L;
public static final String TEXT_MIME = "text/plain";
public static final MarkupType TEXT_PLAIN_MARKUP_TYPE = new MarkupType("txt", TEXT_MIME);
private boolean success;
private List<String> details = new ArrayList<String>();
private String message;
public AbstractMonitoringPage() {
super();
}
@Override
public void onInitialize() {
super.onInitialize();
add(new Label("status", isSuccess() ? "OK" : "KO").setEscapeModelStrings(false));
add(new ListView<String>("details", getDetails()) {
private static final long serialVersionUID = 1998240269123369862L;
@Override
protected void populateItem(ListItem<String> item) {
item.add(new Label("detail", item.getModelObject().replaceAll("\\|", "<pipe>")).setEscapeModelStrings(false));
Label separator = new Label("separator", " | ");
separator.setVisible(item.getIndex() != getList().size() - 1);
item.add(separator);
}
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(!getDetails().isEmpty());
}
});
add(new CoreLabel("message", Model.of(getMessage())).hideIfEmpty().setEscapeModelStrings(false));
}
@Override
public MarkupType getMarkupType() {
return TEXT_PLAIN_MARKUP_TYPE;
}
@Override
protected void onRender() {
final String encoding = getApplication().getRequestCycleSettings().getResponseRequestEncoding();
final boolean validEncoding = (Strings.isEmpty(encoding) == false);
final String contentType;
if (validEncoding) {
contentType = getMarkupType().getMimeType() + "; charset=" + encoding;
} else {
contentType = getMarkupType().getMimeType();
}
((WebResponse) RequestCycle.get().getResponse()).setContentType(contentType);
super.onRender();
}
public void setSuccess(boolean success) {
this.success = success;
}
public boolean isSuccess() {
return success;
}
public void setDetails(List<String> details) {
this.details = details;
}
public List<String> getDetails() {
return details;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}