Skip to content

Commit

Permalink
added JdbcTemplate + simple scaffolding
Browse files Browse the repository at this point in the history
  • Loading branch information
igm committed Apr 8, 2013
1 parent a9f7b0e commit 2b25b22
Show file tree
Hide file tree
Showing 10 changed files with 126 additions and 115 deletions.
14 changes: 12 additions & 2 deletions pom.xml
Expand Up @@ -24,12 +24,22 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.1.RELEASE</version>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.1.RELEASE</version>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.171</version>
</dependency>
</dependencies>
</project>
15 changes: 15 additions & 0 deletions src/main/java/ie/cit/cad/Todo.java
@@ -1,9 +1,16 @@
package ie.cit.cad;

import java.util.UUID;

public class Todo {
private String id;
private String text;
private boolean done;

public Todo() {
id = UUID.randomUUID().toString();
}

public String getText() {
return text;
}
Expand All @@ -20,4 +27,12 @@ public void setText(String text) {
this.text = text;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

}
23 changes: 0 additions & 23 deletions src/main/java/ie/cit/cad/TodoRepository.java

This file was deleted.

76 changes: 0 additions & 76 deletions src/main/java/ie/cit/cad/TodoServlet.java

This file was deleted.

53 changes: 53 additions & 0 deletions src/main/java/ie/cit/cad/data/dao/JdbcTodoRepository.java
@@ -0,0 +1,53 @@
package ie.cit.cad.data.dao;

import ie.cit.cad.Todo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

public class JdbcTodoRepository implements TodoRepository {

private JdbcTemplate jdbcTemplate;

public JdbcTodoRepository(DataSource dataSource) {
jdbcTemplate = new JdbcTemplate(dataSource);
}

public List<Todo> getAll() {
return jdbcTemplate.query("SELECT * FROM TODO", new TodoRowMapper());
}

public Todo findById(String id) {
return null;
}

public void add(Todo todo) {

}

public void delete(String id) {

}

public void update(Todo todo) {

}
}

class TodoRowMapper implements RowMapper<Todo> {

public Todo mapRow(ResultSet rs, int rowNum) throws SQLException {
Todo todo = new Todo();
todo.setId(rs.getString("ID"));
todo.setText(rs.getString("TEXT"));
todo.setDone(rs.getBoolean("DONE"));
return todo;
}

}
18 changes: 18 additions & 0 deletions src/main/java/ie/cit/cad/data/dao/TodoRepository.java
@@ -0,0 +1,18 @@
package ie.cit.cad.data.dao;

import ie.cit.cad.Todo;

import java.util.List;

public interface TodoRepository {
List<Todo> getAll();

Todo findById(String id);

void add(Todo todo);

void delete(String id);

void update(Todo todo);

}
21 changes: 11 additions & 10 deletions src/main/java/ie/cit/cad/web/TodoController.java
@@ -1,7 +1,7 @@
package ie.cit.cad.web;

import ie.cit.cad.Todo;
import ie.cit.cad.TodoRepository;
import ie.cit.cad.data.dao.TodoRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
Expand All @@ -18,31 +18,32 @@ public class TodoController {

@RequestMapping(method = RequestMethod.GET)
public String todoList(Model model) {
model.addAttribute("todos", repo.getTodos());
model.addAttribute("todos", repo.getAll());
return "todos";
}

@RequestMapping(method = RequestMethod.POST)
public String create(@RequestParam String text, Model model) {
Todo todo = new Todo();
todo.setText(text);
repo.getTodos().add(todo);
model.addAttribute("todos", repo.getTodos());
repo.add(todo);
model.addAttribute("todos", repo.getAll());
return "todos";
}

@RequestMapping(method = RequestMethod.PUT)
public String update(@RequestParam("todoId") int id, Model model) {
Todo todo = repo.getTodos().get(id - 1);
public String update(@RequestParam("todoId") String id, Model model) {
Todo todo = repo.findById(id);
todo.setDone(!todo.isDone());
model.addAttribute("todos", repo.getTodos());
repo.update(todo);
model.addAttribute("todos", repo.getAll());
return "todos";
}

@RequestMapping(method = RequestMethod.DELETE)
public String delete(@RequestParam("todoId") int id, Model model) {
repo.getTodos().remove(id - 1);
model.addAttribute("todos", repo.getTodos());
public String delete(@RequestParam("todoId") String id, Model model) {
repo.delete(id);
model.addAttribute("todos", repo.getAll());
return "todo";
}
}
1 change: 1 addition & 0 deletions src/main/resources/db-schema.sql
@@ -0,0 +1 @@
CREATE TABLE TODO(ID VARCHAR, TEXT VARCHAR, DONE BOOLEAN, PRIMARY KEY(ID))
2 changes: 1 addition & 1 deletion src/main/resources/log4j.properties
Expand Up @@ -9,4 +9,4 @@ log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p %d %c - %m%n

log4j.logger.org.springframework.web=TRACE
log4j.logger.org.springframework.jdbc=TRACE
18 changes: 15 additions & 3 deletions src/main/webapp/WEB-INF/applicationContext.xml
@@ -1,8 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="todoRepository" class="ie.cit.cad.TodoRepository" />

<bean class="ie.cit.cad.data.dao.JdbcTodoRepository">
<constructor-arg ref="dataSource" />
</bean>

<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath:db-schema.sql" />
</jdbc:embedded-database>

<bean class="org.h2.tools.Server" factory-method="createWebServer"
init-method="start" lazy-init="false">
<constructor-arg value="-web,-webPort,8082" />
</bean>
</beans>

0 comments on commit 2b25b22

Please sign in to comment.