From cca4aa5f794ea6d3cb11b1fc2ab70663a9b1684f Mon Sep 17 00:00:00 2001 From: "h.hein" <26-h-kyaw-sakuracommunication@it-college.co.jp> Date: Tue, 13 Oct 2026 15:20:46 +0900 Subject: [PATCH] Stept 2 Done em Spring --- .../app/domain/service/InsertDepartment.java | 7 + .../service/impl/InsertDepartmentImpl.java | 29 ++++ .../InsertDepartmentController.java | 78 +++++++++++ .../templates/insertDepartmentInput.html | 78 ++++++++++- .../resources/templates/selectDepartment.html | 1 + .../templates/updateDepartmentInput.html | 128 ++++++++---------- 6 files changed, 246 insertions(+), 75 deletions(-) create mode 100644 src/main/java/com/example/rhizome/app/domain/service/InsertDepartment.java create mode 100644 src/main/java/com/example/rhizome/app/domain/service/impl/InsertDepartmentImpl.java create mode 100644 src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java diff --git a/src/main/java/com/example/rhizome/app/domain/service/InsertDepartment.java b/src/main/java/com/example/rhizome/app/domain/service/InsertDepartment.java new file mode 100644 index 0000000..5be8587 --- /dev/null +++ b/src/main/java/com/example/rhizome/app/domain/service/InsertDepartment.java @@ -0,0 +1,7 @@ +package com.example.rhizome.app.domain.service; + +import com.example.rhizome.app.domain.model.Department; + +public interface InsertDepartment { + void insert(Department department); +} \ No newline at end of file diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/InsertDepartmentImpl.java b/src/main/java/com/example/rhizome/app/domain/service/impl/InsertDepartmentImpl.java new file mode 100644 index 0000000..be0231e --- /dev/null +++ b/src/main/java/com/example/rhizome/app/domain/service/impl/InsertDepartmentImpl.java @@ -0,0 +1,29 @@ +package com.example.rhizome.app.domain.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +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.service.InsertDepartment; +import com.example.rhizome.app.infra.entity.DepartmentEntity; +import com.example.rhizome.app.infra.repository.DepartmentRepository; + +@Service +@Transactional +public class InsertDepartmentImpl implements InsertDepartment { + + DepartmentRepository departmentRepository; + + @Autowired + public InsertDepartmentImpl(DepartmentRepository departmentRepository) { + this.departmentRepository = departmentRepository; + } + + @Override + public void insert(Department department) { + DepartmentEntity entity = new DepartmentEntity(); + 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/InsertDepartmentController.java b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java new file mode 100644 index 0000000..bb96629 --- /dev/null +++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java @@ -0,0 +1,78 @@ +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 com.example.rhizome.aop.aspect.SessionCheck; +import com.example.rhizome.app.domain.model.Department; +import com.example.rhizome.app.domain.service.InsertDepartment; +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 InsertDepartmentController { + + private final static Logger LOGGER = Logger.getLogger(InsertDepartmentController.class.getName()); + private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; + + HttpSession httpSession; + InsertDepartment insertDepartment; + + @Autowired + public InsertDepartmentController(HttpSession httpSession, InsertDepartment insertDepartment) { + this.httpSession = httpSession; + this.insertDepartment = insertDepartment; + } + + /** + * 部署登録入力画面を表示する + */ + @SessionCheck + @RequestMapping(value = "/insertDepartmentInput", method = {RequestMethod.GET, RequestMethod.POST}) + public String showInsertDepartment(Model model) { + try { + model.addAttribute("departmentForm", new DepartmentForm()); + return "insertDepartmentInput"; + } catch (Exception e) { + httpSession.invalidate(); + e.printStackTrace(); + LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + return TransitionTargetPageNameKeyword.ERROR_HTML; + } + } + + /** + * 部署情報の登録を実行する + */ + @SessionCheck + @PostMapping("/insertDepartmentResult") + public String insertDepartmentResult(@ModelAttribute("departmentForm") DepartmentForm departmentForm, Model model) { + final String INSERT_COMPLETE = "登録しました。"; + + try { + Department department = new Department(null, departmentForm.getNmDepartment()); + insertDepartment.insert(department); + + model.addAttribute(PageReturnAttributeKeyword.MESSAGE_INFO, new MessageForm(INSERT_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 index 2571001..b8bd6e2 100644 --- a/src/main/resources/templates/insertDepartmentInput.html +++ b/src/main/resources/templates/insertDepartmentInput.html @@ -1,10 +1,76 @@ - -
- -