package br.com.centralit.citcorpore.integracao;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.MatrizVisaoDTO;
import br.com.centralit.citcorpore.bean.ValorRecuperadoMatrizDTO;
import br.com.centralit.citcorpore.metainfo.bean.CamposObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.bean.ObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.integracao.CamposObjetoNegocioDao;
import br.com.centralit.citcorpore.metainfo.integracao.ObjetoNegocioDao;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.Condition;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.integracao.Order;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilFormatacao;
public class MatrizVisaoDao extends CrudDaoDefaultImpl {
public MatrizVisaoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection<Field> getFields() {
final Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idMatriz", "idMatriz", true, true, false, false));
listFields.add(new Field("idVisao", "idVisao", false, false, false, false));
listFields.add(new Field("idObjetoNegocio", "idObjetoNegocio", false, false, false, false));
listFields.add(new Field("idCamposObjetoNegocio1", "idCamposObjetoNegocio1", false, false, false, false));
listFields.add(new Field("idCamposObjetoNegocio2", "idCamposObjetoNegocio2", false, false, false, false));
listFields.add(new Field("idCamposObjetoNegocio3", "idCamposObjetoNegocio3", false, false, false, false));
listFields.add(new Field("strInfo", "strInfo", false, false, false, false));
listFields.add(new Field("nomeCampo1", "nomeCampo1", false, false, false, false));
listFields.add(new Field("nomeCampo2", "nomeCampo2", false, false, false, false));
listFields.add(new Field("nomeCampo3", "nomeCampo3", false, false, false, false));
listFields.add(new Field("descricaoCampo1", "descricaoCampo1", false, false, false, false));
listFields.add(new Field("descricaoCampo2", "descricaoCampo2", false, false, false, false));
listFields.add(new Field("descricaoCampo3", "descricaoCampo3", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return this.getOwner() + "MatrizVisao";
}
@Override
public Class<MatrizVisaoDTO> getBean() {
return MatrizVisaoDTO.class;
}
public Collection findByIdVisao(final Integer parm) throws PersistenceException {
final List<Condition> condicao = new ArrayList<>();
final List<Order> ordenacao = new ArrayList<>();
condicao.add(new Condition("idVisao", "=", parm));
ordenacao.add(new Order("idMatriz"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdVisao(final Integer parm) throws PersistenceException {
final List<Condition> condicao = new ArrayList<>();
condicao.add(new Condition("idVisao", "=", parm));
super.deleteByCondition(condicao);
}
public String recuperaValor(final String sql, final Object[] parms) throws PersistenceException {
final Collection colDados = this.execSQL(sql, parms);
if (colDados != null && colDados.size() > 0) {
for (final Iterator it = colDados.iterator(); it.hasNext();) {
final Object[] obj = (Object[]) it.next();
if (obj != null && obj[0] == null) {
continue;
} else if (obj != null && Double.class.isInstance(obj[0])) {
final String str = UtilFormatacao.formatDouble((Double) obj[0], 2);
return str;
} else if (obj != null && BigDecimal.class.isInstance(obj[0])) {
final String str = UtilFormatacao.formatBigDecimal((BigDecimal) obj[0], 2);
return str;
} else {
if (obj != null) {
return obj[0].toString();
}
}
}
}
return "";
}
public ValorRecuperadoMatrizDTO recuperaDadosMatriz(final MatrizVisaoDTO matrizVisaoDTO) throws PersistenceException {
final ValorRecuperadoMatrizDTO valorRecuperadoMatrizDTO = new ValorRecuperadoMatrizDTO();
final ObjetoNegocioDao objetoNegocioDao = new ObjetoNegocioDao();
final CamposObjetoNegocioDao camposObjetoNegocioDao = new CamposObjetoNegocioDao();
ObjetoNegocioDTO objetoNegocioDTO = new ObjetoNegocioDTO();
objetoNegocioDTO.setIdObjetoNegocio(matrizVisaoDTO.getIdObjetoNegocio());
objetoNegocioDTO = (ObjetoNegocioDTO) objetoNegocioDao.restore(objetoNegocioDTO);
String paramOrder = "1";
if (objetoNegocioDTO != null) {
valorRecuperadoMatrizDTO.setObjetoNegocioDTO(objetoNegocioDTO);
final StringBuilder sql = new StringBuilder();
sql.append("SELECT ");
CamposObjetoNegocioDTO camposObjetoNegocioDTO = new CamposObjetoNegocioDTO();
camposObjetoNegocioDTO.setIdCamposObjetoNegocio(matrizVisaoDTO.getIdCamposObjetoNegocio1());
camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) camposObjetoNegocioDao.restore(camposObjetoNegocioDTO);
if (camposObjetoNegocioDTO != null) {
sql.append(camposObjetoNegocioDTO.getNomeDB());
valorRecuperadoMatrizDTO.setCamposObjetoNegocioChaveDTO(camposObjetoNegocioDTO);
}
camposObjetoNegocioDTO = new CamposObjetoNegocioDTO();
camposObjetoNegocioDTO.setIdCamposObjetoNegocio(matrizVisaoDTO.getIdCamposObjetoNegocio2());
if (matrizVisaoDTO.getIdCamposObjetoNegocio2() != null) {
camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) camposObjetoNegocioDao.restore(camposObjetoNegocioDTO);
if (camposObjetoNegocioDTO != null) {
sql.append(",");
sql.append(camposObjetoNegocioDTO.getNomeDB());
valorRecuperadoMatrizDTO.setCamposObjetoNegocioApres1DTO(camposObjetoNegocioDTO);
paramOrder = "2";
}
}
camposObjetoNegocioDTO = new CamposObjetoNegocioDTO();
camposObjetoNegocioDTO.setIdCamposObjetoNegocio(matrizVisaoDTO.getIdCamposObjetoNegocio3());
if (matrizVisaoDTO.getIdCamposObjetoNegocio3() != null) {
camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) camposObjetoNegocioDao.restore(camposObjetoNegocioDTO);
if (camposObjetoNegocioDTO != null) {
sql.append(",");
sql.append(camposObjetoNegocioDTO.getNomeDB());
valorRecuperadoMatrizDTO.setCamposObjetoNegocioApres2DTO(camposObjetoNegocioDTO);
paramOrder = "2";
}
}
sql.append(" FROM ");
sql.append(objetoNegocioDTO.getNomeTabelaDB());
sql.append(" ");
sql.append("ORDER BY ");
sql.append(paramOrder);
final Collection colDados = this.execSQL(sql.toString(), null);
valorRecuperadoMatrizDTO.setColDados(colDados);
}
return valorRecuperadoMatrizDTO;
}
}