diff --git a/src/main/java/org/ntlab/citrusserver/repositories/BookManager.java b/src/main/java/org/ntlab/citrusserver/repositories/BookManager.java index d826fda..b1562c8 100644 --- a/src/main/java/org/ntlab/citrusserver/repositories/BookManager.java +++ b/src/main/java/org/ntlab/citrusserver/repositories/BookManager.java @@ -4,7 +4,10 @@ import org.ntlab.citrusserver.entities.Book; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; + +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; @Repository public class BookManager { @@ -12,6 +15,24 @@ private final HashMap> booksMap = new HashMap<>(); private final AccountManager accountManager; //仮 + private final List iBookListeners = new ArrayList<>(); + + //IBookListenerを追加 + private void addListener(IBookListener iBookListener) + { + iBookListeners.add(iBookListener); + } + + //IBookListenerに通知する + private void notifyListener(Account account, Book book) + { + for(IBookListener iBookListener : iBookListeners) + { + iBookListener.bookChanged(account, book); + } + } + + @Autowired public BookManager(AccountManager accountManager) { this.accountManager = accountManager; @@ -87,13 +108,16 @@ //公開情報を変更する public int putPublicity(String accountId, Integer bookId, Boolean publicity) { - if(accountManager.getAccount(accountId) == null) return -1; //アカウントが存在しない + Account account = accountManager.getAccount(accountId); + Book book = booksMap.get(accountId).get(bookId); + if(account == null) return -1; //アカウントが存在しない else { - booksMap.get(accountId).get(bookId).setPublicity(publicity); + if(book.getPublicity() == publicity) return 1;//変更が無ければ終了 + book.setPublicity(publicity); + notifyListener(account, book); return 1; } - } //((( 目標・振り返りは省略 )))