package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.CategoriaSolucaoDTO;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.citframework.dto.IDto;
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.SQLConfig;
public class CategoriaSolucaoDao extends CrudDaoDefaultImpl {
public CategoriaSolucaoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection<Field> getFields() {
final Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idCategoriaSolucao", "idCategoriaSolucao", true, true, false, false));
listFields.add(new Field("idCategoriaSolucaoPai", "idCategoriaSolucaoPai", false, false, false, false));
listFields.add(new Field("descricaoCategoriaSolucao", "descricaoCategoriaSolucao", false, false, false, false));
listFields.add(new Field("dataInicio", "dataInicio", false, false, false, false));
listFields.add(new Field("dataFim", "dataFim", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return this.getOwner() + "CategoriaSolucao";
}
@Override
public Collection<CategoriaSolucaoDTO> list() throws PersistenceException {
return null;
}
@Override
public Class<CategoriaSolucaoDTO> getBean() {
return CategoriaSolucaoDTO.class;
}
@Override
public Collection<CategoriaSolucaoDTO> find(final IDto arg0) throws PersistenceException {
return null;
}
public Collection<CategoriaSolucaoDTO> findByIdCategoriaSolucaoPai(final Integer parm) throws PersistenceException {
final List<Condition> condicao = new ArrayList<>();
final List<Order> ordenacao = new ArrayList<>();
condicao.add(new Condition("idCategoriaSolucaoPai", "=", parm));
ordenacao.add(new Order("descricaoCategoriaSolucao"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdCategoriaSolucaoPai(final Integer parm) throws PersistenceException {
final List<Condition> condicao = new ArrayList<>();
condicao.add(new Condition("idCategoriaSolucaoPai", "=", parm));
super.deleteByCondition(condicao);
}
public Collection<CategoriaSolucaoDTO> findSemPai() throws PersistenceException {
String sql = "SELECT idCategoriaSolucao, idCategoriaSolucaoPai, descricaoCategoriaSolucao, dataInicio, dataFim FROM categoriasolucao WHERE idCategoriaSolucaoPai IS NULL AND dataFim IS NULL AND ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "(UPPER(deleted) IS NULL OR UPPER(deleted) = 'N') ";
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql += "(deleted IS NULL OR deleted = 'N') ";
} else {
sql += "(deleted IS NULL OR deleted = 'N') ";
}
sql += " ORDER BY descricaoCategoriaSolucao ";
final List<?> colDados = this.execSQL(sql, null);
if (colDados != null) {
return this.listConvertion(CategoriaSolucaoDTO.class, colDados, this.getResultFields());
}
return null;
}
public Collection<CategoriaSolucaoDTO> findByIdPai(final Integer idPaiParm) throws PersistenceException {
String sql = "SELECT idCategoriaSolucao, idCategoriaSolucaoPai, descricaoCategoriaSolucao, dataInicio, dataFim FROM categoriasolucao "
+ "WHERE idCategoriaSolucaoPai = ? AND dataFim IS NULL AND ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "(UPPER(deleted) IS NULL OR UPPER(deleted) = 'N') ";
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql += "(deleted IS NULL OR deleted = 'N') ";
} else {
sql += "(deleted IS NULL OR deleted = 'N') ";
}
sql += "ORDER BY descricaoCategoriaSolucao ";
final List<?> colDados = this.execSQL(sql, new Object[] {idPaiParm});
if (colDados != null) {
return this.listConvertion(CategoriaSolucaoDTO.class, colDados, this.getResultFields());
}
return null;
}
public Collection<CategoriaSolucaoDTO> verificaDescricaoDuplicadaCategoriaAoCriar(final String DescricaoCategoriaSolucao) throws PersistenceException {
String sql = "select * from categoriasolucao where descricaocategoriasolucao = ? AND ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "(UPPER(deleted) IS NULL OR UPPER(deleted) = 'N') ";
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql += "(deleted IS NULL OR deleted = 'N') ";
} else {
sql += "(deleted IS NULL OR deleted = 'N') ";
}
sql += "ORDER BY descricaoCategoriaSolucao ";
final List colDados = this.execSQL(sql, new Object[] {DescricaoCategoriaSolucao});
if (colDados != null) {
return this.listConvertion(CategoriaSolucaoDTO.class, colDados, this.getResultFields());
}
return null;
}
public Collection<CategoriaSolucaoDTO> verificaDescricaoDuplicadaCategoriaAoAtualizar(final Integer idCategoriaSolucao, final String DescricaoCategoriaSolucao)
throws PersistenceException {
String sql = "select * from categoriasolucao where descricaocategoriasolucao = ? AND idcategoriasolucao <> ? AND ";
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) {
sql += "(UPPER(deleted) IS NULL OR UPPER(deleted) = 'N') ";
} else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) {
sql += "(deleted IS NULL OR deleted = 'N') ";
} else {
sql += "(deleted IS NULL OR deleted = 'N') ";
}
sql += "ORDER BY descricaoCategoriaSolucao ";
final List<?> colDados = this.execSQL(sql, new Object[] {DescricaoCategoriaSolucao, idCategoriaSolucao});
if (colDados != null) {
return this.listConvertion(CategoriaSolucaoDTO.class, colDados, this.getResultFields());
}
return null;
}
public Collection<CategoriaSolucaoDTO> listaCategoriasSolucaoAtivas() throws PersistenceException {
final List<String> fields = new ArrayList<>();
final String sql = "SELECT idCategoriaSolucao, descricaoCategoriaSolucao FROM categoriasolucao WHERE datafim is NULL AND (deleted is NULL OR deleted = 'n') ";
final List<?> listaR = this.execSQL(sql, null);
fields.add("idCategoriaSolucao");
fields.add("descricaoCategoriaSolucao");
return this.listConvertion(CategoriaSolucaoDTO.class, listaR, fields);
}
private List<String> resultFields;
private List<String> getResultFields() {
if (resultFields == null) {
resultFields = new ArrayList<>();
resultFields.add("idCategoriaSolucao");
resultFields.add("idCategoriaSolucaoPai");
resultFields.add("descricaoCategoriaSolucao");
resultFields.add("dataInicio");
resultFields.add("dataFim");
}
return resultFields;
}
}