diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..af9d5c2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+/target/
+/bin/
+.classpath
+.project
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..36e6ccc
--- /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/pom.xml b/pom.xml
index 24be8c6..0efa303 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,8 +15,9 @@
war
EM-Spring
Demo project for Spring Boot
-
+
17
+ 1.18.34
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..c2860af 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;
/**
* 部署情報検索系の機能を集約させるサービスクラスです。
@@ -54,7 +55,7 @@ public class SearchDepartmentImpl implements SearchDepartment {
.createDepartmentList(
departmentRepository.findAll(Specification
.where(DepartmentRepository.idDepartmentEqual(searchConditionDepartment.getIdDepartment()))
- .and(DepartmentRepository.nmDepartmentEqual(searchConditionDepartment.getNmDepartment()))
+ .and(DepartmentRepository.nmDepartmentLike(searchConditionDepartment.getNmDepartment()))
)
);
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..b64e5f9
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java
@@ -0,0 +1,86 @@
+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.RegisterEmployee;
+import com.example.rhizome.app.domain.service.SearchDepartment;
+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.TransitionTargetPageNameKeyword;
+import com.example.rhizome.app.presentation.form.InsertEmployeeForm;
+
+/**
+ * 新規登録用のコントローラ
+ */
+@Controller
+public class InsertDepartmentController {
+
+ // ログ出力用インスタンス
+ private final static Logger LOGGER = Logger.getLogger(InsertDepartmentController.class.getName());
+
+ // エラーメッセージ用の定数フィールド
+ private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!";
+
+ HttpSession httpSession;
+ RegisterEmployee registerEmployee;
+ SearchDepartment searchDepartment;
+
+ @Autowired
+ public InsertDepartmentController(HttpSession httpSession, RegisterEmployeeImpl registerEmployee, SearchDepartmentImpl searchDepartment) {
+ this.httpSession = httpSession;
+ this.registerEmployee = registerEmployee;
+ this.searchDepartment = searchDepartment;
+ }
+
+ @ModelAttribute
+ public InsertEmployeeForm insertEmployeeForm() {
+ return new InsertEmployeeForm();
+ }
+
+ /**
+ * 新規登録画面表示処理
+ *
+ * @param insertEmployeeForm 登録情報
+ * @param model ビューにデータを渡すためのコンテナ
+ * @return 遷移先の画面
+ */
+ @PermissionCheck
+ @SessionCheck
+ @RequestMapping(value = TransitionTargetPageNameKeyword.INSERT_DEPARTMENT, method = RequestMethod.POST)
+ public String insertEmployee(InsertEmployeeForm insertEmployeeForm, Model model) {
+
+ try {
+
+ // 登録結果画面に遷移
+ return TransitionTargetPageNameKeyword.INSERT_DEVELOPMENT_INPUT_HTML;
+
+ } catch (Exception e) {
+ // ログイン情報の破棄
+ httpSession.invalidate();
+
+ e.printStackTrace();
+
+ // エラーログ出力
+ LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e);
+ // エラー画面遷移
+ return TransitionTargetPageNameKeyword.ERROR_HTML;
+ }
+ }
+
+
+}
+
+
+
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..7b43a31
--- /dev/null
+++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java
@@ -0,0 +1,98 @@
+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.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;
+
+/**
+ * 社員検索画面用コントローラ リスト全件表示、検索表示、更新、削除が可能
+ */
+@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;
+ SearchEmployeeInfo searchEmployeeInfo;
+
+ @Autowired
+ public SelectDepartmentController(HttpSession httpSession, SearchDepartment searchDepartment, SearchEmployeeInfo searchEmployeeInfo) {
+ this.httpSession = httpSession;
+ this.searchDepartment = searchDepartment;
+ this.searchEmployeeInfo = searchEmployeeInfo;
+ }
+
+ @ModelAttribute
+ public DepartmentForm departmentForm() {
+ return new DepartmentForm();
+ }
+
+ /**
+ * 社員検索画面表示処理コントローラ
+ *
+ * @param searchConditionEmployeeForm 検索画面のフォーム
+ * @param model ビューにデータを渡すためのコンテナ
+ * @return 遷移先の画面
+ */
+ @PermissionCheck
+ @SessionCheck
+ @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT, method = RequestMethod.POST)
+ public String select(DepartmentForm departmentForm, Model model) {
+
+ try {
+ // 部署一覧を取得し、画面に返す用のクラスに詰め替える
+ // 作成した部署一覧をセット
+ System.out.println(departmentForm);
+ model.addAttribute(
+ PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST,
+ DepartmentForm.convertFrom(searchDepartment.selectAll())
+ );
+ System.out.println(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST);
+ System.out.println(DepartmentForm.convertFrom(searchDepartment.selectAll()));
+ System.out.println(model.getAttribute("departmentFormList"));
+
+ // 検索条件を元に検索を実施
+ // 取得した department の情報を画面に返す用の型に詰め替えてセット
+ model.addAttribute(PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, DepartmentForm.convertFrom(searchDepartment.searchBy(DepartmentForm.convertTo(departmentForm))));
+
+ // 検索ページに遷移
+ 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..f8baeaa 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,5 +1,17 @@
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;
@@ -9,16 +21,6 @@ import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTa
import com.example.rhizome.app.presentation.form.DepartmentForm;
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;
/**
* 社員検索画面用コントローラ リスト全件表示、検索表示、更新、削除が可能
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..801a865 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
@@ -17,9 +17,11 @@ public class TransitionTargetPageNameKeyword {
// 管理者向け
public static final String MENU_HTML = "menu";
public static final String SELECT_EMPLOYEE_HTML = "selectEmployee";
+ public static final String SELECT_DEPARTMENT_HTML = "selectDepartment";
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 INSERT_DEVELOPMENT_INPUT_HTML = "insertDevelopmentInput";
public static final String UPDATE_EMPLOYEE_INPUT_HTML = "updateEmployeeInput";
public static final String ERROR_HTML = "error";
@@ -36,14 +38,21 @@ public class TransitionTargetPageNameKeyword {
// 管理者向け(Controller)
public static final String DELETE_EMPLOYEE = "/deleteEmployee";
+// public static final String DELETE_DEPARTMENT = "/deleteDepartment";
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 INSERT_DEPARTMENT = "/insertDepartmentInput";
+// public static final String INSERT_DEPARTMENT_INPUT = "/selectDepartmentInfo";
+// public static final String INSERT_DEPARTMENT_CONFIRM = "/selectDepartmentConfirm";
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";
+ public static final String SELECT_DEPARTMENT = "/selectDepartment";
+ public static final String SELECT_DEPARTMENT_INFO_FORM_EMPTY = "/selectDepartmentAll";
+
// Department
// HTML
@@ -66,8 +75,10 @@ public class TransitionTargetPageNameKeyword {
INSERT_EMPLOYEE_INPUT,
INSERT_EMPLOYEE_CONFIRM,
INSERT_EMPLOYEE,
+ INSERT_DEPARTMENT,
SHOW_MENU,
SELECT_EMPLOYEE_INFO,
+ SELECT_DEPARTMENT,
SELECT_EMPLOYEE_INFO_FORM_EMPTY,
SHOW_UPDATE_EMPLOYEE,
UPDATE_EMPLOYEE_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/DepartmentForm.java
index 6648423..0eead59 100644
--- a/src/main/java/com/example/rhizome/app/presentation/form/DepartmentForm.java
+++ b/src/main/java/com/example/rhizome/app/presentation/form/DepartmentForm.java
@@ -1,12 +1,14 @@
package com.example.rhizome.app.presentation.form;
+import java.util.List;
+
import com.example.rhizome.app.domain.model.Department;
+import com.example.rhizome.app.domain.model.SearchConditionDepartment;
+
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.List;
-
/**
* 画面の表示に使う部署コード管理用のクラス
*/
@@ -44,4 +46,19 @@ public class DepartmentForm {
public static List convertFrom(List departmentList) {
return departmentList.stream().map(DepartmentForm::convertFrom).toList();
}
+
+ /**
+ * 画面用(presentation 層)の DepartmentForm クラスから business 層の SearchConditionDepartment クラスに
+ * 変換します。
+ *
+ * @param departmentForm 画面用(presentation 層)の departmentForm インスタンス
+ * @return business 層の searchConditionDepartment インスタンス
+ */
+ public static SearchConditionDepartment convertTo(DepartmentForm departmentForm) {
+ return new SearchConditionDepartment(
+ departmentForm.getIdDepartment(),
+ departmentForm.getNmDepartment()
+
+ );
+ }
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 88b15aa..6eca8cd 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,3 +1,3 @@
-spring.datasource.url=jdbc:mysql://localhost:3306/rezodb
+spring.datasource.url=jdbc:mysql://localhost:3306/springdb
spring.datasource.username=rezouser
spring.datasource.password=Rezo_0000
diff --git a/src/main/resources/templates/insertDevelopmentInput.html b/src/main/resources/templates/insertDevelopmentInput.html
new file mode 100644
index 0000000..50e8907
--- /dev/null
+++ b/src/main/resources/templates/insertDevelopmentInput.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+ 社員登録
+
+
+
+
+ 社員登録
+
+
+
+メニューに戻る
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/menu.html b/src/main/resources/templates/menu.html
index 6d0ee4a..df033b5 100644
--- a/src/main/resources/templates/menu.html
+++ b/src/main/resources/templates/menu.html
@@ -25,13 +25,25 @@
|
|
- 登録済みのユーザ一覧表示と更新、削除を行います。 |
+ 登録済みのユーザ一覧表示と更新、削除を行います。 |
|
新規でユーザ追加を行います。 |
+
+
+ |
+ |
+ 登録済みの部署一覧表示と更新、削除を行います。 |
+
+
+
+ |
+ |
+ 新規で部署追加を行います。 |
+
+
+ 検索条件入力
+
+ ログイン者名:
+
+
+
+
+
+メニューに戻る
+
+検索結果
+
+
+
+
+
+
+
+
+
+
+ | 部署ID |
+ 部署名 |
+ 操作 |
+
+
+
+
+ |
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ 検索結果はありません。
+
+
+
diff --git a/src/main/resources/templates/selectDepartment.html b/src/main/resources/templates/selectDepartment.html
new file mode 100644
index 0000000..3a555f9
--- /dev/null
+++ b/src/main/resources/templates/selectDepartment.html
@@ -0,0 +1,111 @@
+
+
+
+