/** * CentralIT - CITSmart. */ package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.CaracteristicaDTO; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.integracao.CrudDaoDefaultImpl; import br.com.citframework.integracao.Field; import br.com.citframework.integracao.Order; import br.com.citframework.util.Constantes; /** * DAO de Caracteristica. * * @author valdoilo.damasceno * */ @SuppressWarnings({ "rawtypes", "unchecked" }) public class CaracteristicaDao extends CrudDaoDefaultImpl { private static final String SQL_GET_CARACTERISTICAS = "SELECT DISTINCT caracteristica.idcaracteristica, " + "caracteristica.nomecaracteristica, " + "caracteristica.tagcaracteristica, " + "caracteristica.descricao, " + "caracteristica.idEmpresa, " + "caracteristica.dataInicio, " + "caracteristica.dataFim " + "FROM caracteristica caracteristica " + "INNER JOIN tipoitemcfgcaracteristica tipo " + "ON caracteristica.idcaracteristica = tipo.idcaracteristica " + "LEFT JOIN valor valor on caracteristica.idcaracteristica = valor.idcaracteristica "; private static final String SQL_GET_EXISTE_CARACTERISTICAS = "select C.idcaracteristica, C.nomecaracteristica, C.tagcaracteristica, " + "C.descricao, C.idEmpresa, C.dataInicio, C.dataFim " + " from tipoitemconfiguracao A " + " INNER JOIN tipoitemcfgcaracteristica B on A.idtipoitemconfiguracao = B.idtipoitemconfiguracao " + " INNER JOIN caracteristica C on C.idcaracteristica = B.idcaracteristica "; public CaracteristicaDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection find(IDto caracteristicaDto) throws PersistenceException { List ordem = new ArrayList(); ordem.add(new Order("nome")); return super.find(caracteristicaDto, ordem); } @Override public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("IDCARACTERISTICA", "idCaracteristica", true, true, false, false)); listFields.add(new Field("IDEMPRESA", "idEmpresa", false, false, false, false)); listFields.add(new Field("NOMECARACTERISTICA", "nome", false, false, false, false)); listFields.add(new Field("TAGCARACTERISTICA", "tag", false, false, false, false)); listFields.add(new Field("DESCRICAO", "descricao", false, false, false, false)); listFields.add(new Field("SISTEMA", "sistema", false, false, false, false)); listFields.add(new Field("TIPO", "tipo", 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 "CARACTERISTICA"; } @Override public Collection list() throws PersistenceException { List list = new ArrayList(); list.add(new Order("nome")); return super.list(list); } @Override public Class getBean() { return CaracteristicaDTO.class; } /** * Consulta Caracter�sticas por idTipoItemConfiguracao. * * @param idTipoItemConfiguracao * Identificador do Tipo Item Configuracao. * @param dataFim * Se false, retorna Caracter�sticas que n�o foram exclu�das. * @return List * @throws Exception * @author VMD */ public List consultarCaracteristicasAtivas(Integer idTipoItemConfiguracao) throws PersistenceException { Object[] objs = new Object[] { idTipoItemConfiguracao }; String sql = SQL_GET_CARACTERISTICAS; sql += " WHERE (tipo.idtipoitemconfiguracao = ?) " + "and (caracteristica.dataFim is null) " + "and (tipo.datafim is null) " + "ORDER BY caracteristica.nomecaracteristica"; List lista = this.execSQL(sql, objs); List listRetorno = prepararListaDeRetorno(); List result = this.engine.listConvertion(getBean(), lista, listRetorno); if (result == null || result.size() == 0) return null; return result; } /** * Consulta Caracter�sticas por idTipoItemConfiguracao passando um array de caracteristicas * * @param idTipoItemConfiguracao * Identificador do Tipo Item Configuracao. * @param dataFim * Se false, retorna Caracter�sticas que n�o foram exclu�das. * @return List * @throws Exception * @author flavio.santana */ public List consultarCaracteristicasAtivas(Integer idTipoItemConfiguracao, String [] arr) throws PersistenceException { Object[] objs = new Object[] { idTipoItemConfiguracao }; String sql = SQL_GET_CARACTERISTICAS; sql += " WHERE (tipo.idtipoitemconfiguracao = ?) " + "and (caracteristica.dataFim is null) " + "and (tipo.datafim is null) "; boolean flag = false; if(arr.length > 0) { sql+=" AND caracteristica.nomecaracteristica in ("; for (int i = 0; i < arr.length; i++) { if(!flag) { sql+=" '" + arr[i] + "' "; flag = true; } else { sql+=", '" + arr[i] + "' "; } } sql+=") "; } sql+="ORDER BY caracteristica.nomecaracteristica"; List lista = this.execSQL(sql, objs); List listRetorno = prepararListaDeRetorno(); List result = this.engine.listConvertion(getBean(), lista, listRetorno); if (result == null || result.size() == 0) return null; return result; } /** * Consulta Caracter�sticas por idTipoItemConfiguracao. * * @param idTipoItemConfiguracao * Identificador do Tipo Item Configuracao. * @param dataFim * Se false, retorna Caracter�sticas que n�o foram exclu�das. * @return List * @throws Exception */ public List consultarCaracteristicas(String tagtipoitemconfiguracao, String tagcaracteristica, Boolean dataFim) throws PersistenceException { List objs = new ArrayList(); objs.add(tagcaracteristica.toUpperCase()); String sql = SQL_GET_EXISTE_CARACTERISTICAS; sql += " WHERE "; sql += " (UPPER(C.TAGCARACTERISTICA) = ?) "; if (tagtipoitemconfiguracao.length() > 0) { sql += " AND UPPER(A.tagtipoitemconfiguracao) = ? "; objs.add(tagtipoitemconfiguracao); } if (dataFim == false) { sql += "and (C.dataFim is null) "; } sql += " ORDER BY C.TAGCARACTERISTICA"; List lista = this.execSQL(sql, objs.toArray()); List listRetorno = this.prepararListaDeRetorno(); List result = this.engine.listConvertion(getBean(), lista, listRetorno); if (result == null || result.size() == 0) return null; return result; } /** * Prepara Lista de Retorno. * * @return List */ private List prepararListaDeRetorno() { List listRetorno = new ArrayList(); listRetorno.add("idCaracteristica"); listRetorno.add("nome"); listRetorno.add("tag"); listRetorno.add("descricao"); listRetorno.add("idEmpresa"); listRetorno.add("dataInicio"); listRetorno.add("dataFim"); return listRetorno; } /** * Verifica se Caracteristica informada existe. * * @param grupo * @return true - existe; false - n�o existe; * @throws PersistenceException * @author Thays.araujo */ public boolean verificarSeCaracteristicaExiste(CaracteristicaDTO caracteristica) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select IDCARACTERISTICA from " + getTableName() + " where NOMECARACTERISTICA = ? and datafim is null "); parametro.add(caracteristica.getNome()); if (caracteristica.getIdCaracteristica() != null) { sql.append(" and IDCARACTERISTICA <> ?"); parametro.add(caracteristica.getIdCaracteristica()); } list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { return true; } else { return false; } } }