Artigo Java Magazine 65 - Google Data APIs: Contacts

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (1)

Veja como gerenciar seus contatos e grupos, editar a imagem dos contatos, bem como adicionar, aos contatos e grupos, atributos específicos à sua aplicação.

Esse artigo faz parte da revista Java Magazine edição 65. Clique aqui para ler todos os artigos desta edição

 

Google Data APIs: Contacts

Gerencie seus contatos Google a partir de uma aplicação Java

Veja como gerenciar seus contatos e grupos, editar a imagem dos contatos, bem como adicionar, aos contatos e grupos, atributos específicos à sua aplicação

 

De que se trata o artigo:

Este artigo mostra, de forma prática, as principais operações oferecidas pela API de Contatos Google. Aqui são apresentados os elementos envolvidos no que diz respeito ao gerenciamento de contatos e grupos de contatos de um usuário, bem como as operações realizadas utilizando esses elementos. Para mostrar essas funcionalidades criamos uma aplicação Java Swing, utilizando a Java Client Library.

 

Para que serve:

Com o uso das APIs de Dados Google, de um forma geral, torna-se possível integrar nossas aplicações com vários dos serviços disponibilizados pelo Google. No caso da API de Contatos, nossa aplicação torna-se capaz de recuperar os contatos e grupos de um usuário, bem como criar, remover e alterar esses contatos e grupos.

 

Em que situação o tema é útil:

Nos dias de hoje, a integração entre sistemas está tornando-se quase uma obrigação. Existem várias frentes de trabalho que têm se esforçado no sentido de criar padronizações e meios para facilitar, cada vez mais, essa integração. O Google, diante desse cenário, oferece diversas facilidades, dentre as quais estão as APIs de Dados. Com a API de contatos, no nosso caso, podemos integrar facilmente nossas aplicações com o serviço de contatos e grupos do Google. Isso nos permite realizar facilmente tarefas como a sincronização dos contatos de uma aplicação desktop com nossos contatos Google e assim por diante.

 

Google Data APIs – Contacts:

A API de Contatos Google faz parte das diversas APIs de Dados disponíveis. Com ela é possível gerenciar contatos e grupos de um usuário. Também é possível definir novas propriedades para os contatos. No artigo Google Data APIs vimos que as APIs de Dados trabalham sobre o GData Protocol, que foi criado especialmente para essas APIs, e que os dados são trocados com o servidor no formato XML. Também foi visto que o Google disponibiliza bibliotecas cliente em várias linguagens, incluindo Java. Essas bibliotecas fornecem uma camada de abstração sobre o protocolo GData. No caso da biblioteca Java, por exemplo, cada serviço possui uma classe correspondente.  Para representar o serviço de contatos temos a classe ContactsService.

Para inserir um contato, basta passar um ContactEntry, devidamente populado, para o método ContactsService.insert(), juntamente com a URL do feed de contatos. Já para editar um contato existente, o que temos que fazer é recuperar a entrada a ser atualizada, editar o objeto ContactEntry e passá-lo para o método ContactsService.update(). Para remover um contato, chame o método ContactsService.delete(), passando o endereço de edição. Para listar os contatos, é possível usar o método ContactsService.getFeed() ou ContactsService.query(). Ambos retornam um ContactsFeed, o qual possui um método getEntries() que retorna as entradas recuperadas. Estas e outras operações serão expostas neste artigo, assim como as operações envolvendo grupos, que são bastante similares às apresentadas. A diferença básica é que são utilizados os objetos ContactGroupEntry e ContactGroupFeed.

No artigo anterior, tivemos uma visão geral das APIs de Dados Google e vimos o funcionamento básico do protocolo utilizado, o Gdata Protocol, que é a base para as APIs de cada serviço específico. Também foram apresentadas a biblioteca cliente Java (Java Client Library), usada para abstrair a camada do protocolo, e o plugin para Eclipse, além de um exemplo prático utilizando a API do Picasa Web Albums. Ainda no artigo anterior, vimos uma lista com as APIs de dados disponíveis até o momento, dentre as quais está a Google Contact Data API (API de Dados de Contatos Google), a qual será discutida neste artigo.

A API de Contatos nos provê – além dos tradicionais métodos para criação, edição, remoção e listagem / busca de contatos e grupos de contatos – métodos para upload e download da imagem do contato e suporte a atributos estendidos específicos de uma determinada aplicação cliente. Neste artigo veremos como efetuar cada uma dessas operações, tanto no nível de protocolo quanto com exemplos práticos utilizando a Java Client Library. Para que possamos testar as APIs de dados de um modo geral, construiremos um Organizador Pessoal, que será uma aplicação Swing. Como este artigo trata do gerenciamento de contatos e grupos, esta será a primeira feature da nossa aplicação exemplo. Agora vamos deixar a conversa de lado e pôr a mão na massa.

Google Contacts Data API

A API de Contatos Google disponibiliza métodos para que uma aplicação terceira possa acessar e gerenciar os dados referentes aos contatos e grupos de contatos de um determinado usuário. Como vimos no artigo anterior, o protocolo GData é baseado principalmente no Atom, que por sua vez tem como principais elementos o Feed e o Entry. Vimos também que o conteúdo do elemento Entry pode variar de acordo com o tipo de entrada que desejamos representar.

Agora veremos com mais detalhes as entradas que representam contatos e grupos. A Tabela 1 mostra[1] os principais elementos que representam uma Entrada de Contato[2]. Note que os elementos padrão do Atom possuem o namespace atom precedendo seus nomes, enquanto os elementos específicos da API possuem os devidos namespaces (gd e gContact). Note que as multiplicidades dos elementos são representadas pelos símbolos “*” e “?”[3], seguindo o mesmo padrão utilizado em expressões regulares, DTD, etc. O símbolo “?” após o nome do elemento indica que este pode aparecer “zero ou uma” vez(es), enquanto o símbolo “*” indica que o elemento pode aparecer “zero ou muitas” vezes. Caso nenhum símbolo esteja presente ao final do nome do elemento, este é obrigatório e deve aparecer uma única vez.

 

                                                                                                     

Tabela 1. Elementos de uma entrada que representa um Contato.

A Listagem 1 mostra um exemplo de XML representando um contato. Em contrapartida, a Java Client Library nos fornece classes correspondentes a cada elemento deste XML. Por exemplo, a classe com.google.gdata.data.contacts.ContactEntry representa uma Entrada de Contato. Veremos essa classe com mais detalhes nos exemplos que iremos analisar.

 

Listagem 1. Exemplo de uma Entrada de Contato.

<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'>

  <atom:id>

    http://www.google.com/m8/feeds/contacts/pcmnac.jm%40gmail.com/base/2ab854f0b592dda

  </atom:id>

  <atom:updated>2008-11-05T23:29:04.998Z</atom:updated>

  <atom:category scheme='http://schemas.google.com/g/2005#kind'

      term='http://schemas.google.com/contact/2008#contact'/>

  <atom:title type='text'>João da Silva</atom:title>

  <atom:content type='text'>Observações sobre esse contato</atom:content>

  <atom:link rel='http://schemas.google.com/contacts/2008/rel#edit-photo' type='image/*'

      href='http://www.google.com/m8/feeds/photos/media/pcmnac.jm%40gmail.com/2ab854f0b592dda/tGg'/>

  <atom:link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*'

      href='http://www.google.com/m8/feeds/photos/media/pcmnac.jm%40gmail.com/2ab854f0b592dda'/>

  <atom:link rel='self' type='application/atom+xml'

      href='http://www.google.com/m8/feeds/contacts/pcmnac.jm%40gmail.com/full/2ab854f0b592dda'/>

  <atom:link rel='edit' type='application/atom+xml'

      href='http://www.google.com/m8/feeds/contacts/pcmnac.jm%40gmail.com/full/2ab854f0b592dda/12'/>

  <gd:organization xmlns:gd='http://schemas.google.com/g/2005' primary='false'

      rel='http://schemas.google.com/g/2005#other'>

    <gd:orgName>Empresa A</gd:orgName>

    <gd:orgTitle>Analista</gd:orgTitle>

  </gd:organization>

  <gd:organization xmlns:gd='http://schemas.google.com/g/2005' primary='true'

      rel='http://schemas.google.com/g/2005#work'>

    <gd:orgName>Empresa B</gd:orgName>

    <gd:orgTitle>Diretor</gd:orgTitle>

  </gd:organization>

  <gd:email xmlns:gd='http://schemas.google.com/g/2005'

      rel='http://schemas.google.com/g/2005#home' address='contato1@gmail.com' primary='true'/>

  <gd:im xmlns:gd='http://schemas.google.com/g/2005' address='contato1@msn.com'

      label='CUSTOM' primary='false' protocol='http://schemas.google.com/g/2005#MSN'/>

  <gd:phoneNumber xmlns:gd='http://schemas.google.com/g/2005'

      rel='http://schemas.google.com/g/2005#mobile'>

    (66) 7777-8888

  </gd:phoneNumber>

  <gd:phoneNumber xmlns:gd='http://schemas.google.com/g/2005'

      rel='http://schemas.google.com/g/2005#home'>

    (12) 1234-2134

  </gd:phoneNumber>

  <gd:postalAddress xmlns:gd='http://schemas.google.com/g/2005'

      rel='http://schemas.google.com/g/2005#home'>

    Rua João e Maria N°1000, Recife-PE

  </gd:postalAddress>

  <gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005'

    name='Job' value='STUDENT'/>

</atom:entry>

 

Vamos agora analisar os elementos que representam uma Entrada de Grupo de contatos. A Tabela 2 nos mostra esses elementos e a Listagem 2 mostra um exemplo de XML. Assim como no caso da Entrada de Contato, a Java Client Library possui uma classe para representar os dados de um grupo, a classe com.google.gdata.data.contacts.ContactGroupEntry.

 

Elemento

Descrição

atom:id?

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?