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 @@ + + + + + + + + + + + 部署登録 + + + +

+ 部署登録    +
+ ログイン者名: + +
+

+
+ +
+ +
+ + + + + + + + + + + + + +
部署ID + +
部署名 + +
+ +
+
+ メニューに戻る + + + \ 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 @@ - - - - - - - メニュー + + + + + + + メニュー -

- メインメニュー    -
- ログイン者名: - -
-

- - - - - +

+ メインメニュー    +
+ ログイン者名: + +
+

+ + + + + - - - - + + + + - + + 部署検索 + + 登録済みの部署一覧表示と
更新、削除を行います。 + + + + 部署登録 + 新規で部署追加を行います。 + + + \ No newline at end of file diff --git a/src/main/resources/templates/selectDepartment.html b/src/main/resources/templates/selectDepartment.html new file mode 100644 index 0000000..fd242c6 --- /dev/null +++ b/src/main/resources/templates/selectDepartment.html @@ -0,0 +1,107 @@ + + + + + + + + + + + 部署検索 + + + +

+ 検索条件入力    +
+ ログイン者名: + +
+

+
+ +
+ +
+ + + + + + + + + + + + + +
部署ID + +
部署名 + +
+ + + +
+
+
+ メニューに戻る +
+

検索結果

+
+ + + +
+ + + + + + + + + + + + + + + + + +
部署ID部署名操作
+ +
+ + +
+ +
+ + +
+
+
+ + + 検索結果はありません。 + + + + + \ No newline at end of file