Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução ao Projeto Projeto de Monitoramento de Objetos Moveis • Objeto Móvel – Qualquer objeto que possa ser localizado no globo terrestre – Sua localização se altera com o tempo • Sinal – Informação instantânea da localização do objeto móvel • localização (longitude x latitude) • data (timestamp) Projeto de Monitoramento de Objetos Moveis • Evento – Informação gerada pelo sistema a partir do processamento dos sinais de localização de um objeto móvel • Produto efetivo de um sistema de monitoramento – Quem? – O que? – Quando? • Ex: – Excesso de velocidade – Parada – Entrada e saída de áreas delimitadas (E-fence) Projeto de Monitoramento de Objetos Moveis • Segundo Trabalho – Camada de Apresentação • Objetivo – Criar Sistema Web capaz de tratar o cadastro das entidades do sistema – Servidor » Serviços REST para CRUD ( Create Retrieve Update Delete ) • Evento • Sinal • Objeto Móvel – Cliente » Interface de Consulta de Eventos » Interface de Consulta de Sinais » Interface completa de CRUD de Objetos Móveis Projeto de Monitoramento de Objetos Moveis • Segundo Trabalho – Camada de Apresentação • Entrega: – Data Limite: 29/05 ás 23:59 ( sexta ) – Código Fonte Completo – E-mail para [email protected] » Assunto : Inf1802 – Trabalho 2 » Corpo : Nome completo ( ou pelo menos o suficiente para termos certeza de quem é você), e zip com código fonte anexado Projeto de Monitoramento de Objetos Moveis • Serviços REST – Devem ser implementados estendendo HTTPServlet da biblioteca JEE • Apesar da Interface com o usuário não ser completa para todas as entidades do Sistema de Monitoramento, os serviços REST deverão ser completos: – – – – Inclusão Consulta Atualização Remoção – Devem ser disponibilizados http://servidor:porta/nomeprojeto/ – Devem usar o conteúdo em formato JSON em todas as comunicações • Retorno e corpo da requisição quando aplicável Projeto de Monitoramento de Objetos Moveis • Serviços REST – As classes que serão utilizadas para fazer o REST serão versões simplificadas das, já conhecidas, classes Sinal, Evento e ObjetoMovel. – Todas estas classes serão POJOs, ou seja, apenas terão atributos privados e métodos públicos de acesso. – A simplificação destas classes está em ter apenas o id do objeto que a classe se relaciona – Todas as classes utilizadas no REST ganham o sufixo UI (User Interface) • SinalUI e SinalUIImpl • EventoUI e EventoUIImpl • ObjetoMovelUI e SeuNomeDeObjetoMovelImpl ( está explicado mais a frente ) Projeto de Monitoramento de Objetos Moveis • Serviços REST - Objeto Móvel – URL base http://servidor:porta/nomeprojeto/objetosmoveis • Metodo GET – Retornar a lista completa de objetos moveis cadastrados • Metodo POST – Criar um novo registro de Objeto Movel com o conteúdo da mensagem • Metodo DELETE – Deve apagar toda a coleção – URL base http://servidor:porta/nomeprojeto/objetosmoveis/12 ( onde 12 é apenas um identificador de exemplo ) • Metodo GET – Retorna apenas objeto movel identificado • Metodo PUT – Deve atualizar o objeto móvel • Metodo DELETE – Deve apagar o objeto móvel Projeto de Monitoramento de Objetos Moveis • Serviços REST - Objeto Móvel – Deve-se criar a Interface ObjetoMovelUI – Ela deve ter os seguintes atributos: • String id • String idUltimoSinal – Implementar a Classe “SeuObjetoMovelUIImpl” ( Vocês escolhem o nome ). Ela deve implementar a interface ObjetoMovelUI. Ela devem também incluir dois novos campos • TipoX atributoASuaEscolha1 • TipoX atributoASuaEscolha2 • Esses dois atributos a mais devem fazer sentido no ObjetoMovel que vocês pretendem modelar ( Pessoa, Animal, Veículo, etc...) Projeto de Monitoramento de Objetos Moveis • Serviços REST - Sinal – URL base http://servidor:porta/nomeprojeto/sinais • Metodo GET – Retornar a lista completa de sinais cadastrados • Metodo POST – Criar um novo registro de sinal com o conteúdo da mensagem • Metodo DELETE – Deve apagar toda a coleção – URL base http://servidor:porta/nomeprojeto/sinais/12 ( onde 12 é apenas um identificador de exemplo ) • Metodo GET – Retorna apenas sinal identificado • Metodo PUT – Deve atualizar o sinal • Metodo DELETE – Deve apagar o sinal Projeto de Monitoramento de Objetos Moveis • Serviços REST - Sinal – Deve-se criar a Interface SinalUI – Ela deve ter os seguintes atributos: • • • • • String Id; Double Lon; Double Lat; String idObjetoMovel; String data; – Deve-se implementar a classe SinalUIImpl que implementa essa interface Projeto de Monitoramento de Objetos Moveis • Serviços REST - Evento – URL base http://servidor:porta/nomeprojeto/eventos • Metodo GET – Retornar a lista completa de eventos cadastrados • Metodo POST – Criar um novo registro de evento com o conteúdo da mensagem • Metodo DELETE – Deve apagar toda a coleção – URL base http://servidor:porta/nomeprojeto/eventos/12 ( onde 12 é apenas um identificador de exemplo ) • Metodo GET – Retorna apenas evento identificado • Metodo PUT – Deve atualizar o evento • Metodo DELETE – Deve apagar o evento Projeto de Monitoramento de Objetos Moveis • Serviços REST - Evento – Deve-se criar a Interface EventoUI – Ela deve ter os seguintes atributos: • • • • • • String Id; String tipo String inicio; String fim; String valor; String idObjetoMovel; – Deve-se implementar a classe EventoUIImpl que implementa essa interface Projeto de Monitoramento de Objetos Moveis • Cliente – Deve-se utilizar as tecnologias WEB apresentadas em sala (HTML, CSS e Javascript) para fazer o cliente do serviço REST para cada classe do nosso modelo (Sinal, Evento e ObjetoMovel) – Para Sinal e Evento implementar apenas a lista de objetos e o detalhe do objeto selecionado – Para o ObjetoMovel implementar o CRUD completo • Além da lista e do detalhe, poder apagar um objeto específico e formulário para inclusão de um novo objeto móvel do modelo específico de vocês – O cliente consistirá então em basicamente 4 telas HTML+ seus CSSs e Javascript (que podem estar em arquivos separados ou no mesmo HTML): • 1 HTML para a tela com um link para cada classe (Sinal, Evento e ObjetoMovel) que navega para o HTML da classe especifica • 1 HTML para cada classe (3 no total) – A comunicação com o servidor deverá ser feira em AJAX