/* (c) 2014 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.catalog;
import java.util.List;
/**
* Defines LayerGroup visibility policy, used by AdvertisedCatalog.
*
* @author Davide Savazzi - GeoSolutions
*/
public interface LayerGroupVisibilityPolicy {
/**
*
* @param group
* @param filteredLayers
* @return true if LayerGroup must be hidden, false otherwise
*/
boolean hideLayerGroup(LayerGroupInfo group, List<PublishedInfo> filteredLayers);
/**
* Never hide a LayerGroup
*/
public static final LayerGroupVisibilityPolicy HIDE_NEVER = new LayerGroupVisibilityPolicy() {
@Override
public boolean hideLayerGroup(LayerGroupInfo group, List<PublishedInfo> filteredLayers) {
return false;
}
};
/**
* Hide a LayerGroup if it doesn't contain Layers or if its Layers are all hidden
*/
public static final LayerGroupVisibilityPolicy HIDE_EMPTY = new LayerGroupVisibilityPolicy() {
@Override
public boolean hideLayerGroup(LayerGroupInfo group, List<PublishedInfo> filteredLayers) {
return filteredLayers.size() == 0;
}
};
/**
* Hide a LayerGroup if its Layers are all hidden
*/
public static final LayerGroupVisibilityPolicy HIDE_IF_ALL_HIDDEN = new LayerGroupVisibilityPolicy() {
@Override
public boolean hideLayerGroup(LayerGroupInfo group, List<PublishedInfo> filteredLayers) {
return filteredLayers.size() == 0 && group.getLayers().size() > 0;
}
};
}