Alguém pode me ajudar? Segui um tutorial para buscar o cep pelo webservice viacep funcionou corretamente gostaria de salvar esses dados da consulta no banco já pré-definido na minha aplicação. Tenho a classe Managed Bean Aluno onde faço as operações de crud, optei por utilizar a anotação @Embedded na classe Endereco. Ao salvar os dados de endereço não são salvos apenas os do aluno.
Minha classe Endereco
package modelo.dominio;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Embeddable
public class Endereco {
@Column(name= "cep")
@SerializedName("cep")
@Expose
private String cep;
@Column(name= "logradouro")
@SerializedName("logradouro")
@Expose
private String logradouro;
@Column(name= "complemento")
@SerializedName("complemento")
@Expose
private String complemento;
@Column(name= "bairro")
@SerializedName("bairro")
@Expose
private String bairro;
@Column(name="localidade")
@SerializedName("localidade")
@Expose
private String localidade;
@Column(name= "uf")
@SerializedName("uf")
@Expose
private String uf;
@Column(name= "numero")
private Integer numero;
public Endereco() {
super();
}
public Endereco(String cep, String logradouro, String complemento, String bairro, String localidade, String uf,
Integer numero) {
super();
this.cep = cep;
this.logradouro = logradouro;
this.complemento = complemento;
this.bairro = bairro;
this.localidade = localidade;
this.uf = uf;
this.numero = numero;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getLogradouro() {
return logradouro;
}
public void setLogradouro(String logradouro) {
this.logradouro = logradouro;
}
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getLocalidade() {
return localidade;
}
public void setLocalidade(String localidade) {
this.localidade = localidade;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
public Integer getNumero() {
return numero;
}
public void setNumero(Integer numero) {
this.numero = numero;
}
@Override
public String toString() {
return new ToStringBuilder(this).append("cep", cep).append("logradouro", logradouro)
.append("complemento", complemento).append("bairro", bairro).append("localidade", localidade)
.append("uf", uf).toString();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(bairro).append(complemento).append(cep).append(uf).append(localidade)
.append(logradouro).toHashCode();
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if ((other instanceof Endereco) == false) {
return false;
}
Endereco rhs = ((Endereco) other);
return new EqualsBuilder().append(bairro, rhs.bairro).append(complemento, rhs.complemento).append(cep, rhs.cep)
.append(uf, rhs.uf).append(localidade, rhs.localidade).append(logradouro, rhs.logradouro).isEquals();
}
}
Mimha classe de Servico
package controle;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import modelo.dominio.Endereco;
import webservice.ServicoEndereco;
@ManagedBean(name = “cepMB”)
@SessionScoped
public class CepMB implements Serializable{
private static final long serialVersionUID = -7312656320297107777L;
private List<Endereco> lista = new ArrayList<Endereco>();
private Endereco endereco;
private String cep;
private ServicoEndereco servico = new ServicoEndereco();
public Endereco carregarEndereco() {
endereco = new Endereco();
Client cli = Client.create();
WebResource wr = cli.resource("https://viacep.com.br/ws/" + this.getCep() + "/json/");
System.out.println("Chamando WebService...");
this.endereco = servico.buscarEnderecoPor(wr.get(String.class));
String JSON = wr.get(String.class);
System.out.println(JSON);
return this.getEndereco();
}
public List<Endereco> getLista(){
return lista;
}
public void setLista(List<Endereco> lista) {
this.lista = lista;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public void limpar() {
this.endereco = new Endereco();
}
}
Minha classe DAO
package controle;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import org.primefaces.model.UploadedFile;
import modelo.dominio.Aluno;
import modelo.dominio.Turno;
import modelo.dao.AlunoDAO;
import modelo.dao.TurnoDAO;
@ManagedBean(name = “alunoMB”)
@SessionScoped
public class AlunoMB implements Serializable{
private static final long serialVersionUID = 1L;
@ManagedProperty(value = "#{loginMB}")
private LoginMB loginMB;
private List<Aluno> alunos = null;
private List<Turno> turnos = null;
private Aluno aluno = new Aluno();
private AlunoDAO dao = new AlunoDAO();
private Turno filtroTurno;
private String filtroNome;
private UploadedFile uploadedFile;
public String getContador() {
if (this.aluno.getNome() == null)
return "";
return String.valueOf(this.aluno.getNome().length());
}
public void caixaAlta() {
if (this.aluno.getNome() != null) {
String maiusculas = this.aluno.getNome().toUpperCase();
this.aluno.setNome(maiusculas);
}
}
public Turno getFiltroTurno() {
return filtroTurno;
}
public void setFiltroTurno(Turno filtroTurno) {
this.filtroTurno = filtroTurno;
}
public String getFiltroNome() {
return filtroNome;
}
public void setFiltroNome(String filtroNome) {
this.filtroNome = filtroNome;
}
public LoginMB getLoginMB() {
return loginMB;
}
public void setLoginMB(LoginMB loginMB) {
this.loginMB = loginMB;
}
public Aluno getAluno() {
return aluno;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
public List<Turno> getTurnos() {
if (this.turnos == null) {
TurnoDAO turnoDao = new TurnoDAO();
this.turnos = turnoDao.lerTodos();
}
return turnos;
}
public void setTurnos(List<Turno> turnos) {
this.turnos = turnos;
}
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public List<Aluno> getAlunos() {
if (this.alunos == null)
this.alunos = this.dao.filtrar(filtroTurno, filtroNome);
return alunos;
}
public void setAlunos(List<Aluno> alunos) {
this.alunos = alunos;
}
// Métodos
public void acaoPesquisar() {
this.alunos = null;
}
// Listar todos
public String acaoListar() {
return "alunoListar.jsf?faces-redirect=true";
}
// Fazer cadastro
public String acaoAbrirInclusao() {
return "alunoEditar.jsf";
}
// Alterar pela matricula
public String acaoAbrirAlteracao(Integer matricula) {
this.aluno = this.dao.lerPorId(matricula);
return "alunoEditar.jsf";
}
// Salvar imagem no banco
public String acaoSalvar() {
byte[] foto = null;
if (this.uploadedFile != null)
foto = this.uploadedFile.getContents();
if (foto != null)
this.aluno.setFoto(foto);
this.dao.salvar(this.aluno);
return acaoListar();
}
// Excluir do banco
public String acaoExcluir(Integer matricula) {
this.aluno = this.dao.lerPorId(matricula);
this.dao.excluir(this.aluno);
this.alunos = null;
return acaoListar();
}
public void download() throws IOException {
FacesContext contexto = FacesContext.getCurrentInstance();
ExternalContext external = contexto.getExternalContext();
OutputStream saida = external.getResponseOutputStream();
// ler o código passado como parâmetro
String matricula = external.getRequestParameterMap().get("matricula");
Integer id = Integer.parseInt(matricula);
external.responseReset();
external.setResponseContentType("image/jpeg");
external.setResponseHeader("Content-Disposition", "attachment; filename=foto-" + matricula + ".jpg");
external.setResponseHeader("Cache-Control", "no-cache, no-store, must-revalidate");
external.setResponseHeader("Pragma", "no-cache"); // HTTP 1.0
external.setResponseHeader("Expires", "0"); // Proxies.
Aluno aluno = dao.lerPorId(id);
byte[] foto = aluno.getFoto();
if (foto != null) {
external.setResponseContentLength(foto.length);
saida.write(foto);
}
contexto.responseComplete();
}
}