/** * @param t * @return all layers contained in this theme and subthemes */ public static List<Layer> getAllLayers( Theme t ) { List<Layer> list = new ArrayList<Layer>(); if ( t == null ) { return list; } list.addAll( t.getLayers() ); for ( Theme c : t.getThemes() ) { list.addAll( getAllLayers( c ) ); } return list; }
private void exportTheme( Theme t ) throws XMLStreamException { writer.writeStartElement( WMTSNS, "Theme" ); exportMetadata( t.getLayerMetadata(), false, null, null ); for ( Theme t2 : t.getThemes() ) { exportTheme( t2 ); } exportLayers( t.getLayers() ); writer.writeEndElement(); }
public static void aggregateSpatialMetadata( Theme theme ) { // TODO price question is, bottom up or top down inheritance? Possibly a combined approach is desirable (top // down inheritance for configured theme values, bottom up for envelopes from layers or so) SpatialMetadata curSmd = theme.getLayerMetadata().getSpatialMetadata(); Envelope env = curSmd.getEnvelope(); List<ICRS> crs = new ArrayList<ICRS>(); if ( curSmd.getCoordinateSystems() != null ) { crs.addAll( curSmd.getCoordinateSystems() ); } for ( Theme t : theme.getThemes() ) { env = aggregateFromTheme( t, env, crs ); } for ( Layer l : theme.getLayers() ) { env = aggregateFromLayer( l, env, crs ); } theme.getLayerMetadata().setSpatialMetadata( new SpatialMetadata( env, crs ) ); }