From a03d5154456587fc7920e632f083cc5f1e4318a9 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 20 Apr 2013 17:29:18 +0200 Subject: wip --- src/main/java/io/trygvis/queue/TaskDao.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/main/java/io/trygvis/queue/TaskDao.java') 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 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.emptyList()); } } } -- cgit v1.2.3