// the max number of rendering errors
wms.setMaxRenderingErrors((Integer) props.get("maxRenderingErrors"));
// base maps
Catalog catalog = geoServer.getCatalog();
// ... we need access to the actual catalog, not a filtered out view of the
// layers accessible to the current user
if(catalog instanceof Wrapper)
catalog = ((Wrapper) catalog).unwrap(Catalog.class);
CatalogFactory factory = catalog.getFactory();
List<Map> baseMaps = (List<Map>) props.get( "BaseMapGroups");
if ( baseMaps != null ) {
O: for ( Map baseMap : baseMaps ) {
LayerGroupInfo bm = factory.createLayerGroup();
bm.setName( (String) baseMap.get( "baseMapTitle" ) );
//process base map layers
List<String> layerNames = (List) baseMap.get( "baseMapLayers");
for ( String layerName : layerNames ) {
ResourceInfo resource = null;
if ( layerName.contains( ":" ) ) {
String[] qname = layerName.split( ":" );
resource = catalog.getResourceByName( qname[0],qname[1], ResourceInfo.class );
}
else {
resource = catalog.getResourceByName( layerName, ResourceInfo.class );
}
if ( resource == null ) {
LOGGER.warning("Ignoring layer group '" + bm.getName() +
"', resource '"+ layerName + "' does not exist" );
continue O;
}
List<LayerInfo> layers = catalog.getLayers(resource);
if ( layers.isEmpty() ) {
LOGGER.warning( "Ignoring layer group '" + bm.getName() +
"', no layer found for resource '" + layerName + "'");
continue O;
}
bm.getLayers().add( layers.get( 0 ) );
}
//process base map styles
List<String> styleNames = (List) baseMap.get( "baseMapStyles" );
if ( styleNames.isEmpty() ) {
//use defaults
for ( LayerInfo l : bm.getLayers() ) {
bm.getStyles().add(null);
}
}
else {
for ( int i = 0; i < styleNames.size(); i++ ) {
String styleName = styleNames.get( i );
styleName = styleName.trim();
StyleInfo style = null;
if ( "".equals( styleName ) ) {
style = null;
}
else {
style = catalog.getStyleByName( styleName );
}
bm.getStyles().add( style );
}
}
bm.getMetadata().put( "rawStyleList", (String)baseMap.get("rawBaseMapStyles"));
//base map enveloper
ReferencedEnvelope e = (ReferencedEnvelope) baseMap.get( "baseMapEnvelope");
if ( e == null ) {
e = new ReferencedEnvelope();
e.setToNull();
}
bm.setBounds( e );
LOGGER.info( "Processed layer group '" + bm.getName() + "'" );
catalog.add( bm );
}
}
wms.getVersions().add( new Version( "1.1.1" ) );
return wms;