package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.EnderecoDTO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.util.Constantes;
public class EnderecoDao extends CrudDaoDefaultImpl {
public EnderecoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection<Field> getFields() {
final Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idEndereco", "idEndereco", true, true, false, false));
listFields.add(new Field("logradouro", "logradouro", false, false, false, false));
listFields.add(new Field("numero", "numero", false, false, false, false));
listFields.add(new Field("complemento", "complemento", false, false, false, false));
listFields.add(new Field("bairro", "bairro", false, false, false, false));
listFields.add(new Field("idCidade", "idCidade", false, false, false, false));
listFields.add(new Field("idPais", "idPais", false, false, false, false));
listFields.add(new Field("cep", "cep", false, false, false, false));
listFields.add(new Field("idUf", "idUf", false, false, false, false));
listFields.add(new Field("latitude", "latitude", false, false, false, false));
listFields.add(new Field("longitude", "longitude", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return this.getOwner() + "Endereco";
}
@Override
public Collection list() throws PersistenceException {
return super.list("logradouro");
}
@Override
public Class<EnderecoDTO> getBean() {
return EnderecoDTO.class;
}
@Override
public Collection<EnderecoDTO> find(final IDto arg0) throws PersistenceException {
return null;
}
public EnderecoDTO recuperaEnderecoCompleto(final EnderecoDTO endereco) throws PersistenceException {
final List<Integer> parametro = new ArrayList<>();
final StringBuilder sql = this.getSQLRestoreAll();
sql.append(" WHERE e.idEndereco = ? ");
parametro.add(endereco.getIdEndereco());
List lista = new ArrayList<>();
lista = this.execSQL(sql.toString(), parametro.toArray());
return (EnderecoDTO) engine.listConvertion(this.getBean(), lista, this.getColunasRestoreAll()).get(0);
}
public EnderecoDTO recuperaEnderecoComUnidade(final Integer idEndereco) throws PersistenceException {
final List<Integer> parametro = new ArrayList<>();
final StringBuilder sql = this.getSQLRestoreEnderecoUnidade();
sql.append(" WHERE e.idEndereco = ? ");
parametro.add(idEndereco);
List lista = new ArrayList<>();
lista = this.execSQL(sql.toString(), parametro.toArray());
final List<String> colunas = this.getColunasRestoreAll();
colunas.add("identificacao");
final List<EnderecoDTO> list = engine.listConvertion(this.getBean(), lista, colunas);
if (list != null && list.size() > 0) {
return list.get(0);
}
return null;
}
private StringBuilder getSQLRestoreAll() {
final StringBuilder sql = new StringBuilder();
sql.append("SELECT e.idEndereco, e.logradouro, e.numero, e.complemento, e.bairro, e.idCidade, e.idPais, cep, e.latitude, e.longitude, ");
sql.append(" c.nomeCidade, uf.siglaUf");
sql.append(" FROM endereco e ");
sql.append(" LEFT JOIN cidades c ON c.idCidade = e.idCidade ");
sql.append(" LEFT JOIN ufs uf on uf.idUf = c.idUf ");
return sql;
}
private StringBuilder getSQLRestoreEnderecoUnidade() {
final StringBuilder sql = new StringBuilder();
sql.append("SELECT e.idEndereco, e.logradouro, e.numero, e.complemento, e.bairro, e.idCidade, e.idPais, cep, e.latitude, e.longitude, ");
sql.append(" c.nomeCidade, uf.siglaUf, unid.nome ");
sql.append(" FROM endereco e ");
sql.append(" INNER JOIN unidade unid ON unid.idEndereco = e.idEndereco ");
sql.append(" LEFT JOIN cidades c ON c.idCidade = e.idCidade ");
sql.append(" LEFT JOIN ufs uf on uf.idUf = c.idUf ");
return sql;
}
private List<String> getColunasRestoreAll() {
final List<String> listRetorno = new ArrayList<>();
listRetorno.add("idEndereco");
listRetorno.add("logradouro");
listRetorno.add("numero");
listRetorno.add("complemento");
listRetorno.add("bairro");
listRetorno.add("idCidade");
listRetorno.add("idPais");
listRetorno.add("cep");
listRetorno.add("latitude");
listRetorno.add("longitude");
listRetorno.add("nomeCidade");
listRetorno.add("siglaUf");
return listRetorno;
}
public Collection<EnderecoDTO> recuperaEnderecosEntregaProduto() throws PersistenceException {
final List<?> parametro = new ArrayList<>();
final StringBuilder sql = this.getSQLRestoreEnderecoUnidade();
sql.append(" WHERE unid.aceitaEntregaProduto = 'S' ");
sql.append("ORDER BY unid.nome");
List lista = new ArrayList<>();
lista = this.execSQL(sql.toString(), parametro.toArray());
final List<String> colunas = this.getColunasRestoreAll();
colunas.add("identificacao");
return engine.listConvertion(this.getBean(), lista, colunas);
}
}