package br.com.centralit.bpm.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.bpm.config.Config; import br.com.centralit.bpm.dto.ElementoFluxoDTO; import br.com.centralit.bpm.util.Enumerados.TipoElementoFluxo; import br.com.centralit.citcorpore.util.CITCorporeUtil; 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.Reflexao; import br.com.citframework.util.SQLConfig; public class ElementoFluxoDao extends CrudDaoDefaultImpl { private static final String TABLE_NAME = "bpm_elementofluxo"; public ElementoFluxoDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection<Field> getFields() { final Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("idElemento", "idElemento", true, true, false, false)); listFields.add(new Field("idFluxo", "idFluxo", false, false, false, false)); listFields.add(new Field("tipoElemento", "tipoElemento", false, false, false, false)); listFields.add(new Field("subTipo", "subTipo", false, false, false, false)); listFields.add(new Field("nome", "nome", false, false, false, false)); listFields.add(new Field("documentacao", "documentacao", false, false, false, false)); listFields.add(new Field("acaoEntrada", "acaoEntrada", false, false, false, false)); listFields.add(new Field("acaoSaida", "acaoSaida", false, false, false, false)); listFields.add(new Field("tipoInteracao", "tipoInteracao", false, false, false, false)); listFields.add(new Field("visao", "visao", false, false, false, false)); listFields.add(new Field("url", "url", false, false, false, false)); listFields.add(new Field("grupos", "grupos", false, false, false, false)); listFields.add(new Field("usuarios", "usuarios", false, false, false, false)); listFields.add(new Field("script", "script", false, false, false, false)); listFields.add(new Field("textoEmail", "textoEmail", false, false, false, false)); listFields.add(new Field("nomeFluxoEncadeado", "nomeFluxoEncadeado", false, false, false, false)); listFields.add(new Field("modeloEmail", "modeloEmail", false, false, false, false)); listFields.add(new Field("intervalo", "intervalo", false, false, false, false)); listFields.add(new Field("condicaoDisparo", "condicaoDisparo", false, false, false, false)); listFields.add(new Field("multiplasInstancias", "multiplasInstancias", false, false, false, false)); listFields.add(new Field("contabilizaSLA", "contabilizaSLA", false, false, false, false)); listFields.add(new Field("percExecucao", "percExecucao", false, false, false, false)); listFields.add(new Field("destinatariosEmail", "destinatariosEmail", false, false, false, false)); listFields.add(new Field("posX", "posX", false, false, false, false)); listFields.add(new Field("posY", "posY", false, false, false, false)); listFields.add(new Field("largura", "largura", false, false, false, false)); listFields.add(new Field("altura", "altura", false, false, false, false)); listFields.add(new Field("template", "template", false, false, false, false)); return listFields; } @Override public String getTableName() { return TABLE_NAME; } @Override public Collection<ElementoFluxoDTO> list() throws PersistenceException { return null; } @Override public Class<?> getBean() { return ElementoFluxoDTO.class; } @Override public Collection<ElementoFluxoDTO> find(final IDto arg0) throws PersistenceException { return null; } public List<ElementoFluxoDTO> findAllByIdFluxo(final Integer parm) throws PersistenceException { final List<Condition> condicao = new ArrayList<>(); final List<Order> ordenacao = new ArrayList<>(); condicao.add(new Condition("idFluxo", "=", parm)); ordenacao.add(new Order("idElemento")); return (List<ElementoFluxoDTO>) super.findByCondition(condicao, ordenacao); } public List<ElementoFluxoDTO> findByIdFluxo(final Integer parm) throws PersistenceException { final List<Condition> condicao = new ArrayList<>(); final List<Order> ordenacao = new ArrayList<>(); condicao.add(new Condition("idFluxo", "=", parm)); condicao.add(new Condition("tipoElemento", "=", this.getTipoElemento().name())); ordenacao.add(new Order("idElemento")); return (List<ElementoFluxoDTO>) super.findByCondition(condicao, ordenacao); } public void deleteByIdFluxo(final Integer parm) throws PersistenceException { final List<Condition> condicao = new ArrayList<>(); condicao.add(new Condition("idFluxo", "=", parm)); condicao.add(new Condition("tipoElemento", "=", this.getTipoElemento().name())); super.deleteByCondition(condicao); } public void deleteAllByIdFluxo(final Integer parm) throws PersistenceException { final List<Condition> condicao = new ArrayList<>(); condicao.add(new Condition("idFluxo", "=", parm)); super.deleteByCondition(condicao); } @Override public IDto create(final IDto obj) throws PersistenceException { ((ElementoFluxoDTO) obj).setTipoElemento(this.getTipoElemento().name()); return super.create(obj); } @Override public IDto restore(IDto obj) throws PersistenceException { obj = super.restore(obj); if (obj == null) { return null; } final String nomeClasse = Config.getClasseDtoElemento(((ElementoFluxoDTO) obj).getTipoElemento()); ElementoFluxoDTO elementoDto = null; try { elementoDto = (ElementoFluxoDTO) Class.forName(nomeClasse).newInstance(); Reflexao.copyPropertyValues(obj, elementoDto); } catch (final Exception e) { e.printStackTrace(); } return elementoDto; } public ElementoFluxoDTO restore(final Integer idElementoFluxo) throws PersistenceException { final ElementoFluxoDTO elementoDto = new ElementoFluxoDTO(); elementoDto.setIdElemento(idElementoFluxo); return (ElementoFluxoDTO) this.restore(elementoDto); } protected TipoElementoFluxo getTipoElemento() { return null; } public List<ElementoFluxoDTO> listaElementoFluxo(final String documentacao) throws PersistenceException { final List<String> parametro = new ArrayList<>(); final List<String> listRetorno = new ArrayList<>(); List<?> lista = new ArrayList<>(); String sql = ""; if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) { sql = "select documentacao from bpm_elementofluxo where trim(documentacao) "; } else { sql = "select distinct(documentacao) from bpm_elementofluxo where trim(documentacao) "; } if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.POSTGRESQL)) { sql += " ilike '%" + documentacao + "%'"; } else { sql += " like '%" + documentacao + "%'"; } sql += " ORDER BY documentacao "; if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE) || CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) { String sqlOracleSqlServer = ""; if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) { sqlOracleSqlServer = "select distinct cast(documentacao as varchar2(4000)) documentacao from bpm_elementofluxo where UPPER(documentacao) "; } if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) { sqlOracleSqlServer = "select distinct cast(documentacao as varchar(4000)) documentacao from bpm_elementofluxo where documentacao "; } sqlOracleSqlServer += " like UPPER('%" + documentacao + "%')"; sqlOracleSqlServer += " and documentacao is not null "; sqlOracleSqlServer += " order by documentacao "; listRetorno.add("documentacao"); lista = this.execSQL(sqlOracleSqlServer.toString(), parametro.toArray()); return engine.listConvertion(this.getBean(), lista, listRetorno); } if (!CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) { lista = this.execSQL(sql, parametro.toArray()); } listRetorno.add("documentacao"); return engine.listConvertion(this.getBean(), lista, listRetorno); } }