Skip to content

Commit

Permalink
adiciona NovoPlpBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
Eric Dallo authored and elo7-developer committed Dec 22, 2017
1 parent 909eb62 commit 34854fc
Show file tree
Hide file tree
Showing 20 changed files with 480 additions and 208 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
import br.com.correios.api.postagem.exception.ObjetoPlpFoiPostadoException;
import br.com.correios.api.postagem.exception.ObjetoPlpInexistenteOuJaFoiCanceladoException;
import br.com.correios.api.postagem.exception.ObjetoPlpJaFoiCanceladoException;
import br.com.correios.api.postagem.plp.CorreiosLogToPlpDocumentoConverter;
import br.com.correios.api.postagem.plp.CorreiosLogToDocumentoPlpConverter;
import br.com.correios.api.postagem.plp.DocumentoPlp;
import br.com.correios.api.postagem.plp.NovoPlpBuilder;
import br.com.correios.api.postagem.plp.NovaPlpBuilder;
import br.com.correios.api.postagem.plp.NovaPlpToCorreiosLogConverter;
import br.com.correios.api.postagem.plp.ObjetoPostado;
import br.com.correios.api.postagem.webservice.CorreiosClienteWebService;
import br.com.correios.api.postagem.xml.XmlPlpParser;
Expand All @@ -27,7 +28,7 @@ public class CorreiosPostagemApi {
private final CorreiosServicoPostagemAPI correiosServicoPostagemAPI;

public CorreiosPostagemApi(CorreiosCredenciais credenciais) {
this.correiosServicoPostagemAPI = new SoapCorreiosServicoPostagemAPI(credenciais, new CorreiosClienteWebService(), new ClienteRetornadoDosCorreiosToClienteConverter(), new XmlPlpParser(), new CorreiosLogToPlpDocumentoConverter());
this.correiosServicoPostagemAPI = new SoapCorreiosServicoPostagemAPI(credenciais, new CorreiosClienteWebService(), new ClienteRetornadoDosCorreiosToClienteConverter(), new XmlPlpParser(), new CorreiosLogToDocumentoPlpConverter(), new NovaPlpToCorreiosLogConverter());
}

/**
Expand Down Expand Up @@ -78,14 +79,8 @@ public void cancelaObjetoDaPlp(Long plpId, String numeroEtiqueta) throws ObjetoP
throw exceptionCancelamento;
}
}



public Long fechaPlp() {
return correiosServicoPostagemAPI.fechaPlp(documentoPlp, codigoPlpCliente);
}

public NovoPlpBuilder novaPlp() {
return new NovoPlpBuilder();
public NovaPlpBuilder novaPlp() {
return new NovaPlpBuilder(correiosServicoPostagemAPI);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import br.com.correios.api.postagem.cliente.ClienteEmpresa;
import br.com.correios.api.postagem.cliente.ContratoEmpresa;
import br.com.correios.api.postagem.plp.DocumentoPlp;
import br.com.correios.api.postagem.plp.NovaPlp;
import br.com.correios.api.postagem.plp.Plp;

public interface CorreiosServicoPostagemAPI {

Expand All @@ -16,5 +18,5 @@ public interface CorreiosServicoPostagemAPI {

boolean cancelaObjetoDaPlp(Long plpId, String numeroEtiqueta);

Long fechaPlp(DocumentoPlp documentoPlp, Long codigoPlpCliente);
Plp fechaPlp(String cartaoDePostagem, Long codigoPlpCliente, NovaPlp novaPlp);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@
import br.com.correios.api.postagem.exception.CorreiosPostagemAutenticacaoException;
import br.com.correios.api.postagem.plp.CorreiosLogToDocumentoPlpConverter;
import br.com.correios.api.postagem.plp.DocumentoPlp;
import br.com.correios.api.postagem.plp.DocumentoPlpToCorreiosLogConverter;
import br.com.correios.api.postagem.plp.ObjetoPostado;
import br.com.correios.api.postagem.plp.NovaPlp;
import br.com.correios.api.postagem.plp.NovaPlpToCorreiosLogConverter;
import br.com.correios.api.postagem.plp.ObjetoPlp;
import br.com.correios.api.postagem.plp.Plp;
import br.com.correios.api.postagem.plp.PlpNaoFechadaException;
import br.com.correios.api.postagem.webservice.CorreiosClienteApi;
import br.com.correios.api.postagem.xml.Correioslog;
import br.com.correios.api.postagem.xml.XmlPlpParser;
Expand All @@ -32,14 +35,12 @@ class SoapCorreiosServicoPostagemAPI implements CorreiosServicoPostagemAPI {
private final ClienteRetornadoDosCorreiosToClienteConverter clienteEmpresaConverter;
private final XmlPlpParser xmlPlpParser;
private final CorreiosLogToDocumentoPlpConverter documentoPlpConverter;
private final DocumentoPlpToCorreiosLogConverter correiosPlpConverter;
private final NovaPlpToCorreiosLogConverter correiosPlpConverter;

SoapCorreiosServicoPostagemAPI(CorreiosCredenciais credenciais,
CorreiosClienteApi clienteApi,
ClienteRetornadoDosCorreiosToClienteConverter clienteEmpresaConverter,
XmlPlpParser xmlPlpParser,
CorreiosLogToDocumentoPlpConverter documentoPlpConverter,
DocumentoPlpToCorreiosLogConverter correiosPlpConverter) {
SoapCorreiosServicoPostagemAPI(CorreiosCredenciais credenciais, CorreiosClienteApi clienteApi,
ClienteRetornadoDosCorreiosToClienteConverter clienteEmpresaConverter, XmlPlpParser xmlPlpParser,
CorreiosLogToDocumentoPlpConverter documentoPlpConverter,
NovaPlpToCorreiosLogConverter correiosPlpConverter) {

this.credenciais = credenciais;
this.clienteApi = clienteApi;
Expand All @@ -54,10 +55,8 @@ public Optional<ClienteEmpresa> buscaCliente(ContratoEmpresa contratoEmpresa) {
try {
ClienteERP clienteRetornadoDosCorreios = clienteApi.getCorreiosWebService().buscaCliente(contratoEmpresa.getContrato(), contratoEmpresa.getCartaoDePostagem(), credenciais.getUsuario(), credenciais.getSenha());

return Optional.fromNullable(clienteRetornadoDosCorreios)
.transform(clienteEmpresaConverter::convert)
.transform(Optional::of)
.or(Optional.<ClienteEmpresa>absent());
return Optional.fromNullable(clienteRetornadoDosCorreios).transform(clienteEmpresaConverter::convert)
.transform(Optional::of).or(Optional.<ClienteEmpresa>absent());

} catch (AutenticacaoException e) {
throw new CorreiosPostagemAutenticacaoException(format("Ocorreu um erro ao se autenticar nos correios com a seguinte credencial: %s", credenciais));
Expand Down Expand Up @@ -105,24 +104,6 @@ public boolean cancelaObjetoDaPlp(Long plpId, String numeroEtiqueta) {
}
}

@Override
public Long fechaPlp(DocumentoPlp documentoPlp, Long codigoPlpCliente) {
try {
Correioslog correiosLog = correiosPlpConverter.convert(documentoPlp);

String numeroDoCartaoDePostagem = documentoPlp.getPlp().getNumeroDoCartaoDePostagem();
List<String> numerosDasEtiquetas = new LinkedList<>();
for (ObjetoPostado objetoPostado : documentoPlp.getObjetoPostado()) {
numerosDasEtiquetas.add(objetoPostado.getNumeroEtiqueta());
}

return clienteApi.getCorreiosWebService().fechaPlpVariosServicos(xmlPlpParser.getXmlFrom(correiosLog), codigoPlpCliente, numeroDoCartaoDePostagem, numerosDasEtiquetas, credenciais.getUsuario(), credenciais.getSenha());
} catch (Exception e) {
//TODO
}
return null; //TODO
}

private Optional<DocumentoPlp> getDocumentoPlpValidadoAPartirDo(String xmlPlp) {
boolean xmlPlpDosCorreiosEstaValido = xmlPlp != null && !xmlPlp.isEmpty();

Expand All @@ -137,4 +118,26 @@ private Optional<DocumentoPlp> getDocumentoPlpValidadoAPartirDo(String xmlPlp) {
return Optional.absent();
}

@Override
public Plp fechaPlp(String cartaoDePostagem, Long codigoPlpCliente, NovaPlp novaPlp) {
try {
Correioslog correiosLog = correiosPlpConverter.convert(novaPlp);

List<String> etiquetasSemDigitoVerificador = new LinkedList<>();

for (ObjetoPlp objetoPlp : novaPlp.getObjetosPlp()) {
etiquetasSemDigitoVerificador.add(objetoPlp.getNumeroDaEtiquetaSemDigitoVerificador());
}

String xmlFrom = xmlPlpParser.getXmlFrom(correiosLog);

Long plpId = clienteApi.getCorreiosWebService()
.fechaPlpVariosServicos(xmlFrom, codigoPlpCliente, cartaoDePostagem, etiquetasSemDigitoVerificador, credenciais.getUsuario(), credenciais.getSenha());

return new Plp(plpId);
} catch (Exception e) {
throw new PlpNaoFechadaException(e);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public DestinatarioDoObjetoPlpComNomeBuilder(DestinatarioDoObjetoPlpBuilder buil
this.builder = builder;
}

public DestinatarioDoObjetoPlpComEnderecoBuilder ComEndereco(Endereco enderecoDoDestinatario) {
public DestinatarioDoObjetoPlpComEnderecoBuilder comEndereco(Endereco enderecoDoDestinatario) {
builder.endereco = enderecoDoDestinatario;
return new DestinatarioDoObjetoPlpComEnderecoBuilder(builder);
}
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

23 changes: 23 additions & 0 deletions src/main/java/br/com/correios/api/postagem/plp/NovaPlp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package br.com.correios.api.postagem.plp;

import java.util.Set;

public class NovaPlp {

private final RemetentePlp remetente;
private final Set<ObjetoPlp> objetosPlp;

public NovaPlp(RemetentePlp remetente, Set<ObjetoPlp> objetosPlp) {
this.remetente = remetente;
this.objetosPlp = objetosPlp;
}

public RemetentePlp getRemetente() {
return remetente;
}

public Set<ObjetoPlp> getObjetosPlp() {
return objetosPlp;
}

}
81 changes: 81 additions & 0 deletions src/main/java/br/com/correios/api/postagem/plp/NovaPlpBuilder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package br.com.correios.api.postagem.plp;

import static com.google.common.collect.Sets.newHashSet;

import java.util.Set;

import br.com.correios.api.postagem.CorreiosServicoPostagemAPI;

public class NovaPlpBuilder {

private String cartaoDePostagem;
private RemetentePlp remetente;
private Set<ObjetoPlp> objetosPlp;
private Long codigoPlpCliente = 0l;
private CorreiosServicoPostagemAPI correiosServicoPostagemAPI;

public NovaPlpBuilder(CorreiosServicoPostagemAPI correiosServicoPostagemAPI) {
this.correiosServicoPostagemAPI = correiosServicoPostagemAPI;
}

public NovaPlpComCartaoDePostagemBuilder comCartaoDePostagem(String cartaoDePostagem) {
this.cartaoDePostagem = cartaoDePostagem;
return new NovaPlpComCartaoDePostagemBuilder(this);
}

public class NovaPlpComCartaoDePostagemBuilder {

private NovaPlpBuilder builder;

public NovaPlpComCartaoDePostagemBuilder(NovaPlpBuilder builder) {
this.builder = builder;
}

public NovaPlpComRemetenteBuilder deRemetente(RemetentePlp remetente) {
builder.remetente = remetente;
return new NovaPlpComRemetenteBuilder(builder);
}

}

public class NovaPlpComRemetenteBuilder {

private NovaPlpBuilder builder;

private NovaPlpComRemetenteBuilder(NovaPlpBuilder builder) {
this.builder = builder;
}

public NovaPlpComObjetoAdicionadoBuilder adicionandoObjeto(ObjetoPlp objetoPlp) {
builder.objetosPlp = newHashSet(objetoPlp);
return new NovaPlpComObjetoAdicionadoBuilder(builder);
}

}

public class NovaPlpComObjetoAdicionadoBuilder {

private NovaPlpBuilder builder;

private NovaPlpComObjetoAdicionadoBuilder(NovaPlpBuilder builder) {
this.builder = builder;
}

public NovaPlpComObjetoAdicionadoBuilder adicionandoObjeto(ObjetoPlp objetoPlp) {
builder.objetosPlp.add(objetoPlp);
return new NovaPlpComObjetoAdicionadoBuilder(builder);
}

public NovaPlpComObjetoAdicionadoBuilder comCodigoPlpCliente(Long codigoPlpCliente) {
builder.codigoPlpCliente = codigoPlpCliente;
return this;
}

public Plp fechaPlp() {
return correiosServicoPostagemAPI.fechaPlp(cartaoDePostagem, codigoPlpCliente, new NovaPlp(builder.remetente, builder.objetosPlp));
}

}


}
Loading

0 comments on commit 34854fc

Please sign in to comment.