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..0f63015
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/target/
+/bin/
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/model/DepartmentInfo.java b/src/main/java/com/example/rhizome/app/domain/model/DepartmentInfo.java
new file mode 100644
index 0000000..8c33410
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/model/DepartmentInfo.java
@@ -0,0 +1,25 @@
+package com.example.rhizome.app.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+//コピペのみ、部署用に修正必要
+
+/**
+ * 部署情報の概念を表現するモデルクラスです。
+ */
+
+@Getter
+@AllArgsConstructor
+
+public class DepartmentInfo {
+ /**
+ * 社員情報
+ */
+ private final Employee employee;
+ /**
+ * 部署名
+ */
+ private final Department department;
+
+}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentInfo.java b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentInfo.java
new file mode 100644
index 0000000..1faeca8
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentInfo.java
@@ -0,0 +1,12 @@
+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;
+
+public interface SearchDepartmentInfo {
+ List selectAll();
+
+ List searchBy(SearchConditionDepartment searchConditionDepartment);
+}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentInfoImpl.java b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentInfoImpl.java
new file mode 100644
index 0000000..a315721
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchDepartmentInfoImpl.java
@@ -0,0 +1,59 @@
+package com.example.rhizome.app.domain.service.impl;
+
+import java.util.List;
+
+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.model.SearchConditionDepartment;
+import com.example.rhizome.app.infra.repository.DepartmentInfoRepository;
+
+/**
+ * SearchDepartmentInfoImpl (employee join department) 検索系の機能を集約させるサービスクラスです
+ */
+@Service
+@Transactional
+public class SearchDepartmentInfoImpl implements SearchDepartmentInfo {
+
+ DepartmentInfoRepository departmentInfoRepository;
+
+ @Autowired
+ public SearchDepartmentInfoImpl(DepartmentInfoRepository departmentInfoRepository) {
+ this.departmentInfoRepository = departmentInfoRepository;
+ }
+
+ /**
+ * DepartmentInfo (employee join department) のレコードを全件取得
+ *
+ * @return 取得したレコード全件
+ */
+ public List selectAll() {
+
+ return null;//EmployeeDepartmentEntity.createDepartmentInfoList(departmentInfoRepository.findAll());
+
+ }
+
+ /**
+ * SearchConditionDepartment の情報を元に DepartmentInfo (employee join department) のレコードを取得
+ *
+ * @param searchConditionDepartment 検索条件
+ * @return 検索結果のレコードリスト
+ */
+ public List searchBy(SearchConditionDepartment searchConditionDepartment) {
+ // 動的に検索条件を絞り込む
+ // Specification は Criteria API の Predicate をラップしたもの
+ return null;
+// EmployeeDepartmentEntity
+// .createDepartmentInfoList(
+// departmentInfoRepository.findAll(Specification
+// .where(EmployeeInfoRepository
+// .idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
+// .and(EmployeeInfoRepository
+// .idDepartmentEqual(searchConditionDepartment.getNmDepartment()))
+//
+// ));
+
+ }
+}
diff --git a/src/main/java/com/example/rhizome/app/domain/service/impl/SearchEmployeeInfoImpl.java b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchEmployeeInfoImpl.java
index 09763c9..3622716 100644
--- a/src/main/java/com/example/rhizome/app/domain/service/impl/SearchEmployeeInfoImpl.java
+++ b/src/main/java/com/example/rhizome/app/domain/service/impl/SearchEmployeeInfoImpl.java
@@ -1,16 +1,17 @@
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.EmployeeInfo;
import com.example.rhizome.app.domain.model.SearchConditionEmployee;
import com.example.rhizome.app.domain.service.SearchEmployeeInfo;
import com.example.rhizome.app.infra.entity.EmployeeDepartmentEntity;
import com.example.rhizome.app.infra.repository.EmployeeInfoRepository;
-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;
/**
* SearchEmployeeInfoImpl (employee join department) 検索系の機能を集約させるサービスクラスです
diff --git a/src/main/java/com/example/rhizome/app/infra/entity/EmployeeDepartmentEntity.java b/src/main/java/com/example/rhizome/app/infra/entity/EmployeeDepartmentEntity.java
index 989d2cc..abc27b7 100644
--- a/src/main/java/com/example/rhizome/app/infra/entity/EmployeeDepartmentEntity.java
+++ b/src/main/java/com/example/rhizome/app/infra/entity/EmployeeDepartmentEntity.java
@@ -1,16 +1,28 @@
package com.example.rhizome.app.infra.entity;
-import com.example.rhizome.app.domain.model.Department;
-import com.example.rhizome.app.domain.model.Employee;
-import com.example.rhizome.app.domain.model.EmployeeInfo;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedEntityGraph;
+import javax.persistence.Table;
+
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
-import javax.persistence.*;
-import java.util.List;
+import com.example.rhizome.app.domain.model.Department;
+import com.example.rhizome.app.domain.model.DepartmentInfo;
+import com.example.rhizome.app.domain.model.Employee;
+import com.example.rhizome.app.domain.model.EmployeeInfo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* Employee + Department の Join 情報を保持するEntity
@@ -114,5 +126,10 @@ public class EmployeeDepartmentEntity {
}
+ public static List createDepartmentInfoList(List all) {
+ // TODO 自動生成されたメソッド・スタブ
+ return null;
+ }
+
}
diff --git a/src/main/java/com/example/rhizome/app/infra/repository/DepartmentInfoRepository.java b/src/main/java/com/example/rhizome/app/infra/repository/DepartmentInfoRepository.java
new file mode 100644
index 0000000..02d6a6f
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/infra/repository/DepartmentInfoRepository.java
@@ -0,0 +1,28 @@
+package com.example.rhizome.app.infra.repository;
+
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import com.example.rhizome.app.infra.entity.EmployeeDepartmentEntity;
+
+@Repository
+public interface DepartmentInfoRepository
+ extends JpaRepository, JpaSpecificationExecutor {
+ static Specification idDepartmentEqual(Integer idDepartment) {
+ return idDepartment == null ? null :
+ // 戻り値の型 Specification にキャスト
+ (Specification)
+ // ラムダ式で記載しているが書いてあることは criteriaBuilder を使って Where句の後の "'idDepartment' = idDepartment(変数)"
+ // を作成している
+ (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get("idDepartment"), idDepartment);
+ }
+
+ static Specification nmDepartmentEqual(String nmDepartment) {
+ return (nmDepartment == null || nmDepartment.isEmpty()) ? null
+ : (Specification) (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder
+ .like(root.get("nmDepartment"), "%" + nmDepartment + "%");
+ }
+
+}
diff --git a/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java b/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java
index c2c8c5c..10b6170 100644
--- a/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java
+++ b/src/main/java/com/example/rhizome/app/infra/repository/EmployeeInfoRepository.java
@@ -1,11 +1,12 @@
package com.example.rhizome.app.infra.repository;
-import com.example.rhizome.app.infra.entity.EmployeeDepartmentEntity;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
+import com.example.rhizome.app.infra.entity.EmployeeDepartmentEntity;
+
/**
* ワンポイント情報(ここで登場する関数型インターフェース Specification について解説します)
* Specification:
@@ -53,9 +54,9 @@ public interface EmployeeInfoRepository extends JpaRepository criteriaBuilder.like(root.get("mailAddress"), "%" + mailAddress + "%");
}
- static Specification idDepartmentEqual(Integer idDepartment) {
+ static Specification idDepartmentEqual(Integer integer) {
return (root, query, criteriaBuilder) ->
- idDepartment == null ? null :
- criteriaBuilder.equal(root.join("department").get("idDepartment"), idDepartment);
+ integer == null ? null :
+ criteriaBuilder.equal(root.join("department").get("idDepartment"), integer);
}
}
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/DeleteEmployeeController.java b/src/main/java/com/example/rhizome/app/presentation/controller/DeleteEmployeeController.java
index 07982f7..ba56144 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/DeleteEmployeeController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/DeleteEmployeeController.java
@@ -9,7 +9,7 @@ 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.SessionKeyword;
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
-import com.example.rhizome.app.presentation.form.DepartmentForm;
+import com.example.rhizome.app.presentation.form.DepartmentInfoForm;
import com.example.rhizome.app.presentation.form.LoginUserForm;
import com.example.rhizome.app.presentation.form.MessageForm;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,7 +66,7 @@ public class DeleteEmployeeController {
// 作成した部署一覧をセット
model.addAttribute(
PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
- DepartmentForm.convertFrom(searchDepartment.selectAll())
+ DepartmentInfoForm.convertFrom(searchDepartment.selectAll())
);
// 削除処理実施
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java b/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java
index 4cdf8d1..f21f230 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeConfirmController.java
@@ -9,7 +9,7 @@ import com.example.rhizome.app.domain.service.impl.SearchDepartmentImpl;
import com.example.rhizome.app.domain.service.impl.SearchEmployeeImpl;
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.DepartmentInfoForm;
import com.example.rhizome.app.presentation.form.InsertEmployeeForm;
import com.example.rhizome.app.presentation.form.MessageForm;
import org.springframework.beans.factory.annotation.Autowired;
@@ -75,7 +75,7 @@ public class InsertEmployeeConfirmController {
// 作成した部署一覧をセット
model.addAttribute(
PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
- DepartmentForm.convertFrom(
+ DepartmentInfoForm.convertFrom(
searchDepartment.selectAll()
));
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java b/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java
index a532295..456cab6 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeController.java
@@ -8,7 +8,7 @@ import com.example.rhizome.app.domain.service.impl.RegisterEmployeeImpl;
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.DepartmentInfoForm;
import com.example.rhizome.app.presentation.form.InsertEmployeeForm;
import com.example.rhizome.app.presentation.form.MessageForm;
import org.springframework.beans.factory.annotation.Autowired;
@@ -71,7 +71,7 @@ public class InsertEmployeeController {
// 作成した部署一覧をセット
model.addAttribute(
PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
- DepartmentForm.convertFrom(
+ DepartmentInfoForm.convertFrom(
searchDepartment.selectAll()
));
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java b/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java
index fab6082..a79b7b9 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertEmployeeInputController.java
@@ -6,7 +6,7 @@ import com.example.rhizome.app.domain.service.RegisterEmployee;
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.DepartmentInfoForm;
import com.example.rhizome.app.presentation.form.InsertEmployeeForm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -64,7 +64,7 @@ public class InsertEmployeeInputController {
try {
// 部署コードリストを作成し、画面に返す値としてセット
- model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentForm.convertFrom(searchDepartment.selectAll()));
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentInfoForm.convertFrom(searchDepartment.selectAll()));
// パラメータをセット
model.addAttribute(PageReturnAttributeKeyword.INSERT_EMPLOYEE_FORM, insertEmployeeForm);
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..effc20b
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
@@ -0,0 +1,65 @@
+package com.example.rhizome.app.presentation.controller;
+
+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.model.Department;
+import com.example.rhizome.app.domain.model.SearchConditionDepartment;
+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.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;
+ }
+
+ /** 空の検索条件Formを、この Controller の画面用に用意する */
+ @ModelAttribute
+ public SearchConditionDepartmentForm searchConditionDepartmentForm() {
+ return new SearchConditionDepartmentForm();
+ }
+
+ @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT, method = RequestMethod.POST)
+ public String select(SearchConditionDepartmentForm searchConditionDepartmentForm, Model model) {
+ try {
+ // ★考える:①検索サービスを呼ぶ(Form→Model変換 → 部分一致のメソッド)
+ // ②結果(List)を DepartmentForm.convertFrom(...) で画面用に変換
+ // ③ model に PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST という名前で載せる
+ SearchConditionDepartment searchCondition = new SearchConditionDepartment(
+ searchConditionDepartmentForm.getIdDepartment(),
+ searchConditionDepartmentForm.getNmDepartment());
+ List departmentList = searchDepartment.searchByWithLike(searchCondition);
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, departmentList);
+
+ return TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_HTML;
+
+ } 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/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java b/src/main/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java
index fa41f62..2366800 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectEmployeeController.java
@@ -1,24 +1,27 @@
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.PermissionCheck;
import com.example.rhizome.aop.aspect.SessionCheck;
import com.example.rhizome.app.domain.service.SearchDepartment;
import com.example.rhizome.app.domain.service.SearchEmployeeInfo;
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.DepartmentInfoForm;
import com.example.rhizome.app.presentation.form.EmployeeInfoForm;
import com.example.rhizome.app.presentation.form.SearchConditionEmployeeForm;
-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 javax.servlet.http.HttpSession;
-import java.util.logging.Level;
-import java.util.logging.Logger;
/**
* 社員検索画面用コントローラ リスト全件表示、検索表示、更新、削除が可能
@@ -56,7 +59,7 @@ public class SelectEmployeeController {
*/
@PermissionCheck
@SessionCheck
- @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_EMPLOYEE_INFO, method = RequestMethod.POST)
+ @PostMapping(TransitionTargetPageNameKeyword.SELECT_EMPLOYEE_INFO)
public String select(SearchConditionEmployeeForm searchConditionEmployeeForm, Model model) {
try {
@@ -65,7 +68,7 @@ public class SelectEmployeeController {
// 作成した部署一覧をセット
model.addAttribute(
PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
- DepartmentForm.convertFrom(searchDepartment.selectAll())
+ DepartmentInfoForm.convertFrom(searchDepartment.selectAll())
);
// 検索条件を元に検索を実施
@@ -105,7 +108,7 @@ public class SelectEmployeeController {
// 作成した部署一覧をセット
model.addAttribute(
PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
- DepartmentForm.convertFrom(searchDepartment.selectAll())
+ DepartmentInfoForm.convertFrom(searchDepartment.selectAll())
);
// 検索条件を元に検索を実施
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeController.java b/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeController.java
index 1b43d74..521bc18 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeController.java
@@ -8,7 +8,7 @@ import com.example.rhizome.app.domain.service.SearchDepartment;
import com.example.rhizome.app.domain.service.SearchEmployeeInfo;
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.DepartmentInfoForm;
import com.example.rhizome.app.presentation.form.MessageForm;
import com.example.rhizome.app.presentation.form.SearchConditionEmployeeForm;
import com.example.rhizome.app.presentation.form.UpdateEmployeeInfoForm;
@@ -67,7 +67,7 @@ public class UpdateEmployeeController {
try {
// 部署一覧を取得し画面に返す値としてセット
- model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentForm.convertFrom(searchDepartment.selectAll()));
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentInfoForm.convertFrom(searchDepartment.selectAll()));
// id を条件に更新対象のレコードを検索、取得する
List employeeInfoList = searchEmployeeInfo.searchBy(
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeResultController.java b/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeResultController.java
index 7f0066c..fea33cb 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeResultController.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/UpdateEmployeeResultController.java
@@ -11,7 +11,7 @@ import com.example.rhizome.app.domain.service.UpdateEmployee;
import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword;
import com.example.rhizome.app.presentation.controller.pageproperty.SessionKeyword;
import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword;
-import com.example.rhizome.app.presentation.form.DepartmentForm;
+import com.example.rhizome.app.presentation.form.DepartmentInfoForm;
import com.example.rhizome.app.presentation.form.LoginUserForm;
import com.example.rhizome.app.presentation.form.MessageForm;
import com.example.rhizome.app.presentation.form.UpdateEmployeeInfoForm;
@@ -91,7 +91,7 @@ public class UpdateEmployeeResultController {
try {
// 部署一覧取得
- model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentForm.convertFrom(searchDepartment.selectAll()));
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentInfoForm.convertFrom(searchDepartment.selectAll()));
// パスワードが仕様を満たしているか確認
String error = UpdateEmployeeInfoForm.validatePassword(
diff --git a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java
index 5e9ec04..266a836 100644
--- a/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/pageproperty/PageReturnAttributeKeyword.java
@@ -5,14 +5,15 @@ package com.example.rhizome.app.presentation.controller.pageproperty;
*/
public class PageReturnAttributeKeyword {
- public static final String MESSAGE_ERROR = "messageError";
- public static final String MESSAGE_INFO = "messageInfo";
-
- public static final String DEPARTMENT_FORM_LIST = "departmentFormList";
- public static final String UPDATE_EMPLOYEE_INFO_FORM = "updateEmployeeInfoForm";
- public static final String INSERT_EMPLOYEE_FORM = "insertEmployeeForm";
- public static final String LOGIN_INFO_FORM = "loginInfoForm";
- public static final String UPDATE_PERSONAL_EMPLOYEE_USER_FORM = "updatePersonalEmployeeUserForm";
- public static final String EMPLOYEE_INFO_FORM_LIST = "employeeInfoFormList";
+ public static final String MESSAGE_ERROR = "messageError";
+ public static final String MESSAGE_INFO = "messageInfo";
+ public static final String DEPARTMENT_FORM_LIST = "departmentFormList";
+ public static final String UPDATE_EMPLOYEE_INFO_FORM = "updateEmployeeInfoForm";
+ public static final String INSERT_EMPLOYEE_FORM = "insertEmployeeForm";
+ public static final String LOGIN_INFO_FORM = "loginInfoForm";
+ public static final String UPDATE_PERSONAL_EMPLOYEE_USER_FORM = "updatePersonalEmployeeUserForm";
+ public static final String EMPLOYEE_INFO_FORM_LIST = "employeeInfoFormList";
+ //追加
+ public static final String DEPARTMENT_INFO_FORM_LIST = "departmentInfoFormList";
}
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..68eae5d 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,87 @@ 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";
+ // Controller
+ public static final String SELECT_DEPARTMENT = "/selectDepartment";
- /**
- * 管理者向けのページリストを返す
- *
- * @return 管理者向けのページリスト
- */
- public static Set getAdminPageList() {
+ /**
+ * 管理者向けのページリストを返す
+ *
+ * @return 管理者向けのページリスト
+ */
+ public static Set getAdminPageList() {
- 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 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 getUserPageList() {
- return Set.of(
- INDEX_BLANK,
- INDEX_SLASH,
- INDEX_LOGIN,
- LOGOUT,
- DO_LOGIN,
- PERSONAL_UPDATE_RESULT
- );
- }
+ /**
+ * 一般向けのページリストを返す
+ *
+ * @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/DepartmentForm.java b/src/main/java/com/example/rhizome/app/presentation/form/DepartmentInfoForm.java
similarity index 74%
rename from src/main/java/com/example/rhizome/app/presentation/form/DepartmentForm.java
rename to src/main/java/com/example/rhizome/app/presentation/form/DepartmentInfoForm.java
index 6648423..215eb08 100644
--- a/src/main/java/com/example/rhizome/app/presentation/form/DepartmentForm.java
+++ b/src/main/java/com/example/rhizome/app/presentation/form/DepartmentInfoForm.java
@@ -13,7 +13,7 @@ import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class DepartmentForm {
+public class DepartmentInfoForm {
/**
* 部署ID
*/
@@ -30,8 +30,8 @@ public class DepartmentForm {
* @param department business 層の Department インスタンス
* @return 画面用(presentation 層)の DepartmentForm インスタンス
*/
- public static DepartmentForm convertFrom(Department department) {
- return new DepartmentForm(department.getIdDepartment(), department.getNmDepartment());
+ public static DepartmentInfoForm convertFrom(Department department) {
+ return new DepartmentInfoForm(department.getIdDepartment(), department.getNmDepartment());
}
/**
@@ -41,7 +41,7 @@ public class DepartmentForm {
* @param departmentList business 層の Department インスタンスのリスト
* @return 画面用(presentation 層)の DepartmentForm インスタンスのリスト
*/
- public static List convertFrom(List departmentList) {
- return departmentList.stream().map(DepartmentForm::convertFrom).toList();
+ public static List convertFrom(List departmentList) {
+ return departmentList.stream().map(DepartmentInfoForm::convertFrom).toList();
}
}
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..6cada70
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java
@@ -0,0 +1,40 @@
+package com.example.rhizome.app.presentation.form;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 画面から渡ってきた検索条件をまとめ、再度画面に表示する為のクラス
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SearchConditionDepartmentForm {
+
+ /**
+ * 部署ID
+ */
+ private Integer idDepartment;
+
+ /**
+ * 部署名
+ */
+ private String nmDepartment;
+
+ /**
+ * business 層の SearchConditionDepartment クラスから画面用(presentation 層)の SearchConditionDepartmentForm に
+ * 変換します。
+ *
+ * @param searchConditionDepartment business 層の SearchConditionDepartment インスタンス
+ * @return 画面用(presentation 層)の SearchConditionDepartmentForm インスタンス
+ */
+ public static SearchConditionDepartmentForm convertTo(SearchConditionDepartmentForm form) {
+ return new SearchConditionDepartmentForm(
+ //getterで取得した部署IDを渡す
+ form.getIdDepartment(),
+ //getterで取得した部署名を渡す
+ form.getNmDepartment());
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/resources/templates/insertDpartmentInput.html b/src/main/resources/templates/insertDpartmentInput.html
new file mode 100644
index 0000000..d24771b
--- /dev/null
+++ b/src/main/resources/templates/insertDpartmentInput.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+ 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..7bcfb70 100644
--- a/src/main/resources/templates/menu.html
+++ b/src/main/resources/templates/menu.html
@@ -3,115 +3,124 @@
-
-
-
-
-
-
- メニュー
+
+
+
+
+
+
+ メニュー
-
- メインメニュー
-
- ログイン者名:
-
-
-
-