/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.demo;
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.catalog.LayerInfo;
import org.geoserver.web.wicket.GeoServerDataProvider;
/**
* Provides a filtered, sorted view over the catalog layers.
*
* @author Andrea Aime - OpenGeo
*/
@SuppressWarnings("serial")
public class PreviewLayerProvider extends GeoServerDataProvider<PreviewLayer> {
public static final Property<PreviewLayer> TYPE = new BeanProperty<PreviewLayer>(
"type", "type");
public static final Property<PreviewLayer> NAME = new BeanProperty<PreviewLayer>(
"name", "name");
public static final Property<PreviewLayer> TITLE = new BeanProperty<PreviewLayer>(
"title", "title");
public static final Property<PreviewLayer> ABSTRACT = new BeanProperty<PreviewLayer>(
"abstract", "abstract", false);
public static final Property<PreviewLayer> KEYWORDS = new BeanProperty<PreviewLayer>(
"keywords", "keywords", false);
public static final Property<PreviewLayer> COMMON = new PropertyPlaceholder<PreviewLayer>(
"commonFormats");
public static final Property<PreviewLayer> ALL = new PropertyPlaceholder<PreviewLayer>(
"allFormats");
public static final List<Property<PreviewLayer>> PROPERTIES = Arrays.asList(TYPE,
NAME, TITLE, ABSTRACT, KEYWORDS, COMMON, ALL);
@Override
protected List<PreviewLayer> getItems() {
List<PreviewLayer> result = new ArrayList<PreviewLayer>();
List<LayerInfo> layers = getCatalog().getLayers();
for (LayerInfo layer :layers ) {
// ask for enabled() instead of isEnabled() to account for disabled resource/store
if (layer.enabled() && layer.isAdvertised()) {
result.add(new PreviewLayer(layer));
}
}
final List<LayerGroupInfo> layerGroups = getCatalog().getLayerGroups();
for (LayerGroupInfo group :layerGroups ) {
boolean enabled = true;
layers = group.getLayers();
for (LayerInfo layer :layers ) {
// ask for enabled() instead of isEnabled() to account for disabled resource/store
enabled &= layer.enabled();
}
if (enabled)
result.add(new PreviewLayer(group));
}
return result;
}
@Override
protected List<Property<PreviewLayer>> getProperties() {
return PROPERTIES;
}
public IModel newModel(Object object) {
return new PreviewLayerModel((PreviewLayer) object);
}
}