diff --git a/pom.xml b/pom.xml index 24be8c6..8a043e7 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/model/SearchConditionDepartment.java b/src/main/java/com/example/rhizome/app/domain/model/SearchConditionDepartment.java index 1e365eb..7682a78 100644 --- a/src/main/java/com/example/rhizome/app/domain/model/SearchConditionDepartment.java +++ b/src/main/java/com/example/rhizome/app/domain/model/SearchConditionDepartment.java @@ -9,13 +9,13 @@ import lombok.Getter; @Getter @AllArgsConstructor public class SearchConditionDepartment { - /** - * 部署ID - */ - private final Integer idDepartment; - /** - * 部署名 - */ - private final String nmDepartment; + /** + * 部署ID + */ + private final Integer idDepartment; + /** + * 部署名 + */ + private final String nmDepartment; } diff --git a/src/main/java/com/example/rhizome/app/domain/service/Login.java b/src/main/java/com/example/rhizome/app/domain/service/Login.java index 7756d83..e6c0e9a 100644 --- a/src/main/java/com/example/rhizome/app/domain/service/Login.java +++ b/src/main/java/com/example/rhizome/app/domain/service/Login.java @@ -4,7 +4,7 @@ import com.example.rhizome.app.domain.model.LoginInfo; import com.example.rhizome.app.domain.model.LoginUser; public interface Login { - LoginUser doLogin(LoginInfo loginInfo); + LoginUser doLogin(LoginInfo loginInfo); - boolean canLogin(LoginInfo loginInfo); + boolean canLogin(LoginInfo loginInfo); } 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..7d6626a --- /dev/null +++ b/src/main/java/com/example/rhizome/app/domain/service/impl/RegisterDepartmentImpl.java @@ -0,0 +1,35 @@ +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/presentation/controller/InsertDepartmentConfirmController.java b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentConfirmController.java new file mode 100644 index 0000000..23fe4f8 --- /dev/null +++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentConfirmController.java @@ -0,0 +1,107 @@ +package com.example.rhizome.app.presentation.controller; + +import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*; + +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.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.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 InsertDepartmentConfirmController { + // ログ出力用インスタンス + private final static Logger LOGGER = Logger.getLogger(InsertEmployeeConfirmController.class.getName()); + + // エラーメッセージ用の定数フィールド + private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; + + HttpSession httpSession; + SearchDepartment searchDepartment; + + @Autowired + public InsertDepartmentConfirmController( + HttpSession httpSession, + SearchDepartmentImpl searchDepartment) { + this.httpSession = httpSession; + this.searchDepartment = searchDepartment; + } + + @ModelAttribute + public InsertDepartmentForm insertDepartmentForm() { + return new InsertDepartmentForm(); + } + + /** + * 登録情報のチェックを行う + * + * @param insertDepartmentForm 登録情報 + * @param model ビューにデータを渡すためのコンテナ + * @return 遷移先の画面 + */ + @PermissionCheck + @SessionCheck + @RequestMapping(value = INSERT_DEPARTMENT_CONFIRM, method = RequestMethod.POST) + public String insertDepartmentConfirm(InsertDepartmentForm insertDepartmentForm, Model model) { + + try { + // 部署一覧を取得し、画面に返す用のクラスに詰め替える + // 作成した部署一覧をセット + model.addAttribute( + PageReturnAttributeKeyword.DEPARTMENT_FORM_LIST, + DepartmentForm.convertFrom( + searchDepartment.selectAll())); + + // 登録用パラメータチェック + List error = insertDepartmentForm.validateParameter(); + + // 入力内容に誤りがあるか + if (!error.isEmpty()) { + // 誤りがあった場合 + // 誤りがあった箇所のエラーメッセージを表示 + model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, + new MessageForm(String.join(", ", error) + "が不正です。")); + // 画面に返す為の登録情報をセット + model.addAttribute(PageReturnAttributeKeyword.INSERT_DEPARTMENT_FORM, insertDepartmentForm); + // 登録画面に遷移 + return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_INPUT_HTML; + } + + // 登録確認ページに遷移 + model.addAttribute(PageReturnAttributeKeyword.INSERT_DEPARTMENT_FORM, insertDepartmentForm); + // 登録確認画面に遷移 + return TransitionTargetPageNameKeyword.INSERT_DEPARTMENT_CONFIRM_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/InsertDepartmentController.java b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java new file mode 100644 index 0000000..33d7f0c --- /dev/null +++ b/src/main/java/com/example/rhizome/app/presentation/controller/InsertDepartmentController.java @@ -0,0 +1,22 @@ +package com.example.rhizome.app.presentation.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; + +import com.example.rhizome.app.presentation.form.InsertDepartmentForm; + +/** + * 新規登録用のコントローラ + */ +@Controller +public class InsertDepartmentController { + + @PostMapping("/insertDepartmentInput") + public String insertDepartmentInput(@ModelAttribute InsertDepartmentForm form) { + + return "insertDepartmentInput"; + + } + +} 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..d8ae09d --- /dev/null +++ b/src/main/java/com/example/rhizome/app/presentation/controller/SelectDepartmentController.java @@ -0,0 +1,82 @@ +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 searchConditionDepartmentForm 検索画面のフォーム + * @param model ビューにデータを渡すためのコンテナ + * @return 遷移先の画面 + */ + @PermissionCheck + @SessionCheck + @RequestMapping(value = TransitionTargetPageNameKeyword.SELECT_DEPARTMENT_INFO, method = RequestMethod.POST) + public String select(SearchConditionDepartmentForm searchConditionDepartmentForm, Model model) { + + try { + + // 検索条件を元に検索を実施 + // 取得した EmployeeInfo( employee + department )の情報を画面に返す用の型に詰め替えてセット + 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; + } + + } + +} 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..f0ab753 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,16 @@ 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 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_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"; + public static final String INSERT_DEPARTMENT_FORM = "insertDepartmentForm"; } 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..eef1b6d 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,105 @@ 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 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_DEPARTMENT_INPUT_HTML = "insertDepartmentInput"; + public static final String INSERT_DEPARTMENT_CONFIRM_HTML = "insertDepartmentConfirm"; + public static final String INSERT_DEPARTMENT_RESULT_HTML = "insertDepartmentResult"; - public static final String ERROR_HTML = "error"; + public static final String UPDATE_EMPLOYEE_INPUT_HTML = "updateEmployeeInput"; - // 共通(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"; + public static final String ERROR_HTML = "error"; - // 一般向け(Controller) - public static final String PERSONAL_UPDATE_RESULT = "/updatePersonalEmployeeResult"; + // 共通(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 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 PERSONAL_UPDATE_RESULT = "/updatePersonalEmployeeResult"; - // Department - // HTML - // Controller + // 管理者向け(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 INSERT_DEPARTMENT_INPUT = "/insertDepartmentInput"; + public static final String INSERT_DEPARTMENT_CONFIRM = "/insertDepartmentConfirm"; + public static final String INSERT_DEPARTMENT = "/insertDepartment"; - /** - * 管理者向けのページリストを返す - * - * @return 管理者向けのページリスト - */ - public static Set getAdminPageList() { + 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 SELECT_DEPARTMENT_INFO = "/selectDepartment"; + public static final String SELECT_DEPARTMENT_INFO_FORM_EMPTY = "/selectDepartmentAll"; + public static final String SHOW_UPDATE_EMPLOYEE = "/showUpdateEmployee"; + public static final String UPDATE_EMPLOYEE_RESULT = "/updateEmployeeResult"; - 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 - ); - } + // Department + // HTML + // Controller - /** - * 一般向けのページリストを返す - * - * @return 一般向けのページリスト - */ - public static Set getUserPageList() { - return Set.of( - INDEX_BLANK, - INDEX_SLASH, - INDEX_LOGIN, - LOGOUT, - DO_LOGIN, - PERSONAL_UPDATE_RESULT - ); - } + /** + * 管理者向けのページリストを返す + * + * @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, + INSERT_DEPARTMENT_INPUT, + INSERT_DEPARTMENT_CONFIRM, + INSERT_DEPARTMENT, + + SHOW_MENU, + SELECT_EMPLOYEE_INFO, + SELECT_EMPLOYEE_INFO_FORM_EMPTY, + + SELECT_DEPARTMENT_INFO, + SELECT_DEPARTMENT_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); + } } 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..d060e8b 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,13 @@ package com.example.rhizome.app.presentation.form; +import java.util.List; + import com.example.rhizome.app.domain.model.Department; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.List; - /** * 画面の表示に使う部署コード管理用のクラス */ @@ -31,7 +32,9 @@ public class DepartmentForm { * @return 画面用(presentation 層)の DepartmentForm インスタンス */ public static DepartmentForm convertFrom(Department department) { - return new DepartmentForm(department.getIdDepartment(), department.getNmDepartment()); + return new DepartmentForm( + department.getIdDepartment(), + department.getNmDepartment()); } /** 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..1cfc5ee --- /dev/null +++ b/src/main/java/com/example/rhizome/app/presentation/form/InsertDepartmentForm.java @@ -0,0 +1,68 @@ +package com.example.rhizome.app.presentation.form; + +import java.util.ArrayList; +import java.util.List; + +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 nmDepartment; + + /** + * 仮引数を null or 空 判定する + * + * @param str 判定対象の文字列 + * @return true:null or 空 false:null or 空 では無い + */ + private static boolean isNullOrBlank(String str) { + if (null == str) { + return true; + } + + return str.isBlank(); + } + + /** + * 画面から渡ってきた登録内容をまとめ、ビジネスモデルに変換 + * + * @param insertEmployeeForm 画面から渡ってきた登録内容 + * @return ビジネスモデルのインスタンス + */ + public static Department convertTo(InsertDepartmentForm insertDepartmentForm) { + return new Department( + null, + insertDepartmentForm.getNmDepartment()); + } + + /** + * 登録データのValidationを行う + * + * @return エラーが有った場合はエラー文言、無ければ空のリストが返る + */ + public List validateParameter() { + final String DEPARTMENT_NAME_NULL_BLANK = "部署名"; + + List error = new ArrayList<>(); + + if (isNullOrBlank(nmDepartment)) { + error.add(DEPARTMENT_NAME_NULL_BLANK); + } + + return error; + + } + +} 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..7545990 --- /dev/null +++ b/src/main/java/com/example/rhizome/app/presentation/form/SearchConditionDepartmentForm.java @@ -0,0 +1,53 @@ +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; + + /** + * business 層の SearchConditionDepartment クラスから画面用(presentation 層)の SearchConditionDepartmentForm に + * 変換します。 + * + * @param searchConditionDepartment business 層の SearchConditionDepartment インスタンス + * @return 画面用(presentation 層)の SearchConditionDepartmentForm インスタンス + */ + public static SearchConditionDepartmentForm convertFrom(SearchConditionDepartment searchConditionDepartment) { + return new SearchConditionDepartmentForm( + searchConditionDepartment.getIdDepartment(), + searchConditionDepartment.getNmDepartment()); + } + + /** + * 画面用(presentation 層)の SearchConditionDepartmentForm クラスから business 層の SearchConditionDepartment クラスに + * 変換します。 + * + * @param searchConditionEmployeeForm 画面用(presentation 層)の SearchConditionDepartmentForm インスタンス + * @return business 層の SearchConditionDepartment インスタンス + */ + public static SearchConditionDepartment convertTo(SearchConditionDepartmentForm searchConditionDepartmentForm) { + return new SearchConditionDepartment( + searchConditionDepartmentForm.getIdDepartment(), + searchConditionDepartmentForm.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/insertDepartmentConfirm.html b/src/main/resources/templates/insertDepartmentConfirm.html new file mode 100644 index 0000000..5669ddf --- /dev/null +++ b/src/main/resources/templates/insertDepartmentConfirm.html @@ -0,0 +1,79 @@ + + + + + + + + + + + + 登録内容確認 + + + +

登録内容確認    +
+ ログイン者名: + +
+

+ +
+ +
+ +
+ + + + + + + + + + + + + +
部署ID + +
部署名 + +
+ +
+ 登録内容の編集 | メニューに戻る +
+ + + + + + \ 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..967513b --- /dev/null +++ b/src/main/resources/templates/insertDepartmentInput.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + 部署登録 + + + +

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

+
+ +
+ +
+ + + + + + + + + + + + + + +
部署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..37f0767 --- /dev/null +++ b/src/main/resources/templates/insertDepartmentResult.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + 部署登録完了 + + + +

部署登録が完了しました

+
+ 続けて登録する | メニューに戻る + + + + \ No newline at end of file diff --git a/src/main/resources/templates/menu.html b/src/main/resources/templates/menu.html index 6d0ee4a..0a2e604 100644 --- a/src/main/resources/templates/menu.html +++ b/src/main/resources/templates/menu.html @@ -3,115 +3,123 @@ - - - - - - - メニュー + + + + + + + メニュー -

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

- - - - - +

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

+ + + + - - - - + + + - + + 社員登録 + 新規でユーザ追加を行います。 + + 部署登録 + + 新規で部署追加を行います。 + + + \ 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..e6784a9 --- /dev/null +++ b/src/main/resources/templates/selectDepartment.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + 検索 + + + + +

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

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

検索結果

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