X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=77ff2f4df24f8f78cd324fbb3bc954e1ccefdc2c;hb=1e26b571992db3757943c00ac4db6d7131c5aed3;hp=504d155aea8dd6867326ef732cfc94f4e17ae653;hpb=b6d309d2befe368814220ecb4e609616cf070cab;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java index 504d155..77ff2f4 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -34,10 +34,13 @@ import java.util.TreeSet; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.PostReply; import net.pterodactylus.sone.data.Reply; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.data.impl.AlbumBuilderImpl; +import net.pterodactylus.sone.database.AlbumBuilder; import net.pterodactylus.sone.database.Database; import net.pterodactylus.sone.database.DatabaseException; import net.pterodactylus.sone.database.PostBuilder; @@ -99,6 +102,8 @@ public class MemoryDatabase extends AbstractService implements Database { /** Whether post replies are known. */ private final Set knownPostReplies = new HashSet(); + private final Map allAlbums = new HashMap(); + /** * Creates a new memory database. * @@ -413,6 +418,53 @@ public class MemoryDatabase extends AbstractService implements Database { } // + // ALBUMPROVDER METHODS + // + + @Override + public Optional getAlbum(String albumId) { + lock.readLock().lock(); + try { + return fromNullable(allAlbums.get(albumId)); + } finally { + lock.readLock().unlock(); + } + } + + // + // ALBUMBUILDERFACTORY METHODS + // + + @Override + public AlbumBuilder newAlbumBuilder() { + return new AlbumBuilderImpl(); + } + + // + // ALBUMSTORE METHODS + // + + @Override + public void storeAlbum(Album album) { + lock.writeLock().lock(); + try { + allAlbums.put(album.getId(), album); + } finally { + lock.writeLock().unlock(); + } + } + + @Override + public void removeAlbum(Album album) { + lock.writeLock().lock(); + try { + allAlbums.remove(album.getId()); + } finally { + lock.writeLock().unlock(); + } + } + + // // PACKAGE-PRIVATE METHODS //