/* (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.importer.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.model.IModel; import org.geoserver.web.wicket.GeoServerDataProvider; import org.geoserver.web.wicket.GeoServerDataProvider.AbstractProperty; import org.geoserver.web.wicket.GeoServerTablePanel; import org.geoserver.web.wicket.GeoServerDataProvider.Property; import org.geoserver.importer.ImportContext; import org.geoserver.importer.job.Task; public class JobQueueTable extends GeoServerTablePanel<Task<ImportContext>> { static final Property<Task<ImportContext>> IMPORT = new AbstractProperty<Task<ImportContext>>("import") { @Override public Object getPropertyValue(Task<ImportContext> item) { //have to check for null since the job might be out of the queue return item != null ? item.toString() : "null"; } }; static final Property<Task<ImportContext>> STATUS = new AbstractProperty<Task<ImportContext>>("status") { @Override public Object getPropertyValue(Task<ImportContext> item) { if (item == null) { return "Finished"; } return item.isCancelled() ? "Cancelled" : item.isDone() ? "Finished" : item.isStarted() ? "Running" : "Pending"; } }; public JobQueueTable(String id) { super(id, new GeoServerDataProvider<Task<ImportContext>>() { @Override protected List<Property<Task<ImportContext>>> getProperties() { return Arrays.asList(IMPORT, STATUS); } @Override protected List<Task<ImportContext>> getItems() { return ImporterWebUtils.importer().getTasks(); } @Override protected IModel<Task<ImportContext>> newModel(Task<ImportContext> object) { return new JobModel(object); } }); setOutputMarkupId(true); setFilterable(false); getTopPager().setVisible(false); } @Override protected Component getComponentForProperty(String id, IModel<Task<ImportContext>> itemModel, Property<Task<ImportContext>> property) { return new Label(id, property.getModel(itemModel)); } static class JobModel implements IModel<Task<ImportContext>> { Long jobid; JobModel(Task<ImportContext> job) { jobid = job.getId(); } @Override public void detach() { } @Override public Task<ImportContext> getObject() { return ImporterWebUtils.importer().getTask(jobid); } @Override public void setObject(Task<ImportContext> object) { } } }