diff options
Diffstat (limited to 'spring-framework/spring-task-manager-structure')
12 files changed, 224 insertions, 0 deletions
diff --git a/spring-framework/spring-task-manager-structure/.gitignore b/spring-framework/spring-task-manager-structure/.gitignore new file mode 100644 index 0000000..ec4e05e --- /dev/null +++ b/spring-framework/spring-task-manager-structure/.gitignore @@ -0,0 +1,9 @@ +# Eclipse +bin +.settings +.metadata +.classpath +.project + +# Maven +target diff --git a/spring-framework/spring-task-manager-structure/pom.xml b/spring-framework/spring-task-manager-structure/pom.xml new file mode 100644 index 0000000..6a3307d --- /dev/null +++ b/spring-framework/spring-task-manager-structure/pom.xml @@ -0,0 +1,42 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>com.example.spring</groupId> + <artifactId>base-config</artifactId> + <version>0.0.1-SNAPSHOT</version> + <relativePath>../00-config</relativePath> + </parent> + + <artifactId>bank-jdbc-ds-transaction</artifactId> + <packaging>jar</packaging> + + <dependencies> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + <version>${springVersion}</version> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-dbcp2</artifactId> + <version>${commonsDBCP2Version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.mariadb.jdbc</groupId> + <artifactId>mariadb-java-client</artifactId> + <version>${mariadbClientVersion}</version> + </dependency> + </dependencies> + +</project> diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java new file mode 100644 index 0000000..0df54bc --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java @@ -0,0 +1,11 @@ +package com.example.spring; + +import com.example.spring.task.TaskManagerApp; + +public class App { + public static void main(String[] args) { + // Actually, BankApp is the class with the main method. + // It should have been executed directly instead of this class. + TaskManagerApp.main(args); + } +} diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java new file mode 100644 index 0000000..9d112f7 --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java @@ -0,0 +1,5 @@ +package com.example.spring.task; + +public class Task { + +} diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java new file mode 100644 index 0000000..9e4cbf4 --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java @@ -0,0 +1,11 @@ +package com.example.spring.task; + +/** + * Business logic operations. + * Only method signatures are defined. + */ +public interface TaskManager { + // Method signatures + public void create(Task task); + +} diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java new file mode 100644 index 0000000..0e2c65d --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java @@ -0,0 +1,20 @@ +package com.example.spring.task; + +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class TaskManagerApp { + + /** + * @param args + */ + public static void main(String[] args) { + + AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"classpath:META-INF/spring/applicationContext.xml"}); + + TextUI ui = ctx.getBean("textUI", TextUI.class); + + ui.start(); + } + +} diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java new file mode 100644 index 0000000..46ca02e --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java @@ -0,0 +1,20 @@ +package com.example.spring.task; + +import com.example.spring.task.dao.TaskDAO; + +public class TaskManagerImpl implements TaskManager { + + private TaskDAO taskDAO; + + public void setTaskDAO(TaskDAO taskDAO) { + this.taskDAO = taskDAO; + } + + @Override + public void create(Task task) { + // Actual business logic related to creating a task + // .. + Task newTask = taskDAO.create(task); + // ... + } +} diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java new file mode 100644 index 0000000..7b4676f --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java @@ -0,0 +1,18 @@ +package com.example.spring.task; + +public class TextUI { + + private TaskManager taskManager; + + public void setTaskManager(TaskManager taskManager) { + this.taskManager = taskManager; + } + + public void start() { + System.out.println("Starting TextUI..."); + //.. + Task t = new Task(); + taskManager.create(t); + //.. + } +} diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java new file mode 100644 index 0000000..3f5ad2b --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java @@ -0,0 +1,10 @@ +package com.example.spring.task.dao; + +import com.example.spring.task.Task; + +/** + * Provide an object view of a data store + */ +public interface TaskDAO { + public Task create(Task task); +} diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java new file mode 100644 index 0000000..37ced85 --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java @@ -0,0 +1,35 @@ +package com.example.spring.task.dao.jdbc; + +import java.sql.Connection; + +import javax.sql.DataSource; + +import com.example.spring.task.Task; +import com.example.spring.task.dao.TaskDAO; + +/** + * Use JDBC API to interact with a DB + */ +public class JDBCTaskDAO implements TaskDAO { + + private DataSource dataSource; + + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } + + @Override + public Task create(Task task) { + // Use a DB connection + // Connection conn = dataSource.getConnection(); + + // Perform an insert + // Return a Task object with ID set + + System.out.println("JDBCTaskDAO: inserting a record to DB."); + //task.setId(dbTaskId); + + return task; + } + +} diff --git a/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml new file mode 100644 index 0000000..abea0c7 --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:jdbc="http://www.springframework.org/schema/jdbc" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/jdbc + http://www.springframework.org/schema/jdbc/spring-jdbc.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context.xsd"> + + <context:property-placeholder location="classpath:META-INF/spring/jdbc.properties"/> + + <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" > + <property name="driverClassName" value="${jdbc.driverClassName}"/> + <property name="url" value="${jdbc.url}"/> + <property name="username" value="${jdbc.username}"/> + <property name="password" value="${jdbc.password}"/> + </bean> + + <bean id="taskDAO" class="com.example.spring.task.dao.jdbc.JDBCTaskDAO"> + <property name="dataSource" ref="dataSource"/> + </bean> + + <bean id="taskManager" class="com.example.spring.task.TaskManagerImpl"> + <property name="taskDAO" ref="taskDAO"/> + </bean> + + <bean id="textUI" class="com.example.spring.task.TextUI"> + <property name="taskManager" ref="taskManager"/> + </bean> + +</beans>
\ No newline at end of file diff --git a/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties new file mode 100644 index 0000000..c549772 --- /dev/null +++ b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties @@ -0,0 +1,9 @@ +jdbc.driverClassName=org.mariadb.jdbc.Driver +#jdbc.url=jdbc:mysql://localhost/bankdb?useSSL=false +#jdbc.url=jdbc:mysql://localhost/bankdb?useLegacyDatetimeCode=false&serverTimezone=UTC +jdbc.url=jdbc:mariadb://localhost/bank?serverTimezone=Asia/Colombo +jdbc.username=bankuser +jdbc.password=bankpwd + +#jdbc.driverClassName=org.postgresql.Driver +#jdbc.url=jdbc:postgresql://localhost/bank |
