aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/queue/TaskDao.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/queue/TaskDao.java')
-rw-r--r--src/main/java/io/trygvis/queue/TaskDao.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/main/java/io/trygvis/queue/TaskDao.java b/src/main/java/io/trygvis/queue/TaskDao.java
index 2e407a5..2bf2145 100644
--- a/src/main/java/io/trygvis/queue/TaskDao.java
+++ b/src/main/java/io/trygvis/queue/TaskDao.java
@@ -3,12 +3,16 @@ package io.trygvis.queue;
import org.springframework.beans.factory.annotation.*;
import org.springframework.jdbc.core.*;
import org.springframework.stereotype.*;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
import java.sql.*;
import java.util.Date;
import java.util.*;
import static java.util.Arrays.*;
+import static org.springframework.transaction.annotation.Propagation.MANDATORY;
+import static org.springframework.transaction.annotation.Propagation.REQUIRED;
@Component
public class TaskDao {
@@ -16,22 +20,26 @@ public class TaskDao {
@Autowired
private JdbcTemplate jdbcTemplate;
+ @Transactional(propagation = MANDATORY)
public long insert(String queue, Date scheduled, String arguments) {
jdbcTemplate.update("INSERT INTO task(id, run_count, queue, scheduled, arguments) " +
"VALUES(nextval('task_seq'), 0, ?, ?, ?)", queue, scheduled, arguments);
return jdbcTemplate.queryForObject("SELECT currval('task_seq')", Long.class);
}
+ @Transactional(propagation = MANDATORY)
public Task findById(long id) {
return jdbcTemplate.queryForObject("SELECT " + TaskRowMapper.fields + " FROM task WHERE id=?",
new TaskRowMapper(), id);
}
+ @Transactional(propagation = MANDATORY)
public List<Task> findByNameAndCompletedIsNull(String name) {
return jdbcTemplate.query("SELECT " + TaskRowMapper.fields + " FROM task WHERE queue=? AND completed IS NULL",
new TaskRowMapper(), name);
}
+ @Transactional(propagation = MANDATORY)
public void update(Task task) {
jdbcTemplate.update("UPDATE task SET scheduled=?, last_run=?, run_count=?, completed=? WHERE id=?",
task.scheduled, task.lastRun, task.runCount, task.completed, task.id);
@@ -41,6 +49,7 @@ public class TaskDao {
public static final String fields = "id, queue, scheduled, last_run, run_count, completed, arguments";
public Task mapRow(ResultSet rs, int rowNum) throws SQLException {
+ String arguments = rs.getString(7);
return new Task(
rs.getLong(1),
rs.getString(2),
@@ -48,7 +57,7 @@ public class TaskDao {
rs.getTimestamp(4),
rs.getInt(5),
rs.getTimestamp(6),
- asList(rs.getString(7).split(" ")));
+ arguments != null ? asList(arguments.split(" ")) : Collections.<String>emptyList());
}
}
}