package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.TipoProdutoDTO;
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;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class TipoProdutoDao extends CrudDaoDefaultImpl {
public TipoProdutoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idTipoProduto" ,"idTipoProduto", true, true, false, false));
listFields.add(new Field("idCategoria" ,"idCategoria", false, false, false, false));
listFields.add(new Field("idUnidadeMedida" ,"idUnidadeMedida", false, false, false, false));
listFields.add(new Field("nomeProduto" ,"nomeProduto", false, false, false, false));
listFields.add(new Field("situacao" ,"situacao", false, false, false, false));
listFields.add(new Field("aceitaRequisicao" ,"aceitaRequisicao", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "TipoProduto";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return TipoProdutoDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
private StringBuilder getSQLRestore() {
StringBuilder sql = new StringBuilder();
sql.append("SELECT t.idTipoProduto, t.idCategoria, t.idUnidadeMedida, t.nomeProduto, t.aceitaRequisicao, ");
sql.append(" t.situacao, c.nomeCategoria, u.siglaUnidadeMedida ");
sql.append(" FROM tipoproduto t ");
sql.append(" INNER JOIN categoriaproduto c ON c.idCategoria = t.idCategoria ");
sql.append(" LEFT JOIN unidademedida u ON u.idUnidadeMedida = t.idUnidadeMedida ");
return sql;
}
private List getColunasRestore() {
List listRetorno = new ArrayList();
listRetorno.add("idTipoProduto");
listRetorno.add("idCategoria");
listRetorno.add("idUnidadeMedida");
listRetorno.add("nomeProduto");
listRetorno.add("aceitaRequisicao");
listRetorno.add("situacao");
listRetorno.add("nomeCategoria");
listRetorno.add("siglaUnidadeMedida");
return listRetorno;
}
@Override
public IDto restore(IDto obj) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestore();
sql.append(" WHERE t.idTipoProduto = ? ");
parametro.add(((TipoProdutoDTO) obj).getIdTipoProduto());
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
List<TipoProdutoDTO> result = this.engine.listConvertion(getBean(), lista, getColunasRestore());
if (result != null && !result.isEmpty())
return result.get(0);
else
return null;
}
public List<TipoProdutoDTO> findByIdCategoria(Integer idCategoria) throws PersistenceException {
List parametro = new ArrayList();
StringBuilder sql = getSQLRestore();
sql.append(" WHERE t.idCategoria = ? ");
sql.append(" ORDER BY t.nomeProduto ");
parametro.add(idCategoria);
List lista = new ArrayList();
lista = this.execSQL(sql.toString(), parametro.toArray());
return this.engine.listConvertion(getBean(), lista, getColunasRestore());
}
public boolean consultarTiposProdutos(TipoProdutoDTO tipoProdutoDTO) throws PersistenceException {
List parametro = new ArrayList();
List list = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("select idTipoProduto From " + getTableName() + " where nomeProduto = ? ");
parametro.add(tipoProdutoDTO.getNomeProduto());
if (tipoProdutoDTO.getIdTipoProduto() != null) {
sql.append("and idTipoProduto <> ?");
parametro.add(tipoProdutoDTO.getIdTipoProduto());
}
list = this.execSQL(sql.toString(), parametro.toArray());
if (list != null && !list.isEmpty()) {
return true;
} else {
return false;
}
}
}