From b1d598a2f02819bc127d0d3522dc7ac91b4dee65 Mon Sep 17 00:00:00 2001 From: Kamal Wickramanayake Date: Sun, 10 May 2026 14:23:46 +0530 Subject: Added Spring sample application related to structure --- .../spring-task-manager-structure/.gitignore | 9 +++++ .../spring-task-manager-structure/pom.xml | 42 ++++++++++++++++++++++ .../src/main/java/com/example/spring/App.java | 11 ++++++ .../main/java/com/example/spring/task/Task.java | 5 +++ .../java/com/example/spring/task/TaskManager.java | 11 ++++++ .../com/example/spring/task/TaskManagerApp.java | 20 +++++++++++ .../com/example/spring/task/TaskManagerImpl.java | 20 +++++++++++ .../main/java/com/example/spring/task/TextUI.java | 18 ++++++++++ .../java/com/example/spring/task/dao/TaskDAO.java | 10 ++++++ .../example/spring/task/dao/jdbc/JDBCTaskDAO.java | 35 ++++++++++++++++++ .../META-INF/spring/applicationContext.xml | 34 ++++++++++++++++++ .../main/resources/META-INF/spring/jdbc.properties | 9 +++++ 12 files changed, 224 insertions(+) create mode 100644 spring-framework/spring-task-manager-structure/.gitignore create mode 100644 spring-framework/spring-task-manager-structure/pom.xml create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java create mode 100644 spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml create mode 100644 spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties (limited to 'spring-framework') 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 @@ + + 4.0.0 + + + com.example.spring + base-config + 0.0.1-SNAPSHOT + ../00-config + + + bank-jdbc-ds-transaction + jar + + + + org.springframework + spring-jdbc + ${springVersion} + + + + org.apache.commons + commons-dbcp2 + ${commonsDBCP2Version} + + + commons-logging + commons-logging + + + + + + org.mariadb.jdbc + mariadb-java-client + ${mariadbClientVersion} + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 -- cgit v1.2.3