package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import br.com.centralit.citcorpore.bean.UnidadesAccServicosDTO; 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 UnidadesAccServicosDao extends CrudDaoDefaultImpl { public UnidadesAccServicosDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("idUnidade" ,"idUnidade", true, false, false, false)); listFields.add(new Field("idServico" ,"idServico", true, false, false, false)); return listFields; } public String getTableName() { return this.getOwner() + "unidadesAccServicos"; } public Collection list() throws PersistenceException { return null; } public Class getBean() { return UnidadesAccServicosDTO.class; } public Collection find(IDto arg0) throws PersistenceException { return null; } public Collection findByIdUnidade(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idUnidade", "=", parm)); ordenacao.add(new Order("idServico")); return super.findByCondition(condicao, ordenacao); } public void deleteByIdUnidade(Integer parm) throws PersistenceException { List condicao = new ArrayList(); condicao.add(new Condition("idUnidade", "=", parm)); super.deleteByCondition(condicao); } public Collection findByIdServico(Integer parm) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idServico", "=", parm)); ordenacao.add(new Order("idUnidade")); return super.findByCondition(condicao, ordenacao); } public void deleteByIdServico(Integer parm) throws PersistenceException { List condicao = new ArrayList(); condicao.add(new Condition("idServico", "=", parm)); super.deleteByCondition(condicao); } public void deleteByIdServicoUnidade(Integer idUnidade, Integer idServico) throws PersistenceException { List condicao = new ArrayList(); condicao.add(new Condition("idUnidade", "=", idUnidade)); condicao.add(new Condition("idServico", "=", idServico)); super.deleteByCondition(condicao); } /** * Prepara Lista de Retorno. * * @return List */ private List prepararListaDeRetorno() { List listRetorno = new ArrayList(); listRetorno.add("idServico"); listRetorno.add("nomeServico"); listRetorno.add("detalheServico"); return listRetorno; } /** * Verifica se j� existe uma associa��o feita. * * @param idServico e idUnidade * @return boolean * @throws Exception * @author rodrigo.oliveira */ public boolean existeAssociacaoComUnidade(Integer idServico, Integer idUnidade) throws PersistenceException { List servicos = new ArrayList(); servicos.add(new Order("idServico")); UnidadesAccServicosDTO unidadesAccServicosDTO = new UnidadesAccServicosDTO(); unidadesAccServicosDTO.setIdServico(idServico); if (idUnidade != null && !(idUnidade.intValue() == 0)) { unidadesAccServicosDTO.setIdUnidade(idUnidade); } List listaServicos = (List) super.find(unidadesAccServicosDTO, servicos); if (listaServicos == null || listaServicos.isEmpty()) { return false; } else { return true; } } /** * Retorna os servi�os para a unidade informada * * @param idUnidade * @return Collection * @throws Exception * @author rodrigo.oliveira */ public Collection consultaServicosPorUnidade(Integer idUnidade) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("SELECT s.idservico, s.nomeservico, s.detalheservico FROM servico as s ") .append("INNER JOIN unidadesaccservicos AS u ON s.idservico = u.idservico ") .append("WHERE u.idunidade = ? order by nomeservico asc "); parametro.add(idUnidade); List lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = this.prepararListaDeRetorno(); List result = null; result = this.engine.listConvertion(getBean(), lista, listRetorno); if (result == null || result.size() == 0) return null; HashMap map = new HashMap(); Collection colFinal = new ArrayList(); //O laco abaixo tira as duplicacoes. NAO COLOQUE DISTINCT NO SQL ACIMA, POIS NAO FUNCIONA NO ORACLE! EMAURI EM 04/10/2012. for (Iterator it = result.iterator(); it.hasNext();){ UnidadesAccServicosDTO unidadesAccServicosDTO = (UnidadesAccServicosDTO)it.next(); if (!map.containsKey("ID" + unidadesAccServicosDTO.getIdServico())){ colFinal.add(unidadesAccServicosDTO); map.put("ID" + unidadesAccServicosDTO.getIdServico(), "ID" + unidadesAccServicosDTO.getIdServico()); } } return colFinal; } }