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!"); } } }
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; }