diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/core/DataObjectUtil.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/core/DataObjectUtil.java index 9569c45..fa557ed 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/core/DataObjectUtil.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/core/DataObjectUtil.java @@ -167,7 +167,10 @@ public final class DataObjectUtil { } } - DataColumn dataColumn = dataObject.getColumn(arg); + DataColumn dataColumn = null; + if (dataObject != null) { + dataColumn = dataObject.getColumn(arg); + } if (dataColumn == null) { dataColumn = new DataColumn(arg, new DataType(javaClass)); } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/connector/DatabaseSql.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/connector/DatabaseSql.java index ba686f8..4603598 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/connector/DatabaseSql.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/connector/DatabaseSql.java @@ -59,12 +59,12 @@ public class DatabaseSql extends Activity { @JsonView({ Views.GenericView.class}) private String returnSqlVariable; - @FlowElementProperty(tab=1, title="Variável de lista para várias operações SQL", type=PropertyElementTypeEnum.TEXT, maxLength=120) + @FlowElementProperty(tab=1, title="Variável de lista para várias operações SQL", type=PropertyElementTypeEnum.VARIABLE_NAME, maxLength=120) @Column(nullable = true, length=120) @JsonView({ Views.GenericView.class}) private String listSqlVariable; - @FlowElementProperty(tab=1, title="Variável de um bean usado pra substituir valores no SQL", type=PropertyElementTypeEnum.TEXT, maxLength=120) + @FlowElementProperty(tab=1, title="Variável do objeto usado pra substituir valores no SQL", type=PropertyElementTypeEnum.VARIABLE_NAME, maxLength=120) @Column(nullable = true, length=120) @JsonView({ Views.GenericView.class}) private String beanName; diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/component/ExecuteSql.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/component/ExecuteSql.java index 2b71f75..06991ca 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/component/ExecuteSql.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/component/ExecuteSql.java @@ -16,11 +16,14 @@ import org.apache.commons.lang.text.StrSubstitutor; import org.json.JSONArray; import org.json.JSONObject; +import br.com.centralit.esi.api.data.core.DataObjectUtil; import br.com.centralit.esi.api.enumerated.SqlClauseTypeEnum; import br.com.centralit.esi.api.runtime.RuntimeEnvironment; +import br.com.centralit.esi.exception.EsiBusinessException; import br.com.centralit.esi.exception.EsiExecutionException; public class ExecuteSql { + public static void execute(RuntimeEnvironment runtimeEnvironment) { String connName = (String) runtimeEnvironment.getObject("CONNECTIONNAME"); String sql = (String) runtimeEnvironment.getObject("SQLCONTENT"); @@ -41,6 +44,7 @@ public class ExecuteSql { } runtimeEnvironment.addOrUpdateObject(nameResultSql, saida); } + public static Object executaSelect(Connection connection, RuntimeEnvironment runtimeEnvironment, String sqlQuery) { Object saida = null; try { @@ -64,8 +68,9 @@ public class ExecuteSql { } return saida; } + @SuppressWarnings("rawtypes") - public static String executaUpdate(Connection connection, RuntimeEnvironment runtimeEnvironment, String sqlUpdate) { + public static Object executaUpdate(Connection connection, RuntimeEnvironment runtimeEnvironment, String sqlUpdate) { String listNameForEach = (String) runtimeEnvironment.getObject("LISTFOREACH"); String nameBeanSubt = (String) runtimeEnvironment.getObject("NAMEBEANSUBST"); Object beanObj = null; @@ -87,10 +92,61 @@ public class ExecuteSql { } return retorno; }else{ - String sqlAjustado = preparaSqlUpdate(connection, runtimeEnvironment, sqlUpdate, null, beanObj); - return executaSqlUpdate(connection, runtimeEnvironment, sqlAjustado); + HashMap map = buildParams(null, beanObj); + try { + DataObjectUtil.executeSQL(null, connection, sqlUpdate, map); + } catch (SQLException e) { + e.printStackTrace(); + throw new EsiBusinessException(e); + } + + return map; + } + } + + @SuppressWarnings({ "unchecked" }) + public static HashMap buildParams(Object bean, Object beanSubt2) { + HashMap valuesMapFinal = new HashMap(); + if (bean != null){ + try { + Map valuesMap = null; + valuesMap = PropertyUtils.describe(bean); + if (valuesMap != null){ + valuesMapFinal.putAll(valuesMap); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + throw new EsiExecutionException(e); + } catch (InvocationTargetException e) { + e.printStackTrace(); + throw new EsiExecutionException(e); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + throw new EsiExecutionException(e); + } } + if (beanSubt2 != null){ + try { + Map valuesMap = null; + valuesMap = PropertyUtils.describe(beanSubt2); + if (valuesMap != null){ + valuesMapFinal.putAll(valuesMap); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + throw new EsiExecutionException(e); + } catch (InvocationTargetException e) { + e.printStackTrace(); + throw new EsiExecutionException(e); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + throw new EsiExecutionException(e); + } + } + + return valuesMapFinal; } + @SuppressWarnings({ "unchecked", "unused" }) public static String preparaSqlUpdate(Connection connection, RuntimeEnvironment runtimeEnvironment, String sqlUpdate, Object bean, Object beanSubt2) { Map valuesMapFinal = new HashMap(); @@ -138,6 +194,7 @@ public class ExecuteSql { return sqlUpdate; } } + public static String executaSqlUpdate(Connection connection, RuntimeEnvironment runtimeEnvironment, String sqlUpdate) { int resQtde = 0; try { @@ -161,6 +218,7 @@ public class ExecuteSql { } return "{\"count\":\"" + resQtde + "\"}"; } + public static Object geraSaidaSelect(ResultSet result, RuntimeEnvironment runtimeEnvironment) throws SQLException { String tipoSaida = (String) runtimeEnvironment.getObject("OUTPUT"); if (tipoSaida == null){ @@ -173,6 +231,7 @@ public class ExecuteSql { } return ""; } + public static JSONArray geraSaidaSelectJSON(ResultSet result, RuntimeEnvironment runtimeEnvironment) throws SQLException { JSONArray jsonArray = new JSONArray(); @@ -190,6 +249,7 @@ public class ExecuteSql { return jsonArray; } + public static List geraSaidaSelectLIST(ResultSet result, RuntimeEnvironment runtimeEnvironment) throws SQLException { ResultSetMetaData metaData = result.getMetaData(); int columnCount = metaData.getColumnCount(); -- libgit2 0.21.2