diff --git a/src/main/java/org/ntlab/citrusserver/repositories/FavoriteManager.java b/src/main/java/org/ntlab/citrusserver/repositories/FavoriteManager.java index 1d95766..9452ca7 100644 --- a/src/main/java/org/ntlab/citrusserver/repositories/FavoriteManager.java +++ b/src/main/java/org/ntlab/citrusserver/repositories/FavoriteManager.java @@ -1,4 +1,6 @@ package org.ntlab.citrusserver.repositories; +import org.ntlab.citrusserver.entities.Account; +import org.ntlab.citrusserver.entities.Book; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -6,12 +8,15 @@ import java.util.HashSet; @Repository -public class FavoriteManager { +public class FavoriteManager implements IAccountListener, IBookListener { private final AccountManager accountManager; @Autowired - public FavoriteManager(AccountManager accountManager) { + public FavoriteManager(AccountManager accountManager, BookManager bookManager) { this.accountManager = accountManager; + this.accountManager.addListener(this); + bookManager.addListener(this); + } //favorited @@ -130,6 +135,24 @@ } favoritedMap.get(accountId).remove(bookId); // tedのbookIdを消したいとき } + + @Override + public void accountDeleted(Account account) { + removeFavoriteById(account.getId()); + } + + + @Override + public void bookChanged(Account account, Book book) { + + } + + @Override + public void bookDeleted(Account account, Book book) { + removeFavoriteByBookID(account.getId(), book.getBookId()); + } + + } diff --git a/src/main/java/org/ntlab/citrusserver/repositories/TodoManager.java b/src/main/java/org/ntlab/citrusserver/repositories/TodoManager.java index a2918e0..7421407 100644 --- a/src/main/java/org/ntlab/citrusserver/repositories/TodoManager.java +++ b/src/main/java/org/ntlab/citrusserver/repositories/TodoManager.java @@ -1,6 +1,7 @@ package org.ntlab.citrusserver.repositories; import org.ntlab.citrusserver.entities.Account; +import org.ntlab.citrusserver.entities.Book; import org.ntlab.citrusserver.entities.Todo; import org.springframework.stereotype.Repository; @@ -8,7 +9,7 @@ @Repository -public class TodoManager implements IAccountListener { +public class TodoManager implements IAccountListener, IBookListener { /** * todoをすべて管理します @@ -31,6 +32,7 @@ public TodoManager(AccountManager accountManager, BookManager bookManager) { this.bookManager = bookManager; accountManager.addListener(this); + this.bookManager.addListener(this); String[][] accounts = {{"fish", "abc", "def"}, {"bird", "abc", "xyz"}}; createTodo(accounts[0][0], 1, 2024, 5, 28, "ダミーtodo1"); createTodo(accounts[1][0], 1, 2024, 5, 28, "ダミーtodo2"); @@ -365,4 +367,13 @@ deleteAllTodosByAccountId(account.getId()); } + @Override + public void bookChanged(Account account, Book book) { + + } + @Override + public void bookDeleted(Account accountIn, Book book) { + deleteAllTodosByBookId(accountIn.getId(), book.getBookId()); + } + } diff --git a/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java b/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java index df14b1b..e7d5617 100644 --- a/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java +++ b/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java @@ -17,12 +17,10 @@ public class AccountsRest { private final AccountManager accountManager; //finalは書き換えられない - private final FavoriteManager favoriteManager; @Autowired//springbootの決まり - public AccountsRest(AccountManager am, FavoriteManager favoriteManager) { + public AccountsRest(AccountManager am) { accountManager = am; - this.favoriteManager = favoriteManager; } // アカウントの一覧をリストとして返す(GET) @@ -72,7 +70,6 @@ @QueryParam("password")String password) { if(accountManager.checkToken(accountId, token)) { accountManager.deleteAccount(accountId, token, password); - favoriteManager.removeFavoriteById(accountId); return; } //404 diff --git a/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java b/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java index 2fd6a5c..7ac6f4a 100644 --- a/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java +++ b/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java @@ -22,15 +22,11 @@ private final BookManager bookManager; private final AccountManager accountManager; - private final TodoManager todoManager; - private final FavoriteManager favoriteManager; @Autowired // スプリングブートにいうサイン - public BooksRest(BookManager bm, AccountManager ac, TodoManager tm, FavoriteManager fm){//public クラス名()がコンストラクタ + public BooksRest(BookManager bm, AccountManager ac){//public クラス名()がコンストラクタ bookManager = bm; accountManager = ac; - todoManager = tm; - favoriteManager = fm; } @@ -81,8 +77,6 @@ accountCheck(account_id); tokenCheck(account_id, token); - todoManager.deleteAllTodosByBookId(account_id, book_id);//削除時、Todoも消す - favoriteManager.removeFavoriteByBookID(account_id, book_id);//削除時、Favoriteも消す bookManager.deleteBook(account_id, book_id); return "success"; }