From 0a8dc404c04bec97df16be6c901b0d63f125cd94 Mon Sep 17 00:00:00 2001
From: y-ogawa <26-y-ogawa-tmn@it-college.co.jp>
Date: Wed, 14 Oct 2026 09:31:20 +0900
Subject: [PATCH] =?UTF-8?q?=E6=AE=B5=E9=9A=8E1=E3=81=A7=E3=81=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.classpath | 41 +++++
.gitignore | 1 +
.project | 37 ++++
.settings/.jsdtscope | 13 ++
.settings/org.eclipse.core.resources.prefs | 6 +
.settings/org.eclipse.jdt.core.prefs | 11 ++
.settings/org.eclipse.wst.common.component | 10 +
....eclipse.wst.common.project.facet.core.xml | 7 +
...rg.eclipse.wst.jsdt.ui.superType.container | 1 +
.../org.eclipse.wst.jsdt.ui.superType.name | 1 +
.settings/org.eclipse.wst.validation.prefs | 2 +
.../app/domain/service/SearchDepartment.java | 12 +-
.../service/impl/RegisterDepartmentImpl.java | 34 ++++
.../service/impl/SearchDepartmentImpl.java | 134 ++++++++------
.../InsertDepartmentController.java | 125 +++++++++++++
.../SelectDepartmentController.java | 123 +++++++++++++
.../TransitionTargetPageNameKeyword.java | 153 ++++++++--------
.../form/InsertDepartmentForm.java | 24 +++
.../form/SearchConditionDepartmentForm.java | 43 +++++
.../templates/insertDepartmentConfirm.html | 18 ++
.../templates/insertDepartmentInput.html | 56 ++++++
.../templates/insertDepartmentResult.html | 18 ++
src/main/resources/templates/menu.html | 173 ++++++++++--------
.../resources/templates/selectDepartment.html | 107 +++++++++++
24 files changed, 934 insertions(+), 216 deletions(-)
create mode 100644 .classpath
create mode 100644 .gitignore
create mode 100644 .project
create mode 100644 .settings/.jsdtscope
create mode 100644 .settings/org.eclipse.core.resources.prefs
create mode 100644 .settings/org.eclipse.jdt.core.prefs
create mode 100644 .settings/org.eclipse.wst.common.component
create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml
create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container
create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name
create mode 100644 .settings/org.eclipse.wst.validation.prefs
create mode 100644 src/main/java/com/example/rhizome/app/domain/service/impl/RegisterDepartmentImpl.java
create mode 100644 src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java
create mode 100644 src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
create mode 100644 src/main/java/com/example/rhizome/app/presentation/form/InsertDepartmentForm.java
create mode 100644 src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java
create mode 100644 src/main/resources/templates/insertDepartmentConfirm.html
create mode 100644 src/main/resources/templates/insertDepartmentInput.html
create mode 100644 src/main/resources/templates/insertDepartmentResult.html
create mode 100644 src/main/resources/templates/selectDepartment.html
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..3122b27
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/.project b/.project
new file mode 100644
index 0000000..8aa533d
--- /dev/null
+++ b/.project
@@ -0,0 +1,37 @@
+
+
+ em-spring
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.wst.common.project.facet.core.builder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+ org.eclipse.wst.validation.validationbuilder
+
+
+
+
+
+ org.eclipse.jem.workbench.JavaEMFNature
+ org.eclipse.wst.common.modulecore.ModuleCoreNature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+ org.eclipse.wst.common.project.facet.core.nature
+ org.eclipse.wst.jsdt.core.jsNature
+
+
diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope
new file mode 100644
index 0000000..e4a0c2d
--- /dev/null
+++ b/.settings/.jsdtscope
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..29abf99
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f9e3458
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..5517781
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..36d3a1f
--- /dev/null
+++ b/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000..04cad8c
--- /dev/null
+++ b/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1
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..8bf6730 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,20 @@
package com.example.rhizome.app.domain.service;
-import com.example.rhizome.app.domain.model.Department;
-import com.example.rhizome.app.domain.model.SearchConditionDepartment;
-
import java.util.List;
+import com.example.rhizome.app.domain.model.Department;
+import com.example.rhizome.app.domain.model.Employee;
+import com.example.rhizome.app.domain.model.LoginUser;
+import com.example.rhizome.app.domain.model.SearchConditionDepartment;
+
public interface SearchDepartment {
List selectAll();
List searchBy(SearchConditionDepartment searchConditionDepartment);
List searchByWithLike(SearchConditionDepartment searchConditionDepartment);
+
+ LoginUser searchLoginUser(String mailAddress);
+
+ Employee searchEmployeeByIdEmployee(Integer idEmployee);
}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/RegisterDepartmentImpl.java b/src/main/java/com/example/rhizome/app/domain/service/impl/RegisterDepartmentImpl.java
new file mode 100644
index 0000000..a26a92d
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/impl/RegisterDepartmentImpl.java
@@ -0,0 +1,34 @@
+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.RegisterDepartment;
+import com.example.rhizome.app.infra.entity.DepartmentEntity;
+import com.example.rhizome.app.infra.repository.DepartmentRepository;
+
+/**
+ * Department テーブルの登録系の機能を集約させるサービスクラスです。
+ */
+@Service
+@Transactional
+public class RegisterDepartmentImpl implements RegisterDepartment {
+
+ DepartmentRepository departmentRepository;
+
+ @Autowired
+ public RegisterDepartmentImpl(DepartmentRepository departmentRepository) {
+ this.departmentRepository = departmentRepository;
+ }
+
+ /**
+ * employee インスタンスの内容を登録する
+ *
+ * @param employee 登録対象のデータ
+ */
+ public void registerDepartment(Department department) {
+ departmentRepository.save(DepartmentEntity.convertFrom(department));
+ }
+}
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..f12f716 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,82 +1,96 @@
package com.example.rhizome.app.domain.service.impl;
+import java.util.List;
-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;
+import com.example.rhizome.app.domain.model.Department;
+import com.example.rhizome.app.domain.model.Employee;
+import com.example.rhizome.app.domain.model.LoginUser;
+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;
/**
- * 部署情報検索系の機能を集約させるサービスクラスです。
+ * Department テーブル検索系の機能を集約させるサービスクラスです。
*/
@Service
@Transactional
public class SearchDepartmentImpl implements SearchDepartment {
+ DepartmentRepository departmentRepository;
- DepartmentRepository departmentRepository;
+ /**
+ * コンストラクタ
+ *
+ * @param departmentRepository DI対象
+ */
+ @Autowired
+ public SearchDepartmentImpl(DepartmentRepository departmentRepository) {
+ this.departmentRepository = departmentRepository;
+ }
- /**
- * コンストラクタ
- *
- * @param departmentRepository DI対象
- */
- @Autowired
- public SearchDepartmentImpl(DepartmentRepository departmentRepository) {
- this.departmentRepository = departmentRepository;
- }
+ /**
+ * 部署情報を全件取得する
+ *
+ * @return 取得した部署情報レコード全件
+ */
+ public List selectAll() {
+ return DepartmentEntity.createDepartmentList(departmentRepository.findAll());
+ }
- /**
- * 部署情報を全件取得する
- *
- * @return 取得した部署情報レコード全件
- */
- public List selectAll() {
- return DepartmentEntity.createDepartmentList(departmentRepository.findAll());
- }
+ /**
+ * searchConditionDepartment の情報を元に Department のレコードを取得
+ *
+ * @param searchConditionDepartment 検索条件
+ * @return 検索結果のレコード
+ */
+ public List searchBy(SearchConditionDepartment searchConditionDepartment) {
+ // 動的に検索条件を絞り込む
+ // Specification は Criteria API の Predicate をラップしたもの
+ return DepartmentEntity
+ .createDepartmentList(
+ departmentRepository.findAll(Specification
+ .where(DepartmentRepository
+ .idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
+ .and(DepartmentRepository
+ .nmDepartmentEqual(searchConditionDepartment.getNmDepartment()))));
- /**
- * searchConditionDepartment の情報を元に Department のレコードを取得
- *
- * @param searchConditionDepartment 検索条件
- * @return 検索結果のレコード
- */
- public List searchBy(SearchConditionDepartment searchConditionDepartment) {
- // 動的に検索条件を絞り込む
- // Specification は Criteria API の Predicate をラップしたもの
- return DepartmentEntity
- .createDepartmentList(
- departmentRepository.findAll(Specification
- .where(DepartmentRepository.idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
- .and(DepartmentRepository.nmDepartmentEqual(searchConditionDepartment.getNmDepartment()))
- )
- );
+ }
- }
+ /**
+ * searchConditionDepartment の情報を元に Department のレコードを取得
+ * 部分一致検索
+ *
+ * @param searchConditionDepartment 検索条件
+ * @return 検索結果のレコード
+ */
+ public List searchByWithLike(SearchConditionDepartment searchConditionDepartment) {
+ // 動的に検索条件を絞り込む
+ // Specification は Criteria API の Predicate をラップしたもの
+ return DepartmentEntity
+ .createDepartmentList(
+ departmentRepository.findAll(Specification
+ .where(DepartmentRepository
+ .idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
+ .and(DepartmentRepository
+ .nmDepartmentLike(searchConditionDepartment.getNmDepartment()))));
- /**
- * searchConditionDepartment の情報を元に Department のレコードを取得
- * 部分一致検索
- *
- * @param searchConditionDepartment 検索条件
- * @return 検索結果のレコード
- */
- public List searchByWithLike(SearchConditionDepartment searchConditionDepartment) {
- // 動的に検索条件を絞り込む
- // Specification は Criteria API の Predicate をラップしたもの
- return DepartmentEntity
- .createDepartmentList(
- departmentRepository.findAll(Specification
- .where(DepartmentRepository.idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
- .and(DepartmentRepository.nmDepartmentLike(searchConditionDepartment.getNmDepartment()))
- )
- );
+ }
+
+ @Override
+ public LoginUser searchLoginUser(String mailAddress) {
+ // TODO 自動生成されたメソッド・スタブ
+ return null;
+ }
+
+ @Override
+ public Employee searchEmployeeByIdEmployee(Integer idEmployee) {
+ // TODO 自動生成されたメソッド・スタブ
+ return null;
+ }
- }
}
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..447b927
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java
@@ -0,0 +1,125 @@
+package com.example.rhizome.app.presentation.controller;
+
+import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*;
+
+import java.util.ArrayList;
+import java.util.List;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.example.rhizome.app.domain.service.RegisterDepartment;
+import com.example.rhizome.app.domain.service.SearchDepartment;
+import com.example.rhizome.app.domain.service.impl.RegisterDepartmentImpl;
+import com.example.rhizome.app.domain.service.impl.SearchDepartmentImpl;
+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.InsertDepartmentForm;
+import com.example.rhizome.app.presentation.form.MessageForm;
+
+@Controller
+public class InsertDepartmentController {
+
+ // ログ出力用インスタンス
+ private final static Logger LOGGER = Logger.getLogger(InsertEmployeeController.class.getName());
+
+ // エラーメッセージ用の定数フィールド
+ private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
+
+ HttpSession httpSession;
+ RegisterDepartment registerDepartment;
+ SearchDepartment searchDepartment;
+
+ @Autowired
+ public InsertDepartmentController(HttpSession httpSession, RegisterDepartmentImpl registerDepartment,
+ SearchDepartmentImpl searchDepartment) {
+ this.httpSession = httpSession;
+ this.registerDepartment = registerDepartment;
+ this.searchDepartment = searchDepartment;
+ }
+
+ @ModelAttribute
+ public InsertDepartmentForm insertDepartmentForm() {
+ return new InsertDepartmentForm();
+ }
+
+ @RequestMapping(value = INSERT_DEPARTMENT_INPUT, method = RequestMethod.POST)
+ public String insertDepartment(InsertDepartmentForm insertDepartmentForm, Model model) {
+ try {
+ model.addAttribute(
+ PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(
+ searchDepartment.selectAll()));
+ List error2 = validateParameter2(
+ insertDepartmentForm.getIdDepartment(),
+ insertDepartmentForm.getNmDepartment());
+
+ // エラーが1件以上有る場合
+ if (!error2.isEmpty()) {
+ // エラー内容を画面に表示
+ model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR,
+ new MessageForm(String.join(", ", error2) + "が不正です。"));
+ // 登録画面に遷移
+ return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_INPUT_HTML;
+ }
+
+ // 登録処理
+ registerDepartment.registerDepartment(InsertDepartmentForm.convertToo(insertDepartmentForm));
+ // 登録結果画面に遷移
+ return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_RESULT_HTML;
+
+ } catch (Exception e) {
+ // ログイン情報の破棄
+ httpSession.invalidate();
+
+ e.printStackTrace();
+
+ // エラーログ出力
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ // エラー画面遷移
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+ }
+
+ private List validateParameter2(
+
+ Integer departmentId,
+ String departmentNm) {
+
+ final String DEPARTMENT_ID_NULL_BLANK = "所属部署";
+ final String DEPARTMENT_NAME_NULL_BLANK = "部署名";
+
+ List error2 = new ArrayList<>();
+
+ // null or 空文字判定
+ if (departmentId == null) {
+ // エラー内容を追加
+ error2.add(DEPARTMENT_ID_NULL_BLANK);
+ }
+
+ // null or 空文字判定
+ if (isNullOrBlank(departmentNm)) {
+ // エラー内容を追加
+ error2.add(DEPARTMENT_NAME_NULL_BLANK);
+ }
+
+ return error2;
+ }
+
+ private static boolean isNullOrBlank(String str) {
+ if (null == str) {
+ return true;
+ }
+
+ return str.isBlank();
+ }
+}
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
new file mode 100644
index 0000000..c5c39f5
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
@@ -0,0 +1,123 @@
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.example.rhizome.aop.aspect.PermissionCheck;
+import com.example.rhizome.aop.aspect.SessionCheck;
+import com.example.rhizome.app.domain.service.SearchDepartment;
+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.SearchConditionDepartmentForm;
+
+@Controller
+
+public class SelectDepartmentController {
+
+ // ログ出力用インスタンス
+ private final static Logger LOGGER = Logger.getLogger(SelectDepartmentController.class.getName());
+ // エラーメッセージ用の定数フィールド
+ private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
+
+ HttpSession httpSession;
+ SearchDepartment searchDepartment;
+
+ @Autowired
+ public SelectDepartmentController(HttpSession httpSession, SearchDepartment searchDepartment) {
+ this.httpSession = httpSession;
+ this.searchDepartment = searchDepartment;
+ }
+
+ @ModelAttribute
+ public SearchConditionDepartmentForm searchConditionDepartmentForm() {
+ return new SearchConditionDepartmentForm();
+ }
+
+ /**
+ * 部署検索画面表示処理コントローラ
+ *
+ * @param searchConditionEmployeeForm 検索画面のフォーム
+ * @param model ビューにデータを渡すためのコンテナ
+ * @return 遷移先の画面
+ */
+ @PermissionCheck
+ @SessionCheck
+ @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT, method = RequestMethod.POST)
+ public String select(SearchConditionDepartmentForm searchConditionDepartmentForm, Model model) {
+
+ try {
+
+ // 部署一覧を取得し、画面に返す用のクラスに詰め替える
+ // 作成した部署一覧をセット
+ model.addAttribute(
+ PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(searchDepartment.selectAll()));
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentForm.convertFrom(
+ searchDepartment.searchBy(SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm))));
+ //部分一致検索
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(
+ searchDepartment.searchByWithLike(
+ SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm))));
+
+ // 検索ページに遷移
+ return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
+
+ } catch (Exception e) {
+ // ログイン情報の破棄
+ httpSession.invalidate();
+
+ e.printStackTrace();
+
+ // エラーログ出力
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ // エラー画面遷移
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+
+ }
+
+ /**
+ * 部署検索画面表示処理コントローラ
+ * 検索条件無しの状態を作るため、空の検索条件で検索した結果を画面に返す
+ *
+ * @param model ビューにデータを渡すためのコンテナ
+ * @return 遷移先の画面
+ */
+ @PermissionCheck
+ @SessionCheck
+ @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_FORM_EMPTY, method = RequestMethod.POST)
+ public String select(Model model) {
+
+ // 部署一覧を取得し、画面に返す用のクラスに詰め替える
+ // 作成した部署一覧をセット
+ model.addAttribute(
+ PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(searchDepartment.selectAll()));
+
+ // 検索条件を元に検索を実施
+// model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+// DepartmentForm.convertFrom(
+// searchDepartment.searchBy(
+// SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm()))));
+
+ //部分一致検索
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(
+ searchDepartment.searchByWithLike(
+ SearchConditionDepartmentForm.convertTo(searchConditionDepartmentForm()))));
+ // 検索ページに遷移
+ return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
+ }
+
+}
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java
index 90ded96..7bd846a 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/TransitionTargetPageNameKeyword.java
@@ -7,87 +7,96 @@ import java.util.Set;
*/
public class TransitionTargetPageNameKeyword {
- // 共通
- public static final String LOGIN_HTML = "login";
+ // 共通
+ public static final String LOGIN_HTML = "login";
- // 一般向け
- public static final String UPDATE_PERSONAL_EMPLOYEE_INPUT_HTML = "updatePersonalEmployeeInput";
- public static final String UPDATE_PERSONAL_RESULT_HTML = "updatePersonalEmployeeResult";
+ // 一般向け
+ public static final String UPDATE_PERSONAL_EMPLOYEE_INPUT_HTML = "updatePersonalEmployeeInput";
+ public static final String UPDATE_PERSONAL_RESULT_HTML = "updatePersonalEmployeeResult";
- // 管理者向け
- public static final String MENU_HTML = "menu";
- public static final String SELECT_EMPLOYEE_HTML = "selectEmployee";
- public static final String INSERT_EMPLOYEE_INPUT_HTML = "insertEmployeeInput";
- public static final String INSERT_EMPLOYEE_CONFIRM_HTML = "insertEmployeeConfirm";
- public static final String INSERT_EMPLOYEE_RESULT_HTML = "insertEmployeeResult";
- public static final String UPDATE_EMPLOYEE_INPUT_HTML = "updateEmployeeInput";
+ // 管理者向け
+ public static final String MENU_HTML = "menu";
+ public static final String SELECT_EMPLOYEE_HTML = "selectEmployee";
+ public static final String INSERT_EMPLOYEE_INPUT_HTML = "insertEmployeeInput";
+ public static final String INSERT_EMPLOYEE_CONFIRM_HTML = "insertEmployeeConfirm";
+ public static final String INSERT_EMPLOYEE_RESULT_HTML = "insertEmployeeResult";
+ public static final String UPDATE_EMPLOYEE_INPUT_HTML = "updateEmployeeInput";
- public static final String ERROR_HTML = "error";
+ public static final String ERROR_HTML = "error";
- // 共通(Controller)
- public static final String INDEX_BLANK = "";
- public static final String INDEX_SLASH = "/";
- public static final String INDEX_LOGIN = "/login";
- public static final String LOGOUT = "/logout";
- public static final String DO_LOGIN = "/doLogin";
+ // 共通(Controller)
+ public static final String INDEX_BLANK = "";
+ public static final String INDEX_SLASH = "/";
+ public static final String INDEX_LOGIN = "/login";
+ public static final String LOGOUT = "/logout";
+ public static final String DO_LOGIN = "/doLogin";
- // 一般向け(Controller)
- public static final String PERSONAL_UPDATE_RESULT = "/updatePersonalEmployeeResult";
+ // 一般向け(Controller)
+ public static final String PERSONAL_UPDATE_RESULT = "/updatePersonalEmployeeResult";
- // 管理者向け(Controller)
- public static final String DELETE_EMPLOYEE = "/deleteEmployee";
- public static final String INSERT_EMPLOYEE_INPUT = "/insertEmployeeInput";
- public static final String INSERT_EMPLOYEE_CONFIRM = "/insertEmployeeConfirm";
- public static final String INSERT_EMPLOYEE = "/insertEmployee";
- public static final String SHOW_MENU = "/showMenu";
- public static final String SELECT_EMPLOYEE_INFO = "/selectEmployeeInfo";
- public static final String SELECT_EMPLOYEE_INFO_FORM_EMPTY = "/selectAll";
- public static final String SHOW_UPDATE_EMPLOYEE = "/showUpdateEmployee";
- public static final String UPDATE_EMPLOYEE_RESULT = "/updateEmployeeResult";
+ // 管理者向け(Controller)
+ public static final String DELETE_EMPLOYEE = "/deleteEmployee";
+ public static final String INSERT_EMPLOYEE_INPUT = "/insertEmployeeInput";
+ public static final String INSERT_EMPLOYEE_CONFIRM = "/insertEmployeeConfirm";
+ public static final String INSERT_EMPLOYEE = "/insertEmployee";
+ public static final String SHOW_MENU = "/showMenu";
+ public static final String SELECT_EMPLOYEE_INFO = "/selectEmployeeInfo";
+ public static final String SELECT_EMPLOYEE_INFO_FORM_EMPTY = "/selectAll";
+ public static final String SHOW_UPDATE_EMPLOYEE = "/showUpdateEmployee";
+ public static final String UPDATE_EMPLOYEE_RESULT = "/updateEmployeeResult";
- // Department
- // HTML
- // Controller
+ // Department
+ // HTML
+ public static final String SELECT_DEPARTMENT_HTML = "selectDepartment";
+ public static final String INSERT_DEPARTMENT_INPUT_HTML = "insertDepartmentInput";
+ public static final String INSERT_DEPARTMENT_CONFIRM_HTML = "insertDepartmentConfirm";
+ public static final String INSERT_DEPARTMENT_RESULT_HTML = "insertDepartmentResult";
- /**
- * 管理者向けのページリストを返す
- *
- * @return 管理者向けのページリスト
- */
- public static Set getAdminPageList() {
+ // Controller
+ public static final String SELECT_DEPARTMENT = "/selectDepartment";
+ public static final String SELECT_DEPARTMENT_FORM_EMPTY = "/selectAll2";
+ public static final String INSERT_DEPARTMENT_INPUT = "/insertDepartmentInput";
- return Set.of(
- INDEX_BLANK,
- INDEX_SLASH,
- INDEX_LOGIN,
- LOGOUT,
- DO_LOGIN,
- DELETE_EMPLOYEE,
- INSERT_EMPLOYEE_INPUT,
- INSERT_EMPLOYEE_CONFIRM,
- INSERT_EMPLOYEE,
- SHOW_MENU,
- SELECT_EMPLOYEE_INFO,
- SELECT_EMPLOYEE_INFO_FORM_EMPTY,
- SHOW_UPDATE_EMPLOYEE,
- UPDATE_EMPLOYEE_RESULT
- );
- }
+ /**
+ * 管理者向けのページリストを返す
+ *
+ * @return 管理者向けのページリスト
+ */
+ public static Set getAdminPageList() {
- /**
- * 一般向けのページリストを返す
- *
- * @return 一般向けのページリスト
- */
- public static Set getUserPageList() {
- return Set.of(
- INDEX_BLANK,
- INDEX_SLASH,
- INDEX_LOGIN,
- LOGOUT,
- DO_LOGIN,
- PERSONAL_UPDATE_RESULT
- );
- }
+ return Set.of(
+ INDEX_BLANK,
+ INDEX_SLASH,
+ INDEX_LOGIN,
+ LOGOUT,
+ DO_LOGIN,
+ DELETE_EMPLOYEE,
+ INSERT_EMPLOYEE_INPUT,
+ INSERT_EMPLOYEE_CONFIRM,
+ INSERT_EMPLOYEE,
+ SHOW_MENU,
+ SELECT_EMPLOYEE_INFO,
+ SELECT_EMPLOYEE_INFO_FORM_EMPTY,
+ SHOW_UPDATE_EMPLOYEE,
+ UPDATE_EMPLOYEE_RESULT,
+ SELECT_DEPARTMENT,
+ SELECT_DEPARTMENT_FORM_EMPTY,
+ INSERT_DEPARTMENT_INPUT);
+ }
+
+ /**
+ * 一般向けのページリストを返す
+ *
+ * @return 一般向けのページリスト
+ */
+ public static Set getUserPageList() {
+ return Set.of(
+ INDEX_BLANK,
+ INDEX_SLASH,
+ INDEX_LOGIN,
+ LOGOUT,
+ DO_LOGIN,
+ PERSONAL_UPDATE_RESULT);
+ }
}
diff --git a/src/main/java/com/example/rhizome/app/presentation/form/InsertDepartmentForm.java b/src/main/java/com/example/rhizome/app/presentation/form/InsertDepartmentForm.java
new file mode 100644
index 0000000..d97a7d7
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/form/InsertDepartmentForm.java
@@ -0,0 +1,24 @@
+package com.example.rhizome.app.presentation.form;
+
+import com.example.rhizome.app.domain.model.Department;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class InsertDepartmentForm {
+ private String nmEmployee;
+
+ private Integer idDepartment;
+
+ private String nmDepartment;
+
+ public static Department convertToo(InsertDepartmentForm insertDepartmentForm) {
+ return new Department(
+ insertDepartmentForm.getIdDepartment(),
+ insertDepartmentForm.getNmDepartment());
+ }
+}
diff --git a/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java
new file mode 100644
index 0000000..12e03a8
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java
@@ -0,0 +1,43 @@
+package com.example.rhizome.app.presentation.form;
+
+import com.example.rhizome.app.domain.model.SearchConditionDepartment;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SearchConditionDepartmentForm {
+ /**
+ * 部署ID
+ */
+ private Integer idDepartment;
+
+ /**
+ * 部署名
+ */
+ private String nmDepartment;
+
+ public static SearchConditionDepartmentForm convertFrom(SearchConditionDepartment searchConditionDepartment) {
+ return new SearchConditionDepartmentForm(
+ searchConditionDepartment.getIdDepartment(),
+ searchConditionDepartment.getNmDepartment()
+ );
+ }
+
+ /**
+ * 画面用(presentation 層)の SearchConditionEmployeeForm クラスから business 層の SearchConditionEmployee クラスに
+ * 変換します。
+ *
+ * @param searchConditionEmployeeForm 画面用(presentation 層)の SearchConditionEmployeeForm インスタンス
+ * @return business 層の SearchConditionEmployee インスタンス
+ */
+ public static SearchConditionDepartment convertTo(SearchConditionDepartmentForm searchConditionDepartmentForm) {
+ return new SearchConditionDepartment(
+ searchConditionDepartmentForm.getIdDepartment(),
+ searchConditionDepartmentForm.getNmDepartment()
+ );
+ }
+}
diff --git a/src/main/resources/templates/insertDepartmentConfirm.html b/src/main/resources/templates/insertDepartmentConfirm.html
new file mode 100644
index 0000000..1d0c1b1
--- /dev/null
+++ b/src/main/resources/templates/insertDepartmentConfirm.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+ 登録内容確認
+
+
+
+
+
+
+
\ 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..c38becc
--- /dev/null
+++ b/src/main/resources/templates/insertDepartmentInput.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+ 部署登録
+
+
+
+
+ 部署登録
+
+ ログイン者名:
+
+
+
+
+ メニューに戻る
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/insertDepartmentResult.html b/src/main/resources/templates/insertDepartmentResult.html
new file mode 100644
index 0000000..63b42ad
--- /dev/null
+++ b/src/main/resources/templates/insertDepartmentResult.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+ 部署登録完了
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/menu.html b/src/main/resources/templates/menu.html
index 6d0ee4a..bb933c0 100644
--- a/src/main/resources/templates/menu.html
+++ b/src/main/resources/templates/menu.html
@@ -3,115 +3,126 @@
-
-
-
-
-
-
- メニュー
+
+
+
+
+
+
+ メニュー
-
- メインメニュー
-
- ログイン者名:
-
-
-
-