From 80102c7bf93bae5f3f46592e66d899fb3e88eb09 Mon Sep 17 00:00:00 2001
From: "h.hein" <26-h-kyaw-sakuracommunication@it-college.co.jp>
Date: Tue, 13 Oct 2026 14:00:13 +0900
Subject: [PATCH] stept 1 done em spring
---
.gitignore | 1 +
.settings/org.eclipse.wst.common.component | 10 -
.../app/domain/service/DeleteDepartment.java | 6 +
.../app/domain/service/SearchDepartment.java | 12 +-
.../domain/service/SearchDepartmentImpl.java | 42 -----
.../app/domain/service/UpdateDepartment.java | 7 +
.../service/impl/DeleteDepartmentImpl.java | 20 ++
.../service/impl/SearchDepartmentImpl.java | 30 ++-
.../service/impl/UpdateDepartmentImpl.java | 26 +++
.../DeleteDepartmentController.java | 47 +++++
.../SelectDepartmentController.java | 6 +-
.../UpdateDepartmentController.java | 89 +++++++++
.../templates/insertDepartmentInput.html | 10 +
src/main/resources/templates/menu.html | 176 ++++++++++--------
.../resources/templates/selectDepartment.html | 172 ++++++++++-------
.../templates/updateDepartmentInput.html | 85 +++++++++
16 files changed, 527 insertions(+), 212 deletions(-)
delete mode 100644 .settings/org.eclipse.wst.common.component
create mode 100644 src/main/java/com/example/rhizome/app/domain/service/DeleteDepartment.java
delete mode 100644 src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentImpl.java
create mode 100644 src/main/java/com/example/rhizome/app/domain/service/UpdateDepartment.java
create mode 100644 src/main/java/com/example/rhizome/app/domain/service/impl/DeleteDepartmentImpl.java
create mode 100644 src/main/java/com/example/rhizome/app/domain/service/impl/UpdateDepartmentImpl.java
create mode 100644 src/main/java/com/example/rhizome/app/presentation/controller/DeleteDepartmentController.java
create mode 100644 src/main/java/com/example/rhizome/app/presentation/controller/UpdateDepartmentController.java
create mode 100644 src/main/resources/templates/insertDepartmentInput.html
create mode 100644 src/main/resources/templates/updateDepartmentInput.html
diff --git a/.gitignore b/.gitignore
index b83d222..0f63015 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/target/
+/bin/
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
deleted file mode 100644
index 5517781..0000000
--- a/.settings/org.eclipse.wst.common.component
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/java/com/example/rhizome/app/domain/service/DeleteDepartment.java b/src/main/java/com/example/rhizome/app/domain/service/DeleteDepartment.java
new file mode 100644
index 0000000..f48ce08
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/DeleteDepartment.java
@@ -0,0 +1,6 @@
+package com.example.rhizome.app.domain.service;
+
+public interface DeleteDepartment {
+ void delete(Integer idDepartment);
+
+}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
index 572dcee..9534d57 100644
--- a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
+++ b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartment.java
@@ -1,14 +1,16 @@
package com.example.rhizome.app.domain.service;
+import java.util.List;
+
import com.example.rhizome.app.domain.model.Department;
import com.example.rhizome.app.domain.model.SearchConditionDepartment;
-import java.util.List;
-
public interface SearchDepartment {
- List selectAll();
+ List selectAll();
- List searchBy(SearchConditionDepartment searchConditionDepartment);
+ List searchBy(SearchConditionDepartment searchConditionDepartment);
- List searchByWithLike(SearchConditionDepartment searchConditionDepartment);
+ List searchByWithLike(SearchConditionDepartment searchConditionDepartment);
+
+ Department searchById(Integer idDepartment);
}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentImpl.java b/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentImpl.java
deleted file mode 100644
index 60d6c23..0000000
--- a/src/main/java/com/example/rhizome/app/domain/service/SearchDepartmentImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.example.rhizome.app.domain.service;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-
-import com.example.rhizome.app.domain.model.Department;
-import com.example.rhizome.app.domain.model.SearchConditionDepartment;
-import com.example.rhizome.app.infra.entity.DepartmentEntity;
-import com.example.rhizome.app.infra.repository.DepartmentRepository;
-
-@Service
-public class SearchDepartmentImpl implements SearchDepartment {
-
- @Autowired
- private DepartmentRepository departmentRepository;
-
- @Override
- public List selectAll() {
- return DepartmentEntity.createDepartmentList(departmentRepository.findAll());
- }
-
- @Override
- public List searchBy(SearchConditionDepartment searchConditionDepartment) {
- Specification spec = Specification
- .where(DepartmentRepository.idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
- .and(DepartmentRepository.nmDepartmentEqual(searchConditionDepartment.getNmDepartment()));
-
- return DepartmentEntity.createDepartmentList(departmentRepository.findAll(spec));
- }
-
- @Override
- public List searchByWithLike(SearchConditionDepartment searchConditionDepartment) {
- Specification spec = Specification
- .where(DepartmentRepository.idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
- .and(DepartmentRepository.nmDepartmentLike(searchConditionDepartment.getNmDepartment()));
-
- return DepartmentEntity.createDepartmentList(departmentRepository.findAll(spec));
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/example/rhizome/app/domain/service/UpdateDepartment.java b/src/main/java/com/example/rhizome/app/domain/service/UpdateDepartment.java
new file mode 100644
index 0000000..c77d4bb
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/UpdateDepartment.java
@@ -0,0 +1,7 @@
+package com.example.rhizome.app.domain.service;
+
+import com.example.rhizome.app.domain.model.Department;
+
+public interface UpdateDepartment {
+ void update(Department department);
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/DeleteDepartmentImpl.java b/src/main/java/com/example/rhizome/app/domain/service/impl/DeleteDepartmentImpl.java
new file mode 100644
index 0000000..4f9ef07
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/impl/DeleteDepartmentImpl.java
@@ -0,0 +1,20 @@
+package com.example.rhizome.app.domain.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.example.rhizome.app.domain.service.DeleteDepartment;
+import com.example.rhizome.app.infra.repository.DepartmentRepository;
+
+@Service
+public class DeleteDepartmentImpl implements DeleteDepartment {
+
+ @Autowired
+ private DepartmentRepository departmentRepository;
+
+ @Override
+ public void delete(Integer idDepartment) {
+ // JpaRepository တွင်ပါရှိသော deleteById ကို အသုံးပြု၍ ဖယ်ရှားရန်
+ departmentRepository.deleteById(idDepartment);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java
index feb6b37..1bd429f 100644
--- a/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java
+++ b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentImpl.java
@@ -1,17 +1,18 @@
package com.example.rhizome.app.domain.service.impl;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
import com.example.rhizome.app.domain.model.Department;
import com.example.rhizome.app.domain.model.SearchConditionDepartment;
import com.example.rhizome.app.domain.service.SearchDepartment;
import com.example.rhizome.app.infra.entity.DepartmentEntity;
import com.example.rhizome.app.infra.repository.DepartmentRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
/**
* 部署情報検索系の機能を集約させるサービスクラスです。
@@ -79,4 +80,21 @@ public class SearchDepartmentImpl implements SearchDepartment {
);
}
+
+ @Override
+ public Department searchById(Integer idDepartment) {
+ // TODO 自動生成されたメソッド・スタブ
+ if (idDepartment == null) {
+ return null;
+ }
+
+ return departmentRepository.findById(idDepartment)
+ .map(entity -> {
+ List list = DepartmentEntity.createDepartmentList(List.of(entity));
+ return list.isEmpty() ? null : list.get(0);
+ })
+ .orElse(null);
+
+
+ }
}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/UpdateDepartmentImpl.java b/src/main/java/com/example/rhizome/app/domain/service/impl/UpdateDepartmentImpl.java
new file mode 100644
index 0000000..9717aad
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/impl/UpdateDepartmentImpl.java
@@ -0,0 +1,26 @@
+package com.example.rhizome.app.domain.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.example.rhizome.app.domain.model.Department;
+import com.example.rhizome.app.domain.service.UpdateDepartment;
+import com.example.rhizome.app.infra.entity.DepartmentEntity;
+import com.example.rhizome.app.infra.repository.DepartmentRepository;
+
+@Service
+public class UpdateDepartmentImpl implements UpdateDepartment {
+
+ @Autowired
+ private DepartmentRepository departmentRepository;
+
+ @Override
+ public void update(Department department) {
+ // Model မှ Entity သို့ ပြောင်းလဲခြင်း သို့မဟုတ် သက်ဆိုင်ရာ update ကို save ဖြင့် လုပ်ဆောင်ရန်
+ DepartmentEntity entity = new DepartmentEntity();
+ entity.setIdDepartment(department.getIdDepartment());
+ entity.setNmDepartment(department.getNmDepartment());
+
+ departmentRepository.save(entity);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/DeleteDepartmentController.java b/src/main/java/com/example/rhizome/app/presentation/controller/DeleteDepartmentController.java
new file mode 100644
index 0000000..7f2f6fa
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/DeleteDepartmentController.java
@@ -0,0 +1,47 @@
+package com.example.rhizome.app.presentation.controller;
+
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.example.rhizome.aop.aspect.SessionCheck;
+import com.example.rhizome.app.domain.service.DeleteDepartment;
+import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
+import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
+import com.example.rhizome.app.presentation.form.MessageForm;
+
+@Controller
+public class DeleteDepartmentController {
+
+ HttpSession httpSession;
+ DeleteDepartment deleteDepartment;
+
+ @Autowired
+ public DeleteDepartmentController(HttpSession httpSession, DeleteDepartment deleteDepartment) {
+ this.httpSession = httpSession;
+ this.deleteDepartment = deleteDepartment;
+ }
+
+ @SessionCheck
+ @PostMapping("/deleteDepartmentInput")
+ public String deleteDepartment(@RequestParam("idDepartment") Integer idDepartment, Model model) {
+ final String DELETE_COMPLETE = "削除しました。";
+
+ try {
+ // ဌာန ဖယ်ရှားခြင်း လုပ်ဆောင်ချက်
+ deleteDepartment.delete(idDepartment);
+
+ model.addAttribute(PageReturnAttributeKeyword.MESSAGE_INFO, new MessageForm(DELETE_COMPLETE));
+ return "forward:/selectDepartment";
+
+ } catch (Exception e) {
+ httpSession.invalidate();
+ e.printStackTrace();
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
index bde8694..0110891 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
+import com.example.rhizome.aop.aspect.SessionCheck;
import com.example.rhizome.app.domain.model.Department;
import com.example.rhizome.app.domain.service.SearchDepartment;
import com.example.rhizome.app.presentation.form.DepartmentForm;
@@ -21,9 +22,10 @@ public class SelectDepartmentController {
private SearchDepartment searchDepartment;
/** 部署検索画面の初期表示 */
+ @SessionCheck
@GetMapping("/showSelectDepartment")
public String showSelectDepartment(@ModelAttribute SearchConditionDepartmentForm searchConditionDepartmentForm) {
- return "department/selectDepartment";
+ return "selectDepartment";
}
/** 部署検索処理 */
@@ -34,6 +36,6 @@ public class SelectDepartmentController {
);
model.addAttribute("departmentFormList", DepartmentForm.convertFrom(departmentList));
- return "department/selectDepartment";
+ return "selectDepartment";
}
}
\ No newline at end of file
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/UpdateDepartmentController.java b/src/main/java/com/example/rhizome/app/presentation/controller/UpdateDepartmentController.java
new file mode 100644
index 0000000..b3ab1b1
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/UpdateDepartmentController.java
@@ -0,0 +1,89 @@
+package com.example.rhizome.app.presentation.controller;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.servlet.http.HttpSession;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.example.rhizome.aop.aspect.SessionCheck;
+import com.example.rhizome.app.domain.model.Department;
+import com.example.rhizome.app.domain.service.SearchDepartment;
+import com.example.rhizome.app.domain.service.UpdateDepartment;
+import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
+import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
+import com.example.rhizome.app.presentation.form.DepartmentForm;
+import com.example.rhizome.app.presentation.form.MessageForm;
+
+@Controller
+public class UpdateDepartmentController {
+
+ private final static Logger LOGGER = Logger.getLogger(UpdateDepartmentController.class.getName());
+ private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
+
+ HttpSession httpSession;
+ SearchDepartment searchDepartment;
+ UpdateDepartment updateDepartment; // 追加
+
+ @Autowired
+ public UpdateDepartmentController(HttpSession httpSession, SearchDepartment searchDepartment, UpdateDepartment updateDepartment) {
+ this.httpSession = httpSession;
+ this.searchDepartment = searchDepartment;
+ this.updateDepartment = updateDepartment; // 追加
+ }
+
+ @SessionCheck
+ @PostMapping("/updateDepartmentInput")
+ public String showUpdateDepartment(@RequestParam("idDepartment") Integer idDepartment, Model model) {
+ final String UPDATE_TARGET_ID_NOT_FOUND = "更新対象のデータが見つかりません。";
+
+ try {
+ Department department = searchDepartment.searchById(idDepartment);
+
+ if (department == null) {
+ model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(UPDATE_TARGET_ID_NOT_FOUND));
+ return "forward:/selectDepartment";
+ }
+
+ model.addAttribute("departmentForm", DepartmentForm.convertFrom(department));
+ return "updateDepartmentInput";
+
+ } catch (Exception e) {
+ httpSession.invalidate();
+ e.printStackTrace();
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+ }
+
+ /**
+ * 部署情報の更新を実行する
+ */
+ @SessionCheck
+ @RequestMapping(value = "/updateDepartmentResult", method = RequestMethod.POST)
+ public String updateDepartmentResult(@ModelAttribute("departmentForm") DepartmentForm departmentForm, Model model) {
+ final String UPDATE_COMPLETE = "更新しました。";
+
+ try {
+ Department department = new Department(departmentForm.getIdDepartment(), departmentForm.getNmDepartment());
+ updateDepartment.update(department);
+
+ model.addAttribute(PageReturnAttributeKeyword.MESSAGE_INFO, new MessageForm(UPDATE_COMPLETE));
+ return "forward:/selectDepartment";
+
+ } catch (Exception e) {
+ httpSession.invalidate();
+ e.printStackTrace();
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/templates/insertDepartmentInput.html b/src/main/resources/templates/insertDepartmentInput.html
new file mode 100644
index 0000000..2571001
--- /dev/null
+++ b/src/main/resources/templates/insertDepartmentInput.html
@@ -0,0 +1,10 @@
+
+
+
+
+Insert title here
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/menu.html b/src/main/resources/templates/menu.html
index 6d0ee4a..743a0f4 100644
--- a/src/main/resources/templates/menu.html
+++ b/src/main/resources/templates/menu.html
@@ -3,115 +3,129 @@
-
-
-
-
-
-
- メニュー
+
+
+
+
+
+
+ メニュー
-
- メインメニュー
-
- ログイン者名:
-
-
-
-