{"id":214,"date":"2007-09-18T08:00:34","date_gmt":"2007-09-18T11:00:34","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/2007\/09\/18\/criando-um-formato-de-saida-no-geoserver-parte-2\/"},"modified":"2009-10-06T00:08:40","modified_gmt":"2009-10-06T03:08:40","slug":"criando-um-formato-de-saida-no-geoserver-parte-2","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2007\/09\/18\/criando-um-formato-de-saida-no-geoserver-parte-2\/","title":{"rendered":"Criando um formato de sa\u00edda no GeoServer &#8211; Parte 2"},"content":{"rendered":"<p>Agora daremos sequencia no tutorial, lembrando que no passo 1 criamos a classe MyFormatFeatureResponseDelegate.java.<\/p>\n<p><strong>PASSO 2:<\/strong> Criando a classe MyFormatFeatureResponseDelegateFactory.java<\/p>\n<p>No pacote org.vfny.geoserver.wfs.responses, crie sua classe MyFormatFeatureResponseDelegateProducer.java, ela deve implementar a interface FeatureResponseDelegateProducerSpi:<\/p>\n<p>[source language=&#8221;:Java&#8221;]<br \/>\npublic interface FeatureResponseDelegateProducerSpi<br \/>\n                        extends Factory<br \/>\n{<br \/>\n    String getName();<\/p>\n<p>    Set getSupportedFormats();<\/p>\n<p>    boolean isAvailable();<\/p>\n<p>    boolean canProduce(String format);<\/p>\n<p>    FeatureResponseDelegate<br \/>\n         createFeatureDelegateProducer(String format)<br \/>\n        throws IllegalArgumentException;<br \/>\n[\/source]<\/p>\n<p>Crie tamb\u00e9m um atributo est\u00e1tico do tipo java.util.HashSet. Nele, armazene os tipos poss\u00edveis que esta factory permite. Esta aqui um exemplo do GML2FeatureResponseDelegateFactory:<\/p>\n<p>[source language=&#8221;:Java&#8221;]<br \/>\nstatic HashSet supportedFormats = new HashSet();<\/p>\n<p>static{<br \/>\n    supportedFormats.add(&quot;GML2&quot;);<br \/>\n    supportedFormats.add(&quot;GML2-GZIP&quot;);<br \/>\n}<br \/>\n[\/source]<\/p>\n<p>O m\u00e9todo getName(), retorna o nome da inst\u00e2ncia da factory. No ShapefileFeatureResponseDelegateFactory \u00e9 assim por exemplo:<\/p>\n<p>[source language=&#8221;:Java&#8221;]<br \/>\npublic String getName() {<br \/>\n    return &quot;Shapefile Output<br \/>\n          (compressed in a zip file)&quot;;<br \/>\n}<br \/>\n[\/source]<\/p>\n<p>O m\u00e9todo getSupportedFormats(), retorna todos os tipos de sa\u00eddas suportados. Basta fazer conforme o c\u00f3digo abaixo:<\/p>\n<p>[source language=&#8221;:Java&#8221;]<br \/>\npublic Set getSupportedFormats()<br \/>\n{<br \/>\n    return supportedFormats;<br \/>\n}<br \/>\n[\/source]<\/p>\n<p>O m\u00e9todo isAvailable() determina quando o factory pode criar novas inst\u00e2ncias. Nas classes ShapefileFeatureResponseDelegateFactory e GML2FeatureResponseDelegateFactory o retorno \u00e9 simplesmente verdadeiro(<strong>true<\/strong>).<\/p>\n<p>J\u00e1 o m\u00e9todo canProduce(String format), retorna true se o factory pode criar o formato de sa\u00edda especificado. Ele tem a mesma fun\u00e7\u00e3o do canProduce() da classe MyFormatFeatureResponseDelegate.<\/p>\n<p>Este m\u00e9todo criar\u00e1 um nvo MyFormatFeatureResponseDelegate. Deve verificar para ver se o formato puder ser criado, e ent\u00e3o criar\u00e1 o objeto. \u00c9 aqui o que o m\u00e9todo GML2FeatureResponseDelegateFactory:<\/p>\n<p>[source language=&#8221;:Java&#8221;]<br \/>\npublic FeatureResponseDelegate<br \/>\n    createFeatureDelegateProducer(String format)<br \/>\n    throws IllegalArgumentException<br \/>\n{<br \/>\n\tif (canProduce(format))<br \/>\n                return new GML2FeatureResponseDelegate();<br \/>\n\tthrow new IllegalArgumentException(&quot;cannot<br \/>\n                           produce &quot;+format);<br \/>\n}<br \/>\n[\/source]<\/p>\n<p>Fonte: <a href=\"http:\/\/www.geoserver.org\" target=\"_blank\">GeoServer<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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=&#8221;:Java&#8221;] public interface FeatureResponseDelegateProducerSpi extends Factory&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2007\/09\/18\/criando-um-formato-de-saida-no-geoserver-parte-2\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,24,6],"tags":[208,223],"class_list":["post-214","post","type-post","status-publish","format-standard","hentry","category-geoserver","category-gis","category-tecnologia","tag-geoserver","tag-gis"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=214"}],"version-history":[{"count":5,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/214\/revisions"}],"predecessor-version":[{"id":2988,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/214\/revisions\/2988"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}