X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=8ce908b700aa8b4eb86a0bc81c1a645676200895;hb=3d6e9664c7f0eb1ff37111b7cbd1bfdca2798567;hp=5103b7d527afe1b22082cdaf4f50f6de229cc857;hpb=7017646bf42cb265b6df539bb6def40b91d2f968;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 5103b7d..8ce908b 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -52,6 +52,7 @@ import net.pterodactylus.sone.core.event.SoneLockedEvent; import net.pterodactylus.sone.core.event.SoneRemovedEvent; import net.pterodactylus.sone.core.event.SoneUnlockedEvent; import net.pterodactylus.sone.data.Album; +import net.pterodactylus.sone.data.AlbumImpl; import net.pterodactylus.sone.data.Client; import net.pterodactylus.sone.data.Image; import net.pterodactylus.sone.data.Post; @@ -187,9 +188,6 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, /** Trusted identities, sorted by own identities. */ private final Multimap trustedIdentities = Multimaps.synchronizedSetMultimap(HashMultimap.create()); - /** All known albums. */ - private final Map albums = new HashMap(); - /** All known images. */ private final Map images = new HashMap(); @@ -636,14 +634,16 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, * given ID exists and {@code create} is {@code false} */ public Album getAlbum(String albumId, boolean create) { - synchronized (albums) { - Album album = albums.get(albumId); - if (create && (album == null)) { - album = new Album(albumId); - albums.put(albumId, album); - } - return album; + Optional album = database.getAlbum(albumId); + if (album.isPresent()) { + return album.get(); } + if (!create) { + return null; + } + Album newAlbum = new AlbumImpl(albumId); + database.storeAlbum(newAlbum); + return newAlbum; } /** @@ -1033,19 +1033,17 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, } } database.storePostReplies(sone, sone.getReplies()); - synchronized (albums) { - synchronized (images) { - for (Album album : storedSone.get().getRootAlbum().getAlbums()) { - albums.remove(album.getId()); - for (Image image : album.getImages()) { - images.remove(image.getId()); - } + synchronized (images) { + for (Album album : storedSone.get().getRootAlbum().getAlbums()) { + database.removeAlbum(album); + for (Image image : album.getImages()) { + images.remove(image.getId()); } - for (Album album : sone.getRootAlbum().getAlbums()) { - albums.put(album.getId(), album); - for (Image image : album.getImages()) { - images.put(image.getId(), image); - } + } + for (Album album : sone.getRootAlbum().getAlbums()) { + database.storeAlbum(album); + for (Image image : album.getImages()) { + images.put(image.getId(), image); } } } @@ -1603,10 +1601,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, * @return The new album */ public Album createAlbum(Sone sone, Album parent) { - Album album = new Album(); - synchronized (albums) { - albums.put(album.getId(), album); - } + AlbumImpl album = new AlbumImpl(); + database.storeAlbum(album); album.setSone(sone); parent.addAlbum(album); return album; @@ -1626,9 +1622,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, return; } album.getParent().removeAlbum(album); - synchronized (albums) { - albums.remove(album.getId()); - } + database.removeAlbum(album); touchConfiguration(); }