package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.AssinaturaDTO;
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;
/**
* @author euler.ramos
*
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AssinaturaDAO extends CrudDaoDefaultImpl {
public AssinaturaDAO() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection find(IDto obj) throws PersistenceException {
List order = new ArrayList();
order.add(new Order("idAssinatura", "ASC"));
return super.find(obj, order);
}
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idassinatura", "idAssinatura", true, true, false, false));
listFields.add(new Field("idempregado", "idEmpregado", false, false, false, false));
listFields.add(new Field("papel", "papel", false, false, false, false));
listFields.add(new Field("fase", "fase", 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 "assinatura";
}
@Override
public Collection list() throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("dataFim", "is", null));
return super.findByCondition(condicao, null);
}
@Override
public Class getBean() {
return AssinaturaDTO.class;
}
public boolean violaIndiceUnico(AssinaturaDTO assinaturaDTO) {
boolean encontrou = false;
List result;
try {
List resp = new ArrayList();
List parametro = new ArrayList();
StringBuilder sql = new StringBuilder();
sql.append("SELECT idassinatura FROM " + this.getTableName()+" ");
sql.append("WHERE (datafim is null) AND ");
if (assinaturaDTO.getIdAssinatura() != null) {
sql.append("idassinatura <> ? AND ");
parametro.add(assinaturaDTO.getIdAssinatura());
}
// Pode-se cadastrar assinatura sem empregado
if (assinaturaDTO.getIdEmpregado() != null) {
sql.append("idempregado = ? AND ");
parametro.add(assinaturaDTO.getIdEmpregado());
} else {
sql.append("(idempregado is null) AND ");
}
sql.append("papel = ? AND ");
parametro.add(assinaturaDTO.getPapel());
sql.append("fase = ?");
parametro.add(assinaturaDTO.getFase());
resp = this.execSQL(sql.toString(), parametro.toArray());
List listRetorno = new ArrayList();
listRetorno.add("idassinatura");
result = this.engine.listConvertion(this.getBean(), resp,
listRetorno);
} catch (PersistenceException e) {
e.printStackTrace();
result = null;
} catch (Exception e) {
e.printStackTrace();
result = null;
}
encontrou = ((result != null) && (result.size() > 0));
return encontrou;
}
}