diff --git a/team1/pom.xml b/team1/pom.xml index 75ae850..8b03b4f 100644 --- a/team1/pom.xml +++ b/team1/pom.xml @@ -79,6 +79,11 @@ HelloSpring 0.0.1-SNAPSHOT + + com.example.rhizome + EM-Spring + 0.0.1-SNAPSHOT + diff --git a/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java b/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java index 7008d08..19609f5 100644 --- a/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java +++ b/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java @@ -1,6 +1,18 @@ package com.example.demo.controller; +import java.util.logging.Level; +import java.util.logging.Logger; + +import jakarta.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.demo.form.ApprovalForm; /** * 書籍貸出承認確認用のコントローラ @@ -8,4 +20,45 @@ import org.springframework.stereotype.Controller; @Controller public class ApprovalConfirmController { + // ログ出力用インスタンス + private final static Logger LOGGER = Logger.getLogger(ApprovalConfirmController.class.getName()); + + // エラーメッセージ用の定数フィールド + private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; + + HttpSession httpSession; + Request request; + + @Autowired + public ApprovalConfirmController( + HttpSession httpSession, + Request request) { + this.httpSession = httpSession; + this.request = request; + } + + @ModelAttribute + public ApprovalForm approvalForm() { + return new ApprovalForm(); + } + + @RequestMapping(value = "/ApprovalConfirm", method = RequestMethod.POST) + public String AprrvalForm(ApprovalForm ApprovalForm, Model model) { + + try { + + + return a ; + } catch (Exception e) { + // ログイン情報の破棄 + httpSession.invalidate(); + + e.printStackTrace(); + + // エラーログ出力 + LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + // エラー画面遷移 + return "error"; + } + } } diff --git a/team1/src/main/java/com/example/demo/controller/LendingController.java b/team1/src/main/java/com/example/demo/controller/LendingController.java new file mode 100644 index 0000000..2c44fd6 --- /dev/null +++ b/team1/src/main/java/com/example/demo/controller/LendingController.java @@ -0,0 +1,82 @@ +package com.example.demo.controller; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import jakarta.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 main.java.com.example.rhizome.aop.aspect.PermissionCheck; +import main.java.com.example.rhizome.aop.aspect.SessionCheck; +import main.java.com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword; + +/** + * 書籍貸出申請に関する処理を制御するコントローラ + */ +@Controller +public class LendingController { + // ログ出力用インスタンス + private final static Logger LOGGER = Logger.getLogger(LendingController.class.getName()); + // エラーメッセージ用の定数フィールド + private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; + + HttpSession httpSession; + + //コンストラクタ注入(一番最初に動く処理) + @Autowired + public LendingController(HttpSession httpSession) { + this.httpSession = httpSession; + } + + //画面を開くための初期化(!formクラス名要確認!) + @ModelAttribute + public LendingForm lendingForm() { + return new LendingForm(); + } + + @PermissionCheck + @SessionCheck + @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) + public String confirmLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { + try { + + // HTML側の th:object="${lendingForm}" に渡すデータをセット + model.addAllAttribute("lendingForm", lendingForm); + // 貸出申請確認画面のHTML名を返す + return "applicationConform"; + } catch (Exception e) { + //ログイン情報の破棄 + httpSession.invalidate(); + + e.printStackTrace(); + + // エラーログ出力 + LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + // エラー画面遷移 + return TransitionTargetPageNameKeyword.ERROR_HTML; + + } + + } + /** + * 書籍貸出申請 実行処理 + * + * @param lendingForm 確認画面の隠しフィールド(hidden)から引き継いだデータ + * @param model ビューにデータを渡すためのコンテナ + * @return 遷移先の画面 + */ + @PermissionCheck + @SessionCheck + @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) + public String executeLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { + final String LENDING_COMPLETE = "書籍申請完了しました"; + } + try { + + }catch +} diff --git a/team1/src/main/java/com/example/demo/controller/LoginController.java b/team1/src/main/java/com/example/demo/controller/LoginController.java deleted file mode 100644 index a541e29..0000000 --- a/team1/src/main/java/com/example/demo/controller/LoginController.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.example.demo.controller; - -import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import jakarta.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.LoginInfo; -import com.example.rhizome.app.domain.model.LoginUser; -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.LoginInfoForm; -import com.example.rhizome.app.presentation.form.LoginUserForm; -import com.example.rhizome.app.presentation.form.MessageForm; -import com.example.rhizome.app.presentation.form.UpdatePersonalUserForm; - -@Controller -public class LoginController { - - // - private final static Logger LOGGER = Logger.getLogger(LoginController.class.getName()); - - // - private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; - - HttpSession httpSession; - Login login; - - @Autowired - public LoginController(HttpSession httpSession, Login login) { - this.httpSession = httpSession; - this.login = login; - } - - @ModelAttribute - public LoginUserForm loginUserForm() { - return new LoginUserForm(); - } - - /** - * 画面から渡ってきたパラメータのチェックを行う - * - * @param loginInfoForm mailAddress, password を保持したインスタンス - * @param model ビューにデータを渡すためのコンテナ - * @return 遷移先の画面 - */ - @RequestMapping(value = DO_LOGIN, method = RequestMethod.POST) - public String doLogin(LoginInfoForm loginInfoForm, Model model) { - - // ログに出力する - final String MAIL_ADDRESS_PASSWORD_ERROR = "メールアドレス、パスワードの入力内容に誤りがあります"; - // 発生しうるErrorに対するメッセージ - final String LOGIN_ERROR = "IDまたはパスワードが間違っています"; - - try { - // mailAddress, password の入力に誤りがあるかチェック - if (!LoginUserForm.checkParameter(loginInfoForm)) { - - // mail,passwordが仕様を満たしていない場合 - model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(MAIL_ADDRESS_PASSWORD_ERROR)); - - // エラーだった場合に login.html に処理を戻す。mailAddress, password を login.htmlに表示するために - // ここで addAttribute する - model.addAttribute(PageReturnAttributeKeyword.LOGIN_INFO_FORM, loginInfoForm); - // login.html に遷移する様に設定 - return TransitionTargetPageNameKeyword.LOGIN_HTML; - } - // Login者情報インスタンスを作成 - LoginInfo loginInfo = createLoginInfo(httpSession, loginInfoForm); - - // login 可能かチェック - if (!login.canLogin(loginInfo)) { - // ログイン不可の場合、エラーメッセージをセットして入力された値とともに login.html を再表示 - // 画面に表示するエラーメッセージをセット - model.addAttribute(PageReturnAttributeKeyword.MESSAGE_ERROR, new MessageForm(LOGIN_ERROR)); - // 画面に表示する mailAddress, password をセット - model.addAttribute(PageReturnAttributeKeyword.LOGIN_INFO_FORM, loginInfoForm); - // login.html に遷移 - return TransitionTargetPageNameKeyword.LOGIN_HTML; - } - // ログイン(インスタンス作成) - LoginUser loginUser = login.doLogin(loginInfo); - - // ログイン者の情報をセッション情報に格納 - // セッションに loginUser 情報を保持し続ける = ログイン中として扱う - httpSession.setAttribute(SessionKeyword.LOGIN_USER, LoginUserForm.convertFrom(loginUser)); - - // 管理者かチェック - if (!loginUser.isAdminUser()) { - // 管理者ではない場合直で自分の情報を更新するページに遷移する - // 編集対象のログイン者の情報を画面に渡す値にセット - model.addAttribute(PageReturnAttributeKeyword.UPDATE_PERSONAL_EMPLOYEE_USER_FORM, UpdatePersonalUserForm.convertFrom(loginUser)); - // 個人の情報更新ページに遷移 - return TransitionTargetPageNameKeyword.UPDATE_PERSONAL_EMPLOYEE_INPUT_HTML; - } - // メニュー画面に遷移 - return TransitionTargetPageNameKeyword.MENU_HTML; - - } catch (Exception e) { - // ログイン情報の破棄 - httpSession.invalidate(); - e.printStackTrace(); - // エラーログ出力 - LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); - // エラー画面に遷移 - return TransitionTargetPageNameKeyword.ERROR_HTML; - } - /** - * ログイン者情報のインスタンスを作成 - * - * @param httpSession セッション情報 - * @param loginInfoForm mailAddress, password を保持したインスタンス - */ - private static LoginInfo createLoginInfo(HttpSession httpSession, LoginInfoForm loginInfoForm) { - // セッションからログイン者情報を取得 - LoginUserForm loginUserForm = (LoginUserForm) httpSession.getAttribute(SessionKeyword.LOGIN_USER); - - // セッションにログイン者情報があるか - if (loginUserForm != null) { - // セッションにログイン者情報がある場合 - return new LoginInfo(loginUserForm.getMailAddress(), loginUserForm.getPassword()); - } - - // セッションにない場合は画面からの input 値 を取得 - return new LoginInfo( - loginInfoForm.getMailAddress(), - loginInfoForm.getPassword() - ); -} -} diff --git a/team1/src/main/java/com/example/demo/controller/LogoutController.java b/team1/src/main/java/com/example/demo/controller/LogoutController.java deleted file mode 100644 index b216a06..0000000 --- a/team1/src/main/java/com/example/demo/controller/LogoutController.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.demo.controller; - -import org.springframework.stereotype.Controller; - -@Controller -public class LogoutController { - -} diff --git a/team1/src/main/java/com/example/demo/controller/SelectBookController.java b/team1/src/main/java/com/example/demo/controller/SelectBookController.java new file mode 100644 index 0000000..4fa733c --- /dev/null +++ b/team1/src/main/java/com/example/demo/controller/SelectBookController.java @@ -0,0 +1,77 @@ +package com.example.demo.controller; + + +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import jakarta.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.demo.entity.Book_collectionEntity; +import com.example.demo.form.SearchConditionBookForm; +import com.example.demo.service.SearchBook; + + + +@Controller +public class SelectBookController { + + // ログ出力用インスタンス + private final static Logger LOGGER = Logger.getLogger(SelectBookController.class.getName()); + // エラーメッセージ用の定数フィールド + private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; + + HttpSession httpsession; + SearchBook searchBook; + + @Autowired + public SelectBookController(HttpSession httpSession, SearchBook searchBook) { + this.httpsession = httpSession; + this.searchBook = searchBook; + } + + //空の検索条件Form + @ModelAttribute + public SearchConditionBookForm searchConditionBookForm() { + return new SearchConditionBookForm(); + } + +// ① 書籍一覧の初期表示 + + @RequestMapping(value ="/selectBook", method = RequestMethod.GET) + public String select(Model model) { + try { + //貸出可能な書籍を全権取得する + List books = searchBook.selectAll(); + //検索結果をmodelに登録する + model.addAttribute("books" , books); + //書籍一覧画面を表示する + return "book-search"; + + }catch(Exception e) { + //httpSessionを破棄 + httpsession.invalidate(); + //エラー内容を出力 + e.printStackTrace(); + //ログにエラーを記録 + LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + //エラー画面へ遷移 + return "error"; + } + } + // ② 検索ボタン押下時の処理 + + @RequestMapping(value ="/selectBook", method = RequestMethod.POST) + public String ) { + + + +// } +} diff --git a/team1/src/main/java/com/example/demo/form/LoginUserForm.java b/team1/src/main/java/com/example/demo/form/LoginUserForm.java deleted file mode 100644 index 22b59d1..0000000 --- a/team1/src/main/java/com/example/demo/form/LoginUserForm.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.example.demo.form; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -//ログインをする人 -@Data -@AllArgsConstructor -@NoArgsConstructor -public class LoginUserForm { - /** - * 社員ID - */ - private Integer idEmployee; - /** - * 社員名 - */ - private String nmEmployee; - /** - * 社員名よみ - */ - private String knEmployee; - /** - * メールアドレス - */ - private String mailAddress; - /** - * パスワード - */ - private String password; - - /** - * 管理者フラグ - */ - private Integer flgadmin; - - /** - * business 層の LoginUser クラスから画面用(presentation 層)の LoginUserForm に - * 変換します。 - * - * @param loginUser business 層の LoginUser インスタンス - * @return クラスから画面用(presentation 層)の LoginUserForm - */ - public static LoginUserForm convertFrom(LoginUser loginUser) { - return new LoginUserForm( - loginUser.getIdEmployee(), - loginUser.getNmEmployee(), - loginUser.getKnEmployee(), - loginUser.getMailAddress(), - loginUser.getPassword(), - loginUser.getFlgAdmin() - ); - } - - /** - * 画面用(presentation 層)の LoginUserForm クラスから business 層の LoginUser クラスに - * 変換します。 - * - * @param loginUserForm 画面用(presentation 層)の LoginUserForm インスタンス - * @return business 層の LoginUser インスタンス - */ - public static LoginUser convertTo(LoginUserForm loginUserForm) { - return new LoginUser( - loginUserForm.getIdEmployee(), - loginUserForm.getNmEmployee(), - loginUserForm.getKnEmployee(), - loginUserForm.getMailAddress(), - loginUserForm.getPassword(), - loginUserForm.getAdminAuth(), - loginUserForm.getIdDepartment() - ); - } - - /** - * 画面から渡ってきた必須の値が仕様を満たしているか確認 - * - * @param loginInfoForm 画面から渡ってきた mailAddress, password を格納しているインスタンス - * @return true:仕様を満たしている , false:仕様を満たしていない - */ - public static boolean checkParameter(LoginInfoForm loginInfoForm) { - if (null == loginInfoForm.getMailAddress()) { - return false; - } - - if (loginInfoForm.getMailAddress().isBlank()) { - return false; - } - - if (null == loginInfoForm.getPassword()) { - return false; - } - - return !loginInfoForm.getPassword().isBlank(); - - } - - /** - * 管理者権限を持っているか確認 - * - * @return true:管理者権限を持っている , false:管理者権限を持っていない - */ - public boolean isAdminUser() { - return getAdminAuth() == 1; - } -} diff --git a/team1/src/main/java/com/example/demo/form/SearchConditionBookForm.java b/team1/src/main/java/com/example/demo/form/SearchConditionBookForm.java new file mode 100644 index 0000000..e180cc6 --- /dev/null +++ b/team1/src/main/java/com/example/demo/form/SearchConditionBookForm.java @@ -0,0 +1,18 @@ +package com.example.demo.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SearchConditionBookForm { + //書籍名 + private String nmBook; + //出版社 + private String pubLisher; + //特記事項 + private String noteText; + +} diff --git a/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java b/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java index b19abdf..65a96fe 100644 --- a/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java +++ b/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java @@ -1,12 +1,31 @@ package com.example.demo.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.demo.repository.Borrow_BooksRepository; import com.example.demo.service.ApprovalBorrowBooks; @Service @Transactional -public class ApprovalBorrowBooksImpl implements ApprovalBorrowBooks{ +public class ApprovalBorrowBooksImpl implements ApprovalBorrowBooks { -} + Borrow_BooksRepository borrowbooksRepository; + + @Autowired + public ApprovalBorrowBooksImpl(Borrow_BooksRepository borrowbooksRepository) { + this.borrowbooksRepository = borrowbooksRepository; + } + + /* 申請情報から全件取得 + * @return 取得した情報すべて + */ + public List selectAll() { + return ???Entity.create???List(???Repository.findAll()); + } + + +} \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/service/SearchBook.java b/team1/src/main/java/com/example/demo/service/SearchBook.java new file mode 100644 index 0000000..74bb01c --- /dev/null +++ b/team1/src/main/java/com/example/demo/service/SearchBook.java @@ -0,0 +1,16 @@ +package com.example.demo.service; + +import java.util.List; + +import com.example.demo.entity.Book_collectionEntity; +import com.example.demo.form.SearchConditionBookForm; + +public interface SearchBook { + + //貸出可能な書籍を全件取得する + List selectAll(); + + //書籍名・出版社・特記事項を条件に検索する + List searchByWithLike(SearchConditionBookForm form); + +} diff --git a/team1/src/main/resources/templates/application.html b/team1/src/main/resources/templates/application.html new file mode 100644 index 0000000..bbdd703 --- /dev/null +++ b/team1/src/main/resources/templates/application.html @@ -0,0 +1,51 @@ + + + + + + + + 書籍貸出申請 + + + + +
+ ログイン者名: + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + +
蔵書ID
書籍名
貸出日
返却予定日
+ +
+
+ + + 書籍一覧に戻る + + + \ No newline at end of file diff --git a/team1/src/main/resources/templates/applicationComplete.html b/team1/src/main/resources/templates/applicationComplete.html new file mode 100644 index 0000000..3c829ff --- /dev/null +++ b/team1/src/main/resources/templates/applicationComplete.html @@ -0,0 +1,29 @@ + + + + + + + + 書籍貸出申請完了 + + + + +
+ ログイン者名: + +
+ + +

書籍申請完了しました

+ + + 書籍一覧に戻る + + + メニューに戻る + + + + \ No newline at end of file diff --git a/team1/src/main/resources/templates/applicationConfirm.html b/team1/src/main/resources/templates/applicationConfirm.html new file mode 100644 index 0000000..42196dd --- /dev/null +++ b/team1/src/main/resources/templates/applicationConfirm.html @@ -0,0 +1,55 @@ + + + + + + + + 書籍貸出申請確認 + + + + +
+ ログイン者名: + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
蔵書ID
書籍名
貸出日
返却予定日
+ + +
+
+ + 申請情報入力に戻る + + + \ No newline at end of file diff --git a/team1/src/main/resources/templates/approvalComplete.html b/team1/src/main/resources/templates/approvalComplete.html new file mode 100644 index 0000000..a462f51 --- /dev/null +++ b/team1/src/main/resources/templates/approvalComplete.html @@ -0,0 +1,15 @@ + + + + + + + + + + 書籍貸出承認確認 + + + + + \ No newline at end of file diff --git a/team1/src/main/resources/templates/approvalRejected.html b/team1/src/main/resources/templates/approvalRejected.html new file mode 100644 index 0000000..a462f51 --- /dev/null +++ b/team1/src/main/resources/templates/approvalRejected.html @@ -0,0 +1,15 @@ + + + + + + + + + + 書籍貸出承認確認 + + + + + \ No newline at end of file diff --git a/team1/src/main/resources/templates/bookList.html b/team1/src/main/resources/templates/bookList.html new file mode 100644 index 0000000..70b74ce --- /dev/null +++ b/team1/src/main/resources/templates/bookList.html @@ -0,0 +1,72 @@ + + + + + + 書籍一覧・検索 + + + + +ログアウト +

書籍一覧・検索

+ +
+ + + + + + + + + + + + + + + + + + + + + + メニューに戻る +

検索結果

+ +
書籍名
出版社
特記事項
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ISBN書籍名書籍名よみ出版社特記事項操作 +
+ + +
+ + + \ No newline at end of file diff --git a/team1/src/main/resources/templates/login.html b/team1/src/main/resources/templates/login.html deleted file mode 100644 index ee543e6..0000000 --- a/team1/src/main/resources/templates/login.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - ログイン画面 - - - -

ログイン

-
- -
? - ? -
- - - - - - - - - > - - - - - - -
メールアドレス - -
パスワード - -
- - -
-
- - - -