package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.AcordoNivelServicoHistoricoDTO;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
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;
public class AcordoNivelServicoHistoricoDao extends CrudDaoDefaultImpl {
public AcordoNivelServicoHistoricoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idacordonivelservico_hist" ,"idAcordoNivelServico_Hist", true, true, false, false));
listFields.add(new Field("idAcordoNivelServico" ,"idAcordoNivelServico", false, false, false, false));
listFields.add(new Field("idServicoContrato" ,"idServicoContrato", false, false, false, false));
listFields.add(new Field("idPrioridadePadrao" ,"idPrioridadePadrao", false, false, false, false));
listFields.add(new Field("situacao" ,"situacao", false, false, false, false));
listFields.add(new Field("tituloSLA" ,"tituloSLA", false, false, false, false));
listFields.add(new Field("disponibilidade" ,"disponibilidade", false, false, false, false));
listFields.add(new Field("descricaoSLA" ,"descricaoSLA", false, false, false, false));
listFields.add(new Field("escopoSLA" ,"escopoSLA", 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("avaliarEm" ,"avaliarEm", false, false, false, false));
listFields.add(new Field("tipo" ,"tipo", false, false, false, false));
listFields.add(new Field("valorLimite" ,"valorLimite", false, false, false, false));
listFields.add(new Field("detalheGlosa" ,"detalheGlosa", false, false, false, false));
listFields.add(new Field("detalheLimiteGlosa" ,"detalheLimiteGlosa", false, false, false, false));
listFields.add(new Field("unidadeValorLimite" ,"unidadeValorLimite", 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("permiteMudarImpUrg" ,"permiteMudarImpUrg", false, false, false, false));
listFields.add(new Field("criadoEm" ,"criadoEm", false, false, false, false));
listFields.add(new Field("criadoPor" ,"criadoPor", false, false, false, false));
listFields.add(new Field("modificadoEm" ,"modificadoEm", false, false, false, false));
listFields.add(new Field("modificadoPor" ,"modificadoPor", false, false, false, false));
listFields.add(new Field("conteudodados" ,"conteudodados", false, false, false, false));
//listFields.add(new Field("idFormula" ,"idFormula", false, false, false, false));
listFields.add(new Field("deleted" ,"deleted", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "acordonivelservico_hist";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return AcordoNivelServicoHistoricoDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
public Collection findByIdAcordoNivelServico(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idAcordoNivelServico", "=", parm));
ordenacao.add(new Order("idAcordoNivelServico_Hist"));
return super.findByCondition(condicao, ordenacao);
}
public Collection findByIdServicoContrato(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idServicoContrato", "=", parm));
ordenacao.add(new Order("dataInicio"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdServicoContrato(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idServicoContrato", "=", parm));
super.deleteByCondition(condicao);
}
public Collection findByIdPrioridadePadrao(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("idPrioridadePadrao", "=", parm));
ordenacao.add(new Order("dataInicio"));
return super.findByCondition(condicao, ordenacao);
}
public void deleteByIdPrioridadePadrao(Integer parm) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idPrioridadePadrao", "=", parm));
super.deleteByCondition(condicao);
}
public AcordoNivelServicoHistoricoDTO findAtivoByIdServicoContrato(Integer idServicoContrato, String tipo) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idServicoContrato", "=", idServicoContrato));
condicao.add(new Condition("tipo", "=", tipo));
Collection<AcordoNivelServicoHistoricoDTO> col = super.findByCondition(condicao, null);
if (col == null || col.size() == 0) return null;
AcordoNivelServicoHistoricoDTO result = null;
for (AcordoNivelServicoHistoricoDTO acordoNivelServicoHistoricoDTO : col) {
if (acordoNivelServicoHistoricoDTO.getDataFim() == null && (acordoNivelServicoHistoricoDTO.getDeleted() == null || acordoNivelServicoHistoricoDTO.getDeleted().equalsIgnoreCase("N")))
result = acordoNivelServicoHistoricoDTO;
}
return result;
}
/**
* M�todo para retornar os servi�os que possuem o SLA selecionado j� copiado, para ser tratado evitando duplica��o de SLA.
*
* @param titulo do SLA selecionado
* @return retorna os servi�os que possuem o SLA selecionado
* @throws Exception
* @author rodrigo.oliveira
*/
public List<ServicoContratoDTO> buscaServicosComContrato(String tituloSla) throws PersistenceException {
List parametro = new ArrayList();
List resp = new ArrayList();
String sql = "SELECT DISTINCT idServicoContrato FROM " + getTableName() + " WHERE titulosla LIKE ? AND idservicocontrato IS NOT NULL ORDER BY idservicocontrato ";
parametro.add(tituloSla);
resp = this.execSQL(sql, parametro.toArray());
List listRetorno = new ArrayList();
listRetorno.add("idServicoContrato");
List<ServicoContratoDTO> listconvertion = this.engine.listConvertion(ServicoContratoDTO.class, resp, listRetorno);
return listconvertion;
}
/**
* M�todo para verificar se existe cadastrado um cadastro o mesmo nome.
*
* @param String tituloSLA
* @return true se o nome exisite e false se n�o existir
* @throws Exception
* @author rodrigo.oliveira
*/
public boolean verificaSeNomeExiste(String tituloSLA) throws PersistenceException {
List parametro = new ArrayList();
List list = new ArrayList();
String sql = "SELECT idacordonivelservico FROM " + getTableName() + " WHERE titulosla = ? ";
parametro.add(tituloSLA);
list = this.execSQL(sql, parametro.toArray());
if (list != null && !list.isEmpty()) {
return true;
} else {
return false;
}
}
/**
* Retorna os SLAs que nao possuem vinculacao direta com ServicoContrato
*
*/
public List<AcordoNivelServicoHistoricoDTO> findAcordosSemVinculacaoDireta() throws PersistenceException {
List resp = new ArrayList();
Collection fields = getFields();
List listRetorno = new ArrayList();
String campos = "";
for (Iterator it = fields.iterator(); it.hasNext();){
Field field = (Field)it.next();
if (!campos.trim().equalsIgnoreCase("")){
campos = campos + ",";
}
campos = campos + field.getFieldDB();
listRetorno.add(field.getFieldClass());
}
String sql = "SELECT " + campos + " FROM " + getTableName() + " WHERE idservicocontrato IS NULL ORDER BY titulosla ";
resp = this.execSQL(sql, null);
List<AcordoNivelServicoHistoricoDTO> listconvertion = this.engine.listConvertion(AcordoNivelServicoHistoricoDTO.class, resp, listRetorno);
return listconvertion;
}
}