31
Carlos Alberto Junior Spohr Poletto http://carlos4web.wordpress.com @carlosjrcabello https://github.com/carlosjrcabello Ajudando Pedro Alvares Cabral com geoprocessamento.

VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Embed Size (px)

DESCRIPTION

Slides da apresentação sobre aplicações de geoprocessamento utilizando VRaptor 3, JPA com Hibernate, Geotools, OpenLayers e jQuery.

Citation preview

Page 1: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Carlos Alberto Junior Spohr Poletto http://carlos4web.wordpress.com

@carlosjrcabello https://github.com/carlosjrcabello

Ajudando Pedro Alvares Cabral com geoprocessamento.

Page 2: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Centro Internacional de Hidroinformática;

Aplicações de informações geográficas;

Tecnologias;

Aplicação de estudo de caso;

Page 3: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Apresentação sobre o trabalho do CIH;

Entendimento sobre aplicações voltadas a geoprocessamento;

Função e papel das tecnologias utilizadas;

Aplicação para estudo de caso;

Clareamento das possibilidades com os recursos da WEB atual;

Page 4: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Centro UNESCO - Categoria 2 (*) (*) Rede mundial de 20 Centros Especializados, credenciados pela UNESCO/PHI para trabalhar temas relacionados com a gestão das águas. CIH - Promover a HIDROINFORMÁTICA (*) aplicada em gestão das águas. (*) Ramo da Ciência da Computação dedicado a gestão das águas.

Page 5: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

• Dar Suporte aos Programas UNESCO-PHI: HELP, FRIEND, ISI, ISARM, GRAPHIC e ao PHI-LAC, COBRAPHI e CONAPHI – PY; • Divulgar das boas práticas dos Governos Brasil e Paraguai e da ITAIPU; • Incentivar as relações e negócios de desenvolvimento e inovação tecnológica no âmbito do Parque Tecnológico Itaipu; • Desenvolver ferramentas em Software Livre de Código Aberto para garantir o acesso universal à Hidroinformática e intensificar a difusão dessas ferramentas.

Page 6: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento
Page 7: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Acrônimo de GIS - Geographic Information System; Manipulação e visualização de informações geográficas como polígonos, linhas , pontos, etc.; Análise e projeção destas informações; Consultas espaciais ao invés do modelo relacional tradicional; Padrões definidos pela Open Geospatial Consortium, exemplos: OGC, WMS, WFS, WCS, WPS, KML, KMZ, OWC, etc.;

Page 8: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Mapeamento de casos de dengue;

Mapeamento de crimes ocorridos (WikiCrimes);

Viabilidade de implantação de biodigestores (SigBiogás - CIH);

Sistemas de rotas e tráfego;

Georreferenciamento de áreas produtivas (glebas);

Page 9: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Já desenvolveu e/ou desenvolve para WEB ?

Java EE ?

Servidores de aplicação, Inversão de Controle e injeção de dependências ?

Conhece e/ou já utilizou PostgreSQL e/ou Postgis?

Conhecimentos em dados espaciais, como geometrias, servidores de mapas, etc.?

Page 10: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Apresentação e definição de todas as tecnologias utilizadas.

Page 11: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

VRaptor 3.4

Hibernate Spatial Hibernate

Spring framework 3.0 JPA 2

Geotools

Banco de dados (relacional + geográfico)

OpenLayers jQuery

XHTML

AJAX

Outras APIs

Page 12: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Framework WEB focado em produtividade; Encapsula a complexidade da API javax.servlet; Pouca ou nenhuma dependência entre os seus componentes nativos (core); Boas práticas adotadas:

Convenção sobre configuração; Injeção de dependências; Forte orientação a objetos;

Framework Brasileiro, mantido pela Caelum e a comunidade;

Page 13: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Separação de lógicas em forma de componentes reutilizáveis; Redirecionamentos e encaminhamentos de maneira programática; Mapeamento de URL’s amigáveis através de um modelo REST; Suporte aos contêiners Spring, Pico e Guice; Serializadores e deserializadores para JSON, XML, etc.;

Page 14: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Paranamer; Guava; Apache Commons; Shapefilereader; Primefaces; Jetty library

jQuery UI; jQuery.plugins; TinyMCE; jQuery Validator;

Java Javascript

Page 15: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Desenvolvimento de uma aplicação de estudo de caso para consolidar o entendimento sobre aplicações de geoprocessamento.

Page 16: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Definição da regra de negócio; Diagramação da regra de negócio (DER);

