Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import org.springframework.core.convert.support.ConfigurableConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.jdbc.core.simple.JdbcClient;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;

Expand All @@ -41,6 +42,7 @@
*
* @author Robert Kasanicky
* @author Mahmoud Ben Hassine
* @author Yanming Zhou
*/
public abstract class AbstractJdbcBatchMetadataDao implements InitializingBean {

Expand All @@ -61,6 +63,8 @@ public abstract class AbstractJdbcBatchMetadataDao implements InitializingBean {

private @Nullable ConfigurableConversionService conversionService;

private @Nullable JdbcClient jdbcClient;

protected String getQuery(String base) {
return StringUtils.replace(base, "%PREFIX%", tablePrefix);
}
Expand All @@ -80,12 +84,17 @@ public void setTablePrefix(String tablePrefix) {

public void setJdbcTemplate(JdbcOperations jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
this.jdbcClient = JdbcClient.create(jdbcTemplate);
}

@Nullable protected JdbcOperations getJdbcTemplate() {
return jdbcTemplate;
}

@Nullable protected JdbcClient getJdbcClient() {
return jdbcClient;
}

public int getClobTypeToUse() {
return clobTypeToUse;
}
Expand All @@ -110,6 +119,7 @@ public void setConversionService(ConfigurableConversionService conversionService
@Override
public void afterPropertiesSet() throws Exception {
Assert.state(jdbcTemplate != null, "JdbcOperations is required");
Assert.state(jdbcClient != null, "JdbcClient is required");
if (this.conversionService == null) {
DefaultConversionService conversionService = new DefaultConversionService();
conversionService.addConverter(new DateToStringConverter());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.locks.Lock;
Expand Down Expand Up @@ -64,7 +64,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
private static final String FIND_JOB_EXECUTION_CONTEXT = """
SELECT SHORT_CONTEXT, SERIALIZED_CONTEXT
FROM %PREFIX%JOB_EXECUTION_CONTEXT
WHERE JOB_EXECUTION_ID = ?
WHERE JOB_EXECUTION_ID = :jobExecutionId
""";

private static final String INSERT_JOB_EXECUTION_CONTEXT = """
Expand All @@ -81,7 +81,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
private static final String FIND_STEP_EXECUTION_CONTEXT = """
SELECT SHORT_CONTEXT, SERIALIZED_CONTEXT
FROM %PREFIX%STEP_EXECUTION_CONTEXT
WHERE STEP_EXECUTION_ID = ?
WHERE STEP_EXECUTION_ID = :stepExecutionId
""";

private static final String INSERT_STEP_EXECUTION_CONTEXT = """
Expand All @@ -97,12 +97,12 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem

private static final String DELETE_STEP_EXECUTION_CONTEXT = """
DELETE FROM %PREFIX%STEP_EXECUTION_CONTEXT
WHERE STEP_EXECUTION_ID = ?
WHERE STEP_EXECUTION_ID = :stepExecutionId
""";

private static final String DELETE_JOB_EXECUTION_CONTEXT = """
DELETE FROM %PREFIX%JOB_EXECUTION_CONTEXT
WHERE JOB_EXECUTION_ID = ?
WHERE JOB_EXECUTION_ID = :jobExecutionId
""";

private Charset charset = StandardCharsets.UTF_8;
Expand Down Expand Up @@ -153,29 +153,24 @@ public ExecutionContext getExecutionContext(JobExecution jobExecution) {
Long executionId = jobExecution.getId();
Assert.notNull(executionId, "ExecutionId must not be null.");

List<ExecutionContext> results = getJdbcTemplate().query(getQuery(FIND_JOB_EXECUTION_CONTEXT),
new ExecutionContextRowMapper(), executionId);
if (!results.isEmpty()) {
return results.get(0);
}
else {
return new ExecutionContext();
}
return getJdbcClient().sql(getQuery(FIND_JOB_EXECUTION_CONTEXT))
.param("jobExecutionId", executionId)
.query(new ExecutionContextRowMapper())
.optional()
.orElseGet(ExecutionContext::new);

}

@Override
public ExecutionContext getExecutionContext(StepExecution stepExecution) {
Long executionId = stepExecution.getId();
Assert.notNull(executionId, "ExecutionId must not be null.");

List<ExecutionContext> results = getJdbcTemplate().query(getQuery(FIND_STEP_EXECUTION_CONTEXT),
new ExecutionContextRowMapper(), executionId);
if (results.size() > 0) {
return results.get(0);
}
else {
return new ExecutionContext();
}
return getJdbcClient().sql(getQuery(FIND_STEP_EXECUTION_CONTEXT))
.param("stepExecutionId", executionId)
.query(new ExecutionContextRowMapper())
.optional()
.orElseGet(ExecutionContext::new);
}

@Override
Expand Down Expand Up @@ -255,7 +250,9 @@ public void saveExecutionContexts(Collection<StepExecution> stepExecutions) {
*/
@Override
public void deleteExecutionContext(JobExecution jobExecution) {
getJdbcTemplate().update(getQuery(DELETE_JOB_EXECUTION_CONTEXT), jobExecution.getId());
getJdbcClient().sql(getQuery(DELETE_JOB_EXECUTION_CONTEXT))
.param("jobExecutionId", jobExecution.getId())
.update();
}

/**
Expand All @@ -264,7 +261,9 @@ public void deleteExecutionContext(JobExecution jobExecution) {
*/
@Override
public void deleteExecutionContext(StepExecution stepExecution) {
getJdbcTemplate().update(getQuery(DELETE_STEP_EXECUTION_CONTEXT), stepExecution.getId());
getJdbcClient().sql(getQuery(DELETE_STEP_EXECUTION_CONTEXT))
.param("stepExecutionId", stepExecution.getId())
.update();
}

@Override
Expand Down Expand Up @@ -293,16 +292,13 @@ private void persistSerializedContext(Long executionId, String serializedContext
longContext = null;
}

getJdbcTemplate().update(getQuery(sql), ps -> {
ps.setString(1, shortContext);
if (longContext != null) {
ps.setString(2, longContext);
}
else {
ps.setNull(2, getClobTypeToUse());
}
ps.setLong(3, executionId);
});
getJdbcClient().sql(getQuery(sql))
// @formatter:off
.param(1, shortContext, Types.VARCHAR)
.param(2, longContext, getClobTypeToUse())
.param(3, executionId, Types.BIGINT)
// @formatter:on
.update();
}

/**
Expand Down
Loading