/* (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.web.data.layergroup;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.wicket.model.IModel;
import org.geoserver.catalog.LayerGroupInfo;
import org.geoserver.web.wicket.GeoServerDataProvider;
/**
* Provides a table model for listing layer groups
*/
public class LayerGroupProvider extends GeoServerDataProvider<LayerGroupInfo> {
private static final long serialVersionUID = 4806818198949114395L;
public static Property<LayerGroupInfo> NAME =
new BeanProperty<LayerGroupInfo>( "name", "name" );
public static Property<LayerGroupInfo> WORKSPACE =
new BeanProperty<LayerGroupInfo>( "workspace", "workspace.name" );
static List<Property<LayerGroupInfo>> PROPERTIES = Arrays.asList(NAME, WORKSPACE);
protected LayerGroupProviderFilter groupFilter = null;
public LayerGroupProvider() {
}
public LayerGroupProvider(LayerGroupProviderFilter groupFilter) {
this.groupFilter = groupFilter;
}
@Override
protected List<LayerGroupInfo> getItems() {
List<LayerGroupInfo> groups = getCatalog().getLayerGroups();
if (groupFilter != null) {
List<LayerGroupInfo> filtered = new ArrayList<LayerGroupInfo>(groups.size());
for (LayerGroupInfo group : groups) {
if (groupFilter.accept(group)) {
filtered.add(group);
}
}
groups = filtered;
}
return groups;
}
@Override
protected List<Property<LayerGroupInfo>> getProperties() {
return PROPERTIES;
}
public IModel<LayerGroupInfo> newModel(LayerGroupInfo object) {
return new LayerGroupDetachableModel( (LayerGroupInfo) object );
}
}