Agora daremos sequencia no tutorial, lembrando que no passo 1 criamos a classe MyFormatFeatureResponseDelegate.java.
PASSO 2: Criando a classe MyFormatFeatureResponseDelegateFactory.java
No pacote org.vfny.geoserver.wfs.responses, crie sua classe MyFormatFeatureResponseDelegateProducer.java, ela deve implementar a interface FeatureResponseDelegateProducerSpi:
[source language=”:Java”]
public interface FeatureResponseDelegateProducerSpi
extends Factory
{
String getName();
Set getSupportedFormats();
boolean isAvailable();
boolean canProduce(String format);
FeatureResponseDelegate
createFeatureDelegateProducer(String format)
throws IllegalArgumentException;
[/source]
Crie também um atributo estático do tipo java.util.HashSet. Nele, armazene os tipos possíveis que esta factory permite. Esta aqui um exemplo do GML2FeatureResponseDelegateFactory:
[source language=”:Java”]
static HashSet supportedFormats = new HashSet();
static{
supportedFormats.add("GML2");
supportedFormats.add("GML2-GZIP");
}
[/source]
O método getName(), retorna o nome da instância da factory. No ShapefileFeatureResponseDelegateFactory é assim por exemplo:
[source language=”:Java”]
public String getName() {
return "Shapefile Output
(compressed in a zip file)";
}
[/source]
O método getSupportedFormats(), retorna todos os tipos de saídas suportados. Basta fazer conforme o código abaixo:
[source language=”:Java”]
public Set getSupportedFormats()
{
return supportedFormats;
}
[/source]
O método isAvailable() determina quando o factory pode criar novas instâncias. Nas classes ShapefileFeatureResponseDelegateFactory e GML2FeatureResponseDelegateFactory o retorno é simplesmente verdadeiro(true).
Já o método canProduce(String format), retorna true se o factory pode criar o formato de saída especificado. Ele tem a mesma função do canProduce() da classe MyFormatFeatureResponseDelegate.
Este método criará um nvo MyFormatFeatureResponseDelegate. Deve verificar para ver se o formato puder ser criado, e então criará o objeto. É aqui o que o método GML2FeatureResponseDelegateFactory:
[source language=”:Java”]
public FeatureResponseDelegate
createFeatureDelegateProducer(String format)
throws IllegalArgumentException
{
if (canProduce(format))
return new GML2FeatureResponseDelegate();
throw new IllegalArgumentException("cannot
produce "+format);
}
[/source]
Fonte: GeoServer