/* (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.gwc.web.gridset; import java.util.Arrays; import java.util.Comparator; import java.util.List; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; import org.apache.wicket.model.IModel; import org.geoserver.gwc.GWC; import org.geoserver.web.wicket.GeoServerDataProvider; import org.geowebcache.diskquota.storage.Quota; import org.geowebcache.grid.GridSet; public abstract class GridSetTableProvider extends GeoServerDataProvider<GridSet> { private static final long serialVersionUID = 399110981279814481L; static final Property<GridSet> NAME = new BeanProperty<GridSet>("name", "name"); static final Property<GridSet> EPSG_CODE = new AbstractProperty<GridSet>("epsg_code") { private static final long serialVersionUID = -4311392731568045337L; @Override public Object getPropertyValue(GridSet item) { return item.getSrs().toString(); } }; static final Property<GridSet> TILE_DIMENSION = new AbstractProperty<GridSet>("tile_dimension") { private static final long serialVersionUID = 7300188694215155063L; @Override public Object getPropertyValue(GridSet item) { return item.getTileWidth() + " x " + item.getTileHeight(); } }; static final Property<GridSet> ZOOM_LEVELS = new AbstractProperty<GridSet>("zoom_levels") { private static final long serialVersionUID = 3155098860179765581L; @Override public Integer getPropertyValue(GridSet item) { return item.getNumLevels(); // this may fail if item.gridLevels is null } }; static final Property<GridSet> QUOTA_USED = new AbstractProperty<GridSet>("quota_used") { private static final long serialVersionUID = 1152149141759317288L; @Override public Object getPropertyValue(GridSet item) { String gridSetName = item.getName(); Quota usedQuotaByGridSet = GWC.get().getUsedQuotaByGridSet(gridSetName); return usedQuotaByGridSet; } }; static final Property<GridSet> ACTION_LINK = new AbstractProperty<GridSet>("") { private static final long serialVersionUID = -7593097569735264194L; @Override public Object getPropertyValue(GridSet item) { return item.getName(); } }; public GridSetTableProvider() { } @Override public abstract List<GridSet> getItems(); @Override protected List<Property<GridSet>> getProperties() { return Arrays.asList(NAME, EPSG_CODE, TILE_DIMENSION, ZOOM_LEVELS, QUOTA_USED, ACTION_LINK); } @Override protected Comparator<GridSet> getComparator(final SortParam<?> sort) { return super.getComparator(sort); } @Override public IModel<GridSet> newModel(GridSet gridset) { String name = gridset.getName(); return new GridSetDetachableModel(name); } }