Dependências; Configurações do projeto; Classes beans/pojo; Estrutura do template, CSS e bibliotecas Javascript; Codificação e mão na massa

Page 17: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Cadastro de propriedades;

Cadastro de glebas;

Consulta das propriedades através de uma área desenhada no mapa;

Upload de um shapefile;

Page 18: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

CRUD de propriedades, a qual contém os campos: Id – Long; Nome da propriedade – String; Ponto de localização – Geometry (Point); Glebas – List das glebas da propriedade;

CRUD de glebas, a qual contém os campos: Id – Long; Descrição – String; Propriedade – Referência da propriedade pertencente; Área da gleba – Polígono (Geometry - Polygon);

Page 19: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento
Page 20: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Persistência e acesso a dados: JPA 2 (hibernate-jpa-2.0-api-1.0.0.Final.jar); Hibernate (hibernate3.jar); Hibernate Spatial (hibernate-spatial-1.1.jar e hibernate-spatial-

postgis-1.1.jar); hibernate-validator-4.0.2.GA.jar

Geo Geotools geotools 2.7.1 (http://goo.gl/ffaKf);

Contêiner: Spring framework (aop, asm, aspects, beans, context, core,

expression, web) na versão 3.0;

VRaptor 3.4

Page 21: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Uma classe que será acessível no contexto WEB deve estar anotada com @Resource; Somente métodos públicos são acessíveis; A partir do VRaptor 3.4 é possível injetar dependências via parâmetros diretamente; Carregamento automático por meio da anotação @Load (Caelum – Lucas) ou @LoadObject (Carlos A. Junior); Se usar um redirectTo ou forwardTo não é necessário um arquivo .jsp de saída;

Page 22: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

ClienteController • formulario(); • listarInativos();

WEB-INF/jsp/

cliente

formulario.jsp listaInativos.jsp

Page 23: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Cada método público, pode ser anotado com: @Get : acessível somente por requisições GET; @Post : somente acessível por requisições POST; @Path: acessível por GET e/ou POST (duplica a URL); @Delete, @Put: devem utilizar o parâmetro _method em

uma requisição POST;

É possível colocar um caminho relativo na própria classe com @Path;

Page 24: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Template HEADER – Código de abertura da página.

Template FOOTER – Código de fechamento da página.

<cih:template path=“template” part=“header”/>

Trecho de código HTML/JSTL/JS da lógica do controlador. <cih:template path=“template” part=“footer”/>

Scripts comuns, importação, etc.

Lógicas JS/JSTL de fim de página.

Inclusão CSS, scripts comuns, etc.

Definição do idioma da página <fmt:locale>

Page 25: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Usar de preferência somente o JPA para operações CRUD; Em consultas usar a Criteria API do seu framework de persistência, ou então ser cabra-macho e usar a CriteriaBuilder do JPA para manter a aplicação independente da camada de persistência; Deixar o controle de transações para o próprio VRaptor , sim, isso é possível, mas como ?

Page 26: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

<context-param> <param-name>br.com.caelum.vraptor.packages</param-name> <param-value>br.com.caelum.vraptor.util.jpa</param-value> </context-param>

@Override protected void registerCustomComponents(ComponentRegistry registry) { registry.register(EntityManagerCreator.class, EntityManagerCreator.class); registry.register(EntityManagerFactoryCreator.class, EntityManagerFactoryCreator.class); registry.register(JPATransactionInterceptor.class, JPATransactionInterceptor.class); // ou uma factory minha, que esteja anotada com @Component. registry.register(MinhaFactory.class, MinhaFactory.class); }

Ou na versão programática registrando um componente.

Page 27: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Necessita da commons-fileupload;

Formulários HTML com o enctype definidos;

Abstração da lógica de upload através da interface UploadedFile;

Configuração da leitura do shapefile com o componente ShapefileReader;

Page 28: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Browser

Aplicação VRaptor

UploadedFile ShapeFileReader

JPA

Page 29: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Comunidade gvSIG; GUJ; Grupo de usuários VRaptor (Google groups); Spring framework; JPA 2 com outros frameworks de persistência; OpenLayers; jQuery e plugins; HTML 5; Servidores de mapas;

Page 30: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Cícero J. Bley Jr. Coordenador do

Centro Internacional de Hidroinformática - ME [email protected]

Ana Carolina Gossen Coordenadora do

Centro Internacional de Hidroinformática - MD [email protected]

Page 31: VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento

Carlos Alberto Junior Spohr Poletto Analista de Sistemas

[email protected] [email protected] @carlosjrcabello

carlos4web.wordpress.com