package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.DicionarioDTO; 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.util.Constantes; public class DicionarioDao extends CrudDaoDefaultImpl { public DicionarioDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection<DicionarioDTO> find(final IDto obj) throws PersistenceException { return null; } @Override public Collection<Field> getFields() { final Collection<Field> fields = new ArrayList<>(); fields.add(new Field("iddicionario", "idDicionario", true, true, false, false)); fields.add(new Field("idlingua", "idLingua", false, false, false, false)); fields.add(new Field("nome", "nome", false, false, false, false)); fields.add(new Field("valor", "valor", false, false, false, false)); fields.add(new Field("personalizado", "personalizado", false, false, false, false)); return fields; } @Override public String getTableName() { return "dicionario"; } @Override public Collection<DicionarioDTO> list() throws PersistenceException { final List<String> listaRetorno = new ArrayList<>(); listaRetorno.add("iddicionario"); listaRetorno.add("idlingua"); listaRetorno.add("nome"); listaRetorno.add("valor"); listaRetorno.add("sigla"); final StringBuilder sql = new StringBuilder(); sql.append("SELECT d.iddicionario, d.idlingua, d.nome, d.valor, l.sigla FROM "); sql.append(this.getTableName()); sql.append(" d JOIN LINGUA l ON l.idlingua = d.idlingua ORDER BY d.idlingua"); final List<?> list = this.execSQL(sql.toString(), null); return this.listConvertion(this.getBean(), list, listaRetorno); } @Override public Class<DicionarioDTO> getBean() { return DicionarioDTO.class; } /** * Consulta Dicion�rio de acordo com a Key (nome) e Id da Lingua informada. * * @param dicionarioDto * @return DicionarioDTO * @throws Exception */ public DicionarioDTO findDicionarioByKeyAndLingua(final DicionarioDTO dicionarioDto) throws PersistenceException { final List<Object> parametro = new ArrayList<>(); final StringBuilder sql = new StringBuilder(); sql.append("select " + this.getNamesFieldsStr("dicionario") + ", lingua.sigla from " + this.getTableName()); sql.append(" inner join lingua on dicionario.idlingua = lingua.idlingua"); if (dicionarioDto.getNome() != null) { sql.append(" where dicionario.nome = ? "); parametro.add(dicionarioDto.getNome()); } if (dicionarioDto.getIdLingua() != null) { sql.append(" and dicionario.idlingua = ?"); parametro.add(dicionarioDto.getIdLingua()); } final List<?> list = this.execSQL(sql.toString(), parametro.toArray()); final List<String> listRetorno = new ArrayList<>(this.getListNamesFieldClass()); listRetorno.add("sigla"); final List<DicionarioDTO> listaDicionario = this.listConvertion(this.getBean(), list, listRetorno); if (listaDicionario != null && !listaDicionario.isEmpty()) { return listaDicionario.get(0); } return dicionarioDto; } public Collection<DicionarioDTO> listaDicionario(final DicionarioDTO dicionarioDto) throws PersistenceException { final List<Integer> parametro = new ArrayList<>(); final StringBuilder sql = new StringBuilder(); sql.append("select * from "); sql.append(this.getTableName()); sql.append(" "); if (dicionarioDto.getIdLingua() != null) { sql.append("where idlingua = ? "); parametro.add(dicionarioDto.getIdLingua()); } sql.append(" order by nome"); final List<?> list = this.execSQL(sql.toString(), parametro.toArray()); final List<String> listaRetorno = new ArrayList<>(); listaRetorno.add("idDicionario"); listaRetorno.add("nome"); listaRetorno.add("valor"); listaRetorno.add("idLingua"); if (list != null && !list.isEmpty()) { return this.listConvertion(DicionarioDTO.class, list, listaRetorno); } return null; } public Collection<DicionarioDTO> listaPorDescricaoOuKey(final DicionarioDTO dicionarioDto) throws PersistenceException { final StringBuilder sql = new StringBuilder(); sql.append("SELECT dic.iddicionario, dic.nome, dic.valor from dicionario dic where dic.idlingua = ?"); if (dicionarioDto.getKeyIdioma() != null) { sql.append(" AND dic.nome LIKE '%" + dicionarioDto.getKeyIdioma() + "%' "); } if (dicionarioDto.getKeyDescricao() != null) { sql.append(" AND dic.valor like '%" + dicionarioDto.getKeyDescricao() + "%' "); } sql.append(" ORDER BY dic.nome "); final List<Integer> parametro = new ArrayList<>(); parametro.add(dicionarioDto.getIdLingua3()); final List<?> list = this.execSQL(sql.toString(), parametro.toArray()); final List<String> listaRetorno = new ArrayList<>(); listaRetorno.add("idDicionario"); listaRetorno.add("nome"); listaRetorno.add("valor"); if (list != null && !list.isEmpty()) { return this.listConvertion(DicionarioDTO.class, list, listaRetorno); } return null; } public Integer qtdItensCustomizados(final DicionarioDTO dicionarioDto) throws PersistenceException { final String sql = "SELECT COUNT(*) as qtdCustomizados from dicionario where personalizado LIKE 'S' and idlingua = ?"; final List<Integer> parametro = new ArrayList<>(); parametro.add(dicionarioDto.getIdLingua()); final List<?> list = this.execSQL(sql, parametro.toArray()); final List<String> listaRetorno = new ArrayList<>(); listaRetorno.add("qtdCustomizados"); if (list != null && !list.isEmpty()) { final List<DicionarioDTO> listaDicionario = this.listConvertion(DicionarioDTO.class, list, listaRetorno); return listaDicionario.get(0).getQtdCustomizados(); } return 0; } }