X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=babe6fe5246f3a4aed5cbde80109ac672339f549;hb=20033c2725145859c3a4d8d75a3008b9fc099b3c;hp=bc96715a151f9eec096564ac0d246d388ff6341c;hpb=adbd60904ae1852c29d3e49f2b25af12b8c0814f;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 bc96715..babe6fe 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -35,10 +35,13 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import net.pterodactylus.sone.data.Album; +import net.pterodactylus.sone.data.Image; 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.DefaultAlbumBuilder; +import net.pterodactylus.sone.database.AlbumBuilder; import net.pterodactylus.sone.database.Database; import net.pterodactylus.sone.database.DatabaseException; import net.pterodactylus.sone.database.PostBuilder; @@ -102,6 +105,8 @@ public class MemoryDatabase extends AbstractService implements Database { private final Map allAlbums = new HashMap(); + private final Map allImages = new HashMap(); + /** * Creates a new memory database. * @@ -430,6 +435,15 @@ public class MemoryDatabase extends AbstractService implements Database { } // + // ALBUMBUILDERFACTORY METHODS + // + + @Override + public AlbumBuilder newAlbumBuilder() { + return new DefaultAlbumBuilder(); + } + + // // ALBUMSTORE METHODS // @@ -454,6 +468,44 @@ public class MemoryDatabase extends AbstractService implements Database { } // + // IMAGEPROVIDER METHODS + // + + @Override + public Optional getImage(String imageId) { + lock.readLock().lock(); + try { + return fromNullable(allImages.get(imageId)); + } finally { + lock.readLock().unlock(); + } + } + + // + // IMAGESTORE METHODS + // + + @Override + public void storeImage(Image image) { + lock.writeLock().lock(); + try { + allImages.put(image.getId(), image); + } finally { + lock.writeLock().unlock(); + } + } + + @Override + public void removeImage(Image image) { + lock.writeLock().lock(); + try { + allImages.remove(image.getId()); + } finally { + lock.writeLock().unlock(); + } + } + + // // PACKAGE-PRIVATE METHODS //