package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.TipoMudancaDTO;
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;
@SuppressWarnings({ "rawtypes","unchecked" })
public class TipoMudancaDAO extends CrudDaoDefaultImpl{
public TipoMudancaDAO(){
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection find(IDto obj) throws PersistenceException {
return null;
}
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idTipoMudanca", "idTipoMudanca", true, true, false, false));
listFields.add(new Field("nomeTipoMudanca", "nomeTipoMudanca", false, false, false, false));
listFields.add(new Field("dataInicio", "dataInicio", false, false, false, false));
listFields.add(new Field("dataFim", "dataFim", false, false, false, false));
listFields.add(new Field("idTipoFluxo", "idTipoFluxo", false, false, false, false));
listFields.add(new Field("idModeloEmailCriacao", "idModeloEmailCriacao", false, false, false, false));
listFields.add(new Field("idModeloEmailFinalizacao", "idModeloEmailFinalizacao", false, false, false, false));
listFields.add(new Field("idModeloEmailAcoes", "idModeloEmailAcoes", false, false, false, false));
listFields.add(new Field("idGrupoExecutor", "idGrupoExecutor", false, false, false, false));
listFields.add(new Field("idCalendario", "idCalendario", false, false, false, false));
listFields.add(new Field("impacto", "impacto", false, false, false, false));
listFields.add(new Field("urgencia", "urgencia", false, false, false, false));
listFields.add(new Field("exigeAprovacao", "exigeAprovacao", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return this.getOwner() + "tipomudanca";
}
public Collection list() throws PersistenceException {
List list = new ArrayList();
list.add(new Order("nomeTipoMudanca"));
return super.list(list);
}
@Override
public Class getBean() {
return TipoMudancaDTO.class;
}
public Collection findByIdTipoMudanca(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idTipoMudanca", "=", parm));
ordenacao.add(new Order("idTipoMudanca"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdTipoMudanca(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idTipoMudanca", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByNomeTipoMudanca(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("nomeTipoMudanca", "=", parm));
ordenacao.add(new Order("nomeTipoMudanca"));
condicao.add(new Condition(Condition.AND, "dataFim","is",null));
return super.findByCondition(condicao, ordenacao);
}
public Collection encontrarPorNomeTipoMudanca(TipoMudancaDTO tipoMudancaDTO) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("nomeTipoMudanca", "=", tipoMudancaDTO.getNomeTipoMudanca()));
ordenacao.add(new Order("nomeTipoMudanca"));
condicao.add(new Condition(Condition.AND, "dataFim","is",null));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByNomeTipoMudanca(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("nomeTipoMudanca", "=", parm));
super.deleteByCondition(condicao);
}
/**
* Retorna lista de status de tipo mudan�a.
*
* @param obj
* @return
* @throws Exception
*/
public boolean verificarTipoMudancaAtivos(TipoMudancaDTO obj) throws PersistenceException {
List parametro = new ArrayList();
List list = new ArrayList();
String sql = "select idtipomudanca From " + getTableName() + " where nometipomudanca = ? and dataFim is null ";
if(obj.getIdTipoMudanca() != null){
sql+=" and idtipomudanca <> "+ obj.getIdTipoMudanca();
}
parametro.add(obj.getNomeTipoMudanca());
list = this.execSQL(sql, parametro.toArray());
if (list != null && !list.isEmpty()) {
return true;
} else {
return false;
}
}
public Collection getAtivos()throws PersistenceException {
List order = new ArrayList();
List condition = new ArrayList();
condition.add(new Condition("dataFim", "is",null));
//condition.add(new Condition(Condition.AND,"nomeTipoMudanca", "is", "null"));
order.add(new Order("nomeTipoMudanca"));
return super.findByCondition(condition, order);
}
/**
* @author euler.ramos
* @param idCalendario
* @return
* @throws Exception
*/
public ArrayList<TipoMudancaDTO> findByIdCalendario(Integer idCalendario) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idCalendario", "=", idCalendario));
ordenacao.add(new Order("idTipoMudanca"));
ArrayList<TipoMudancaDTO> result = (ArrayList<TipoMudancaDTO>) super.findByCondition(condicao, ordenacao);
return (result == null ? new ArrayList<TipoMudancaDTO>() : result);
}
}