Skip to content

Commit

Permalink
Altera sdk buscando por lista de tracking codes
Browse files Browse the repository at this point in the history
  • Loading branch information
Eric Dallo and Gabriel Lima Gomes authored and elo7-developer committed Feb 7, 2017
1 parent 59b2cf6 commit c98b948
Show file tree
Hide file tree
Showing 9 changed files with 207 additions and 161 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=0.0.12-BETA
version=0.0.13-BETA
Original file line number Diff line number Diff line change
Expand Up @@ -5,74 +5,80 @@
import java.util.Calendar;

import br.com.correios.api.rastreio.model.Destino;
import br.com.correios.api.rastreio.model.DetalhesRastreio;
import br.com.correios.api.rastreio.model.Evento;
import br.com.correios.api.rastreio.model.LocalDoPacote;
import br.com.correios.api.rastreio.service.PacoteRastreadoDetalhes;
import br.com.correios.api.rastreio.model.ObjetoRastreio;
import br.com.correios.webservice.rastreio.Destinos;
import br.com.correios.webservice.rastreio.Eventos;
import br.com.correios.webservice.rastreio.EventosDosCorreios;
import br.com.correios.webservice.rastreio.Objeto;



/**
* @author Alexandre Gama
*
* Classe responsavel por converter o objeto de Eventos que é retornado pelos Correios para o objeto @see PacoteRastreadoDetalhes
*
* Classe responsavel por converter o objeto de Eventos que sao retornado pelos Correios
*
* @see DetalhesRastreio
*/
public class EventosDosCorreiosToPacoteRastreadoDetalhesConverter implements Converter<EventosDosCorreios, PacoteRastreadoDetalhes> {
public class EventosDosCorreiosToPacoteRastreadoDetalhesConverter implements Converter<EventosDosCorreios, DetalhesRastreio> {

@Override
public PacoteRastreadoDetalhes convert(EventosDosCorreios eventosDoCorreios) {
PacoteRastreadoDetalhes pacoteRastreado = new PacoteRastreadoDetalhes();
pacoteRastreado.setQuantidade(Integer.valueOf(eventosDoCorreios.getQtd()));
pacoteRastreado.setVersao(eventosDoCorreios.getVersao());
public DetalhesRastreio convert(EventosDosCorreios eventosDoCorreios) {
DetalhesRastreio detalhesRastreio = new DetalhesRastreio();
detalhesRastreio.setQuantidade(Integer.valueOf(eventosDoCorreios.getQtd()));
detalhesRastreio.setVersao(eventosDoCorreios.getVersao());

for (Objeto objeto : eventosDoCorreios.getObjeto()) {
converteOsDadosDoPacote(pacoteRastreado, objeto);
ObjetoRastreio objetoRastreio = converteOsDadosDoPacote(objeto);

for (Eventos eventoDoCorreio : objeto.getEvento()) {
Evento evento = converteDadosDoLocalDoEvento(eventoDoCorreio);

for (Destinos destino : eventoDoCorreio.getDestino()) {
converteDestinoDoEvento(evento, destino);
Destino destinoDoPacote = converteDestinoDoEvento(destino);
evento.adicionaDestino(destinoDoPacote);
}
pacoteRastreado.adicionaEvento(evento);
objetoRastreio.adicionaEvento(evento);
}
detalhesRastreio.adicionaObjetoRastreio(objetoRastreio);
}
return pacoteRastreado;

return detalhesRastreio;
}

private void converteOsDadosDoPacote(PacoteRastreadoDetalhes pacoteRastreado, Objeto objeto) {
pacoteRastreado.setNumero(objeto.getNumero());
pacoteRastreado.setSigla(objeto.getSigla());
pacoteRastreado.setNome(objeto.getNome());
pacoteRastreado.setCategoria(objeto.getCategoria());
private static ObjetoRastreio converteOsDadosDoPacote(Objeto objeto) {
ObjetoRastreio objetoRastreio = new ObjetoRastreio();

objetoRastreio.setNumero(objeto.getNumero());
objetoRastreio.setSigla(objeto.getSigla());
objetoRastreio.setNome(objeto.getNome());
objetoRastreio.setCategoria(objeto.getCategoria());
return objetoRastreio;
}

private void converteDestinoDoEvento(Evento evento, Destinos destino) {
private static Destino converteDestinoDoEvento(Destinos destino) {
LocalDoPacote localDoDestino = new LocalDoPacote(destino.getLocal(), destino.getCodigo(), destino.getCidade(), destino.getBairro(), destino.getUf());
Destino destinoDoPacote = new Destino(localDoDestino);
evento.adicionaDestino(destinoDoPacote);
return new Destino(localDoDestino);
}

private Evento converteDadosDoLocalDoEvento(Eventos eventoDoCorreio) {
private static Evento converteDadosDoLocalDoEvento(Eventos eventoDoCorreios) {
Evento evento = new Evento();
evento.setTipo(eventoDoCorreio.getTipo());
evento.setStatus(eventoDoCorreio.getStatus());
evento.setHora(eventoDoCorreio.getHora());
evento.setDescricao(eventoDoCorreio.getDescricao());
evento.setTipo(eventoDoCorreios.getTipo());
evento.setStatus(eventoDoCorreios.getStatus());
evento.setHora(eventoDoCorreios.getHora());
evento.setDescricao(eventoDoCorreios.getDescricao());

if (isNotBlank(eventoDoCorreio.getData())) {
converteData(eventoDoCorreio, evento);
if (isNotBlank(eventoDoCorreios.getData())) {
Calendar data = FormatadorData.formataComPadraoDosCorreios(eventoDoCorreios.getData());
evento.setData(data);
}

LocalDoPacote localDoPacote = new LocalDoPacote(eventoDoCorreio.getLocal(), eventoDoCorreio.getCodigo(), eventoDoCorreio.getCidade(), null, eventoDoCorreio.getUf());
LocalDoPacote localDoPacote = new LocalDoPacote(eventoDoCorreios.getLocal(), eventoDoCorreios.getCodigo(), eventoDoCorreios.getCidade(), null, eventoDoCorreios.getUf());
evento.setLocal(localDoPacote);
return evento;
}

private void converteData(Eventos eventoDoCorreio, Evento evento) {
Calendar data = FormatadorData.formataComPadraoDosCorreios(eventoDoCorreio.getData());

evento.setData(data);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package br.com.correios.api.rastreio.model;

import java.util.ArrayList;
import java.util.List;

/**
* @author Alexandre Gama
*
* @description Classe que contem todas as informacoes de um Objeto Rastreado, inclusive os eventos associados ao Objeto em questao
*
* @since 0.0.1-BETA
*/
public class DetalhesRastreio {

/**
* Versão do SRO XML
*/
private String versao;

/**
* Quantidade de objetos consultados
*/
private Integer quantidade;

/**
* Lista de objetos rastreados
*/
private List<ObjetoRastreio> objetosRastreio = new ArrayList<ObjetoRastreio>();

public String getVersao() {
return versao;
}

public void setVersao(String versao) {
this.versao = versao;
}

public Integer getQuantidade() {
return quantidade;
}

public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}

public void adicionaObjetoRastreio(ObjetoRastreio objetoRastreio) {
this.objetosRastreio.add(objetoRastreio);
}

public List<ObjetoRastreio> getObjetosRastreio() {
return objetosRastreio;
}

@Override
public String toString() {
return "DetalhesRastreio [versao=" + versao + ", quantidade=" + quantidade + ", objetosRastreio=" + objetosRastreio + "]";
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package br.com.correios.api.rastreio.service;
package br.com.correios.api.rastreio.model;

import java.util.ArrayList;
import java.util.Collections;
Expand All @@ -8,65 +8,32 @@

import br.com.correios.api.rastreio.model.Evento;

/**
* @author Alexandre Gama
*
* @description Classe que contem todas as informacoes de um Objeto Rastreado, inclusive os eventos associados ao Objeto em questao
*
* @since 0.0.1-BETA
*/
public class PacoteRastreadoDetalhes {
public class ObjetoRastreio {

/**
* Versão do SRO XML
*/
private String versao;

/**
* Quantidade de objetos consultados
*/
private Integer quantidade;

/**
* Número do objeto
*/
private String numero;

/**
* Sigla do objeto solicitado
*/
private String sigla;

/**
* Nome do objeto solicitado
*/
private String nome;

/**
* Categoria do objeto solicitado
*/
private String categoria;

/**
* Lista dos eventos que ocorreram com o objeto desejado
*/
private List<Evento> eventos = new ArrayList<Evento>();

public String getVersao() {
return versao;
}

public void setVersao(String versao) {
this.versao = versao;
}

public Integer getQuantidade() {
return quantidade;
}

public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
private List<Evento> eventos = new ArrayList<>();

public List<Evento> getEventos() {
return Collections.unmodifiableList(eventos);
Expand Down Expand Up @@ -109,16 +76,16 @@ public void setCategoria(String categoria) {
}

public int getQuantidadeDeEventosOcorridos() {
return eventos.size() > 0 ? eventos.size(): 0;
return eventos.size() > 0 ? eventos.size(): 0;
}

public Optional<Evento> getPrimeiroEvento() {
if (eventos.size() > 0) {
return Optional.of(eventos.get(0));
}
return Optional.absent();
return Optional.absent();
}

public Optional<Evento> getUltimoEvento() {
if (eventos.size() > 0) {
return Optional.of(eventos.get(eventos.size() - 1));
Expand All @@ -128,8 +95,7 @@ public Optional<Evento> getUltimoEvento() {

@Override
public String toString() {
return "PacoteRastreadoDetalhes [versao=" + versao + ", quantidade=" + quantidade + ", numero=" + numero
+ ", sigla=" + sigla + ", nome=" + nome + ", categoria=" + categoria + ", eventos=" + eventos + "]";
return "ObjetoRastreio [numero=" + numero + ", sigla=" + sigla + ", nome=" + nome + ", categoria=" + categoria + ", eventos=" + eventos + "]";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,20 @@
import static br.com.correios.api.rastreio.model.CorreiosIdioma.PORTUGUES;
import static br.com.correios.api.rastreio.model.CorreiosTipoIdentificador.LISTA_DE_OBJETOS;

import java.util.ArrayList;
import java.util.List;

import br.com.correios.api.exception.CorreiosCodigoRastreioInvalidoException;
import br.com.correios.api.rastreio.model.CorreiosEscopoResultado;
import br.com.correios.api.rastreio.model.CorreiosIdioma;
import br.com.correios.api.rastreio.model.DetalhesRastreio;
import br.com.correios.api.rastreio.model.ObjetoRastreio;
import br.com.correios.credentials.CorreiosCredenciais;

/**
* @author Alexandre Gama
*
*
* @description Classe que deve ser usada para as chamadas a API dos Correios
*
*
* @since 0.0.1-BETA
*/
public class CorreiosRastreioApi {
Expand All @@ -37,7 +38,7 @@ public CorreiosRastreioComIdioma buscaPacoteRastreadoUsandoOCodigo(String tracki
this.trackingCode = trackingCode;
return new CorreiosRastreioComIdioma();
}

public CorreiosRastreioComIdioma buscaPacoteTrackerPelaListaDeTrackings(List<String> trackingCodes) {
this.trackingCodes = trackingCodes;
return new CorreiosRastreioComIdioma();
Expand Down Expand Up @@ -70,8 +71,8 @@ public CorreiosRastreioTracker comTodosOsEventos() {
* Metodo para retornar somente o ultimo evento de um Pacote Rastreado.
* Note que neste caso passamos para o correios um parametro diferenciado indicando que sera retornado somente o ultimo evento
* Note tambem que neste caso a lista de eventos sera preenchida com somente 1 evento.
* Para retornar somente o ultimo evento do Pacote rastreado basta usar o metodo {@link PacoteRastreadoDetalhes#getUltimoEvento()}
*
* Para retornar somente o ultimo evento do Pacote rastreado basta usar o metodo {@link ObjetoRastreio#getUltimoEvento()}
*
* @return CorreiosRastreioTracker
*/
public CorreiosRastreioTracker somenteUltimoEvento() {
Expand All @@ -81,44 +82,36 @@ public CorreiosRastreioTracker somenteUltimoEvento() {

public class CorreiosRastreioTracker {

public PacoteRastreadoDetalhes getPacoteRastreado() {
public DetalhesRastreio getPacoteRastreado() {
boolean usuarioEnviouListaDeTrackingCodes = trackingCodes != null && !trackingCodes.isEmpty();
if (usuarioEnviouListaDeTrackingCodes) {
throw new CorreiosCodigoRastreioInvalidoException("Voce deve fazer a chamada do metodo getPacoteTracker passando somente 1 tracking code e nao uma lista. Caso seja necessario uma lista, voce podera usar o metodo getListaDePacotesTracker");
}

boolean trackingCodeVazio = trackingCode == null || trackingCode.isEmpty();
if (trackingCodeVazio) {
throw new CorreiosCodigoRastreioInvalidoException("O Tracking code do objeto nao pode ser vazio");
}

SoapCorreiosServicoRastreioApi serviceApi = new SoapCorreiosServicoRastreioApi(credentials);

PacoteRastreadoDetalhes pacoteTrackerEncontrado = serviceApi.buscaPacoteRastreadoDetalhes(trackingCode, idioma, resultado, LISTA_DE_OBJETOS);

return pacoteTrackerEncontrado;

return serviceApi.buscaDetalhesRastreio(trackingCode, idioma, resultado, LISTA_DE_OBJETOS);
}
public List<PacoteRastreadoDetalhes> getListaDePacotesRastreados() {

public DetalhesRastreio getListaDePacotesRastreados() {
boolean listaDeTrackingCodesEstaVazia = trackingCodes == null || trackingCodes.isEmpty();
if (listaDeTrackingCodesEstaVazia) {
throw new CorreiosCodigoRastreioInvalidoException("A lista de Tracking Codes nao pode ser nula ou vazia");
}

boolean existeSomenteUmTrackingCode = trackingCode != null && !trackingCode.isEmpty();
if (existeSomenteUmTrackingCode) {
throw new CorreiosCodigoRastreioInvalidoException("Voce deve fazer a chamada do metodo getListaDePacotesTracker passando uma lista de tracking codes. Caso seja necessario, utilize o metodo getPacoteTracker para somente 1 tracking code");
}

SoapCorreiosServicoRastreioApi serviceApi = new SoapCorreiosServicoRastreioApi(credentials);

List<PacoteRastreadoDetalhes> pacotesEncontrados = new ArrayList<PacoteRastreadoDetalhes>();
for (String trackingCode : trackingCodes) {
PacoteRastreadoDetalhes pacoteTrackerEncontrado = serviceApi.buscaPacoteRastreadoDetalhes(trackingCode, idioma, resultado, LISTA_DE_OBJETOS);
pacotesEncontrados.add(pacoteTrackerEncontrado);
}

return pacotesEncontrados;

return serviceApi.buscaDetalhesRastreio(trackingCodes, idioma, resultado, LISTA_DE_OBJETOS);
}

}
Expand Down
Loading

0 comments on commit c98b948

Please # to comment.