/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.monitor.web;
import java.util.Arrays;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.geoserver.monitor.Monitor;
import org.geoserver.monitor.MonitorDAO;
import org.geoserver.monitor.Query;
import org.geoserver.monitor.RequestData;
import org.geoserver.monitor.Query.Comparison;
import org.geoserver.monitor.RequestData.Status;
import org.geoserver.web.wicket.GeoServerDataProvider;
import org.geoserver.web.wicket.GeoServerTablePanel;
import org.geoserver.web.wicket.GeoServerDataProvider.BeanProperty;
import org.geoserver.web.wicket.GeoServerDataProvider.Property;
public class LiveActivityPanel extends Panel {
private static final long serialVersionUID = -2807950039989311964L;
public LiveActivityPanel(String id) {
super(id);
GeoServerTablePanel<RequestData> requests = new GeoServerTablePanel<RequestData>("requests",
new LiveRequestDataProvider()) {
private static final long serialVersionUID = -431473636413825153L;
@Override
protected Component getComponentForProperty(String id, IModel<RequestData> itemModel,
Property<RequestData> property) {
Object prop = ((BeanProperty<RequestData>) property)
.getPropertyValue((RequestData) itemModel.getObject());
String value = prop != null ? prop.toString() : "";
return new Label(id, value);
}
};
add(requests);
}
static class LiveRequestDataProvider extends GeoServerDataProvider<RequestData> {
private static final long serialVersionUID = -5576324995486786071L;
static final Property<RequestData> ID = new BeanProperty<RequestData>("id", "id");
static final Property<RequestData> PATH = new BeanProperty<RequestData>("path", "path");
static final Property<RequestData> STATUS = new BeanProperty<RequestData>("status", "status");
@Override
protected List<RequestData> getItems() {
MonitorDAO dao = getApplication().getBeanOfType(Monitor.class).getDAO();
Query q = new Query().filter("status",
Arrays.asList(Status.RUNNING, Status.WAITING, Status.CANCELLING), Comparison.IN);
return dao.getRequests(q);
}
@Override
protected List<Property<RequestData>> getProperties() {
return Arrays.asList(ID, PATH, STATUS);
}
}
}