Neste tutorial você aprenderá como interagir com o catálogo do GeoServer. O objetivo é criar um serviço simples que irá interagir com os dados das FeatureTypes e DataStores.
Primeiro criaremos nosso serviço, o qual chamaremos de CatalogLister e realizará as seguinte operações: listar todos os datastores e featuretypes do catálogo.
[source language=”:Java”]
public class CatalogLister {
public void listDataStores( OutputStream output ) {
}
public void listFeatureTypes( OutputStream output ) {
}
}
[/source]
A primeira coisa que que faremos é uma referência ao próprio catálogo. Adicionando ao construtor um catálogo como parâmetro.
[source language=”:Java”]
GeoServerCatalog catalog;
public CatalogLister( GeoServerCatalog catalog ) {
this.catalog = catalog;
}
[/source]
Faremos primeiro o método para listar as DataStores. Implementando esta operação, nós acharemos cada DataStore e os imprimiremos na tela. Veja o código:
[source language=”:Java”]
public void listDataStores( OutputStream output ) {
//output
PrintStream printer = new PrintStream( output );
//get all services from the catalog
List services = catalog.members( null );
for ( Iterator s = services.iterator(); s.hasNext(); ) {
Service service = (Service) s.next();
// first we must test to see wether this
// handle is backed by a datastore
if ( service.canResolve( DataStore.class ) ) {
//it is a data store, write it to output
printer.println( service.getIdentifier().toString() );
}
}
}
[/source]
Agora iremos implementar a lista de featuretypes. Veja o abaixo:
[source language=”:Java”]
public void listFeatureType( OutputStream output ) {
//output
PrintStream printer = new PrintStream( output );
//get all services from the catalog
List services = catalog.members( null );
for ( Iterator s = services.iterator(); s.hasNext(); ) {
Service service = (Service) s.next();
//get all children
List geoResources = service.members( null );
for ( Iterator g = geoResources.iterator(); g.hasNext(); ) {
GeoResource geoResource = (GeoResourfce) g.next();
//do the test
if ( geoResource.canResolve( FeatureType.class ) ) {
//do the resolve
FeatureType featureType = (FeatureType)
geoResource.resolve( FeatureType.class, null );
printer.println( featureType.getTypeName() );
}
}
}
}
[/source]
Agora que você já tem o código, você pode fazer facilmente a manipulação do seu catálogo.
Fonte: GeoServer