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 --- .../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 ++++++++++++++++++++++ 8 files changed, 130 insertions(+) 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 (limited to 'spring-framework/spring-task-manager-structure/src/main/java') 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; + } + +} -- cgit v1.2.3