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