private String generateFilter(final Collection colFilter) throws Exception { final ObjetoNegocioDao objetoNegocioDao = new ObjetoNegocioDao(); String sqlFilter = ""; if (colFilter != null) { for (final Iterator it = colFilter.iterator(); it.hasNext(); ) { final GrupoVisaoCamposNegocioDTO grupoVisaoCamposNegocioDTO = (GrupoVisaoCamposNegocioDTO) it.next(); final CamposObjetoNegocioDTO camposObjetoNegocioDTO = grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto(); ObjetoNegocioDTO objetoNegocioDTO = new ObjetoNegocioDTO(); objetoNegocioDTO.setIdObjetoNegocio(camposObjetoNegocioDTO.getIdObjetoNegocio()); objetoNegocioDTO = (ObjetoNegocioDTO) objetoNegocioDao.restore(objetoNegocioDTO); if (objetoNegocioDTO != null) { if (!sqlFilter.equalsIgnoreCase("")) { sqlFilter += " AND "; } String pref = ""; String suf = ""; String comp = "="; String value = "" + camposObjetoNegocioDTO.getValue(); if (MetaUtil.isStringType(camposObjetoNegocioDTO.getTipoDB())) { pref = "'%"; suf = "%'"; comp = "LIKE"; } else { if (MetaUtil.isNumericType(camposObjetoNegocioDTO.getTipoDB())) { value = this.getNumber(value); } } sqlFilter += objetoNegocioDTO.getNomeTabelaDB() + "." + camposObjetoNegocioDTO.getNomeDB() + " " + comp + " " + pref + value + suf; } } } return sqlFilter; }
public Map createFromMap( final Map map, final Collection colCampos, final UsuarioDTO usuarioDto, final VisaoDao visaoDao, final HttpServletRequest request) throws Exception { final List lstParms = new ArrayList<>(); String strValues = ""; String strFields = ""; if (colCampos == null) { LOGGER.debug("DinamicViewsServiceEjb - colCampos é null "); } final String strTable = this.generateFrom(colCampos); String sql = "INSERT INTO " + strTable.toLowerCase() + " "; if (colCampos != null) { for (final Iterator it = colCampos.iterator(); it.hasNext(); ) { final CamposObjetoNegocioDTO camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) it.next(); String strVal = ""; if (camposObjetoNegocioDTO != null && camposObjetoNegocioDTO.getFormula() != null && !camposObjetoNegocioDTO.getFormula().trim().equalsIgnoreCase("") && !camposObjetoNegocioDTO .getTipoNegocio() .trim() .equalsIgnoreCase(MetaUtil.CLASS_AND_METHOD)) { strVal = this.executeFormula(camposObjetoNegocioDTO.getFormula(), map, camposObjetoNegocioDTO); } else { if (camposObjetoNegocioDTO != null) { strVal = (String) map.get(camposObjetoNegocioDTO.getNomeDB().trim()); } } if (camposObjetoNegocioDTO != null && camposObjetoNegocioDTO.getSequence().equalsIgnoreCase("S")) { final int val = PersistenceEngine.getNextKey( this.getDao().getAliasDB(), strTable.toLowerCase(), camposObjetoNegocioDTO.getNomeDB().trim().toLowerCase()); if (!strValues.equalsIgnoreCase("")) { strValues += ","; } strValues += "?"; if (!strFields.equalsIgnoreCase("")) { strFields += ","; } strFields += "" + camposObjetoNegocioDTO.getNomeDB().trim(); map.put(camposObjetoNegocioDTO.getNomeDB().trim().toUpperCase(), "" + val); lstParms.add(val); } else { // Se o campo for obrigatório e o valor for null ou vazio, não pode continuar. if (camposObjetoNegocioDTO != null && camposObjetoNegocioDTO.getObrigatorio() != null && camposObjetoNegocioDTO.getObrigatorio().equalsIgnoreCase("S")) { if (strVal == null || strVal.trim().equals("")) { return map; } } else { /* * Desenvolvedor: euler.ramos e thiago.oliveira Data: 08/11/2013 Horário: 16h00min ID Citsmart: 123627 Motivo/Comentário: As telas * dinamic view não estavam * listando os registros que estavam com o campo deleted igual a null */ if (camposObjetoNegocioDTO != null && camposObjetoNegocioDTO.getNome().equalsIgnoreCase("deleted")) { if (strVal == null || strVal.equals("")) { strVal = "n"; } } // Se o campo não for obrigatório mas o valor for null, recebe vazio para garantir que // não de erro de sql (para campos tipo not null) if (strVal == null) { strVal = UtilStrings.nullToVazio(strVal); } } if (!strValues.equalsIgnoreCase("")) { strValues += ","; } strValues += "?"; if (!strFields.equalsIgnoreCase("")) { strFields += ","; } if (camposObjetoNegocioDTO != null) { strFields += "" + camposObjetoNegocioDTO.getNomeDB().trim(); lstParms.add( MetaUtil.convertType( camposObjetoNegocioDTO.getTipoDB().trim(), strVal, camposObjetoNegocioDTO.getPrecisionDB(), request)); } } } } sql += "(" + strFields + ") VALUES (" + strValues + ")"; visaoDao.execUpdate(sql, lstParms.toArray()); if (UtilStrings.nullToVazio( ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.USE_LOG, "false")) .equalsIgnoreCase("true")) { new Thread(new RegistraLogDinamicView(lstParms.toArray(), "I", sql, usuarioDto, strTable)) .start(); } return map; }
public void updateFromMap( final Map map, final Collection colCampos, final UsuarioDTO usuarioDto, final VisaoDao visaoDao, final HttpServletRequest request) throws Exception { final List lstParms = new ArrayList<>(); final List lstWhere = new ArrayList<>(); String strFields = ""; String strWhere = ""; final String strTable = this.generateFrom(colCampos); String sql = "UPDATE " + strTable + " "; for (final Iterator it = colCampos.iterator(); it.hasNext(); ) { final CamposObjetoNegocioDTO camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) it.next(); String strVal = ""; if (camposObjetoNegocioDTO.getFormula() != null && !camposObjetoNegocioDTO.getFormula().trim().equalsIgnoreCase("") && !camposObjetoNegocioDTO .getTipoNegocio() .trim() .equalsIgnoreCase(MetaUtil.CLASS_AND_METHOD)) { strVal = this.executeFormula(camposObjetoNegocioDTO.getFormula(), map, camposObjetoNegocioDTO); } else { strVal = (String) map.get(camposObjetoNegocioDTO.getNomeDB().trim().toUpperCase()); } if (!camposObjetoNegocioDTO.getPk().equalsIgnoreCase("S")) { if (strVal != null) { if (!strFields.equalsIgnoreCase("")) { strFields += ","; } strFields += "" + camposObjetoNegocioDTO.getNomeDB().trim() + " = ?"; lstParms.add( MetaUtil.convertType( camposObjetoNegocioDTO.getTipoDB().trim(), strVal, camposObjetoNegocioDTO.getPrecisionDB(), request)); } } else { if (strVal != null) { if (!strWhere.equalsIgnoreCase("")) { strWhere += " AND "; } strWhere += "" + camposObjetoNegocioDTO.getNomeDB() + " = ?"; lstWhere.add( MetaUtil.convertType( camposObjetoNegocioDTO.getTipoDB().trim(), strVal, camposObjetoNegocioDTO.getPrecisionDB(), request)); } } } sql += " SET " + strFields + " WHERE " + strWhere; lstParms.addAll(lstWhere); if (strFields != null && !strFields.trim().equalsIgnoreCase("")) { visaoDao.execUpdate(sql, lstParms.toArray()); if (UtilStrings.nullToVazio( ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.USE_LOG, "false")) .equalsIgnoreCase("true")) { new Thread(new RegistraLogDinamicView(lstParms.toArray(), "U", sql, usuarioDto, strTable)) .start(); } } if (!map.containsKey("REMOVED")) { map.put("REMOVED", "false"); } String removed = (String) map.get("REMOVED"); if (removed == null) { removed = "false"; } if (removed.equalsIgnoreCase("X")) { // A nova arquitetura coloca esta informacao. removed = "true"; } String sqlUltAtualizAndLogicDelete = ""; if (removed.equalsIgnoreCase("true")) { sqlUltAtualizAndLogicDelete = "UPDATE " + strTable + " SET DELETED = 'Y' WHERE " + strWhere; try { visaoDao.execUpdate(sqlUltAtualizAndLogicDelete, lstWhere.toArray()); if (UtilStrings.nullToVazio( ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.USE_LOG, "false")) .equalsIgnoreCase("true")) { new Thread( new RegistraLogDinamicView( lstWhere.toArray(), "D", sqlUltAtualizAndLogicDelete, usuarioDto, strTable)) .start(); } } catch (final Exception e) { LOGGER.debug("SQL executado:" + sqlUltAtualizAndLogicDelete); throw new LogicException( "Não foi possível realizar a exclusão do registro! Verifique se possui o Campo 'DELETED' do tipo CHAR(1) no Banco de dados!"); } } }
@Override public boolean isPKExists(final Collection colCamposPK, final Map hashValores) throws Exception { final ObjetoNegocioDao objetoNegocioDao = new ObjetoNegocioDao(); String sql = "SELECT "; String sqlFields = ""; String sqlFilter = ""; int i = 1; if (colCamposPK == null || colCamposPK.size() == 0) { return false; } for (final Iterator it = colCamposPK.iterator(); it.hasNext(); ) { final CamposObjetoNegocioDTO camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) it.next(); ObjetoNegocioDTO objetoNegocioDTO = new ObjetoNegocioDTO(); objetoNegocioDTO.setIdObjetoNegocio(camposObjetoNegocioDTO.getIdObjetoNegocio()); objetoNegocioDTO = (ObjetoNegocioDTO) objetoNegocioDao.restore(objetoNegocioDTO); if (objetoNegocioDTO != null) { if (!sqlFields.equalsIgnoreCase("")) { sqlFields += ", "; } sqlFields += objetoNegocioDTO.getNomeTabelaDB() + "." + camposObjetoNegocioDTO.getNomeDB() + " Val_" + i; } if (!sqlFilter.equalsIgnoreCase("")) { sqlFilter += " AND "; } String pref = ""; String suf = ""; final String comp = "="; if (MetaUtil.isStringType(camposObjetoNegocioDTO.getTipoDB().trim())) { pref = "'"; suf = "'"; } String strVal = (String) hashValores.get(camposObjetoNegocioDTO.getNomeDB().toUpperCase()); if (strVal != null) { if (strVal.trim().equalsIgnoreCase("")) { // Se nao existir valor para a PK, eh que nao existe! return false; } if (MetaUtil.isNumericType(camposObjetoNegocioDTO.getTipoDB().trim())) { final int x = strVal.indexOf("["); // Vai ate este ponto, pois o codigo fica entre [x] if (x > -1) { strVal = strVal.substring(x); } strVal = UtilStrings.apenasNumeros(strVal); } strVal = strVal.replaceAll(",00", ""); strVal = strVal.replaceAll("\\,", "."); sqlFilter += objetoNegocioDTO.getNomeTabelaDB() + "." + camposObjetoNegocioDTO.getNomeDB() + " " + comp + " " + pref + strVal + suf; } else { // Se nao existir valor para a PK, eh que nao existe! return false; } i++; } sql += sqlFields + " FROM " + this.generateFrom(colCamposPK) + " WHERE " + sqlFilter; final Collection colRet = this.getDao().execSQL(sql, null); if (colRet == null) { return false; } if (colRet.size() > 0) { return true; } return false; }