package br.com.centralit.citcorpore.integracao;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO;
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;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AcordoNivelServicoDao extends CrudDaoDefaultImpl {
public AcordoNivelServicoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idAcordoNivelServico", "idAcordoNivelServico", true, true, 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("idFormula" ,"idFormula", false, false, false, false));
listFields.add(new Field("contatos", "contatos", false, false, false, false));
listFields.add(new Field("deleted", "deleted", false, false, false, false));
listFields.add(new Field("tempoAuto", "tempoAuto", false, false, false, false));
listFields.add(new Field("idPrioridadeAuto1", "idPrioridadeAuto1", false, false, false, false));
listFields.add(new Field("idGrupo1", "idGrupo1", 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("idEmail", "idEmail", false, false, false, false));
return listFields;
}
public String getTableName() {
return this.getOwner() + "AcordoNivelServico";
}
public Collection list() throws PersistenceException {
return null;
}
public Class getBean() {
return AcordoNivelServicoDTO.class;
}
public Collection find(IDto arg0) throws PersistenceException {
return null;
}
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 AcordoNivelServicoDTO findAtivoByIdServicoContrato(Integer idServicoContrato, String tipo) throws PersistenceException {
List condicao = new ArrayList();
condicao.add(new Condition("idServicoContrato", "=", idServicoContrato));
condicao.add(new Condition("tipo", "=", tipo));
condicao.add(new Condition("situacao", "=", "A"));
Collection<AcordoNivelServicoDTO> col = super.findByCondition(condicao, null);
if (col == null || col.size() == 0)
return null;
AcordoNivelServicoDTO result = null;
for (AcordoNivelServicoDTO acordoNivelServicoDto : col) {
if ((acordoNivelServicoDto.getDataFim() == null || UtilDatas.getDataAtual().before(acordoNivelServicoDto.getDataFim()))
&& (acordoNivelServicoDto.getDeleted() == null || acordoNivelServicoDto.getDeleted().equalsIgnoreCase("N")))
result = acordoNivelServicoDto;
}
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 n�o possuem vincula��o direta com ServicoContrato
*
*/
public List<AcordoNivelServicoDTO> 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);
Collection<AcordoNivelServicoDTO> col = this.listConvertion(AcordoNivelServicoDTO.class, resp, listRetorno);
if (col == null || col.size() == 0)
return null;
List<AcordoNivelServicoDTO> result = new ArrayList<AcordoNivelServicoDTO>();
for (AcordoNivelServicoDTO acordoNivelServicoDTO : col) {
if (acordoNivelServicoDTO.getDeleted() == null || acordoNivelServicoDTO.getDeleted().equalsIgnoreCase("N")) {
if (acordoNivelServicoDTO.getDataFim() == null || acordoNivelServicoDTO.getDataFim().after(UtilDatas.getDataAtual())) {
result.add(acordoNivelServicoDTO);
}
}
}
return result;
}
/**
* Encontra o SLAs pelo ID
* @author euler.ramos
*/
public List<AcordoNivelServicoDTO> findByIdAcordoSemVinculacaoDireta(Integer id) throws PersistenceException {
List resp = new ArrayList();
Collection fields = getFields();
List parametro = new ArrayList();
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 idacordonivelservico=? and (idservicocontrato IS NULL) and ((deleted is null) or (deleted = 'N') or (deleted = 'n')) ORDER BY titulosla ";
parametro.add(id);
resp = this.execSQL(sql, parametro.toArray());
List result = this.engine.listConvertion(getBean(), resp, listRetorno);
return (result == null ? new ArrayList<AcordoNivelServicoDTO>() : result);
}
/**
* Encontra o SLAs pelo Titulo
* @author euler.ramos
*/
public List<AcordoNivelServicoDTO> findByTituloSLA(String titulo) throws PersistenceException {
List resp = new ArrayList();
Collection fields = getFields();
List parametro = new ArrayList();
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 titulosla=? and (idservicocontrato IS NULL) and ((deleted is null) or (deleted = 'N') or (deleted = 'n')) ORDER BY titulosla ";
parametro.add(titulo);
resp = this.execSQL(sql, parametro.toArray());
List result = this.engine.listConvertion(getBean(), resp, listRetorno);
return (result == null ? new ArrayList<AcordoNivelServicoDTO>() : result);
}
public void updateTemposAcoes(AcordoNivelServicoDTO acordoNivelServicoDTO) throws PersistenceException {
AcordoNivelServicoDTO acordoNivelServicoAux = new AcordoNivelServicoDTO();
acordoNivelServicoAux.setIdGrupo1(acordoNivelServicoDTO.getIdGrupo1());
acordoNivelServicoAux.setIdPrioridadeAuto1(acordoNivelServicoDTO.getIdPrioridadeAuto1());
acordoNivelServicoAux.setTempoAuto(acordoNivelServicoDTO.getTempoAuto());
acordoNivelServicoAux.setIdAcordoNivelServico(acordoNivelServicoDTO.getIdAcordoNivelServico());
acordoNivelServicoAux.setDeleted(acordoNivelServicoDTO.getDeleted());
super.updateNotNull(acordoNivelServicoAux);
}
/**
* @param idServicoContrato
* @param data
* @throws PersistenceException
* @author cledson.junior
*/
public void updateAcordoNivelServico(Integer idServicoContrato, Date data) throws PersistenceException {
List parametros = new ArrayList();
if (data != null) {
parametros.add(data);
} else {
parametros.add(null);
}
parametros.add("y");
parametros.add(idServicoContrato);
String sql = "UPDATE " + getTableName() + " SET datafim = ?, deleted = ? WHERE idServicoContrato = ?";
execUpdate(sql, parametros.toArray());
}
public void updateNotNull(AcordoNivelServicoDTO acordoNivelServicoDTO) throws PersistenceException {
super.updateNotNull(acordoNivelServicoDTO);
}
public List<AcordoNivelServicoDTO> findIdEmailByIdSolicitacaoServico(Integer idSolicitacaoServico) throws PersistenceException {
List parametro = new ArrayList();
List resp = new ArrayList();
String sql = "SELECT DISTINCT idEmail FROM " + getTableName() + " inner join solicitacaoservico on solicitacaoservico.idservicocontrato = acordonivelservico.idservicocontrato"
+ " AND solicitacaoservico.idsolicitacaoservico = " + idSolicitacaoServico;
resp = this.execSQL(sql, parametro.toArray());
List listRetorno = new ArrayList();
listRetorno.add("idEmail");
List<AcordoNivelServicoDTO> listconvertion = this.engine.listConvertion(ServicoContratoDTO.class, resp, listRetorno);
return listconvertion;
}
public AcordoNivelServicoDTO findByIdAcordoNivelServicoEServicoContrato(Integer idAcordoNivelServico, Integer idServicoContrato) throws PersistenceException {
List parametro = new ArrayList();
List fields = new ArrayList();
List list = new ArrayList();
String sql = "select idacordonivelservico, idservicocontrato from acordonivelservico where idacordonivelservico = ? and idservicocontrato = ?";
parametro.add(idAcordoNivelServico);
parametro.add(idServicoContrato);
list = this.execSQL(sql, parametro.toArray());
fields.add("idAcordoNivelServico");
fields.add("idServicoContrato");
if (list != null && !list.isEmpty()) {
return (AcordoNivelServicoDTO) this.listConvertion(getBean(), list, fields).get(0);
} else {
return null;
}
}
}