X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=0f0b6d3f2451b75232cab055d4af68f1a0da247f;hp=a6a33169e21b47691c01203b3800d851f41ad95e;hb=91c4f73f647aabe99e44bc3d2fadb4c494d3b621;hpb=f313a48bfc36f9968d18b76436739c093b562b7a diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index a6a3316..0f0b6d3 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -52,7 +52,6 @@ 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; @@ -188,9 +187,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(); @@ -637,14 +633,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 AlbumImpl(albumId); - albums.put(albumId, album); - } - return album; + Optional album = database.getAlbum(albumId); + if (album.isPresent()) { + return album.get(); } + if (!create) { + return null; + } + Album newAlbum = database.newAlbumBuilder().withId(albumId).build(); + database.storeAlbum(newAlbum); + return newAlbum; } /** @@ -1034,19 +1032,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); } } } @@ -1604,10 +1600,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, * @return The new album */ public Album createAlbum(Sone sone, Album parent) { - AlbumImpl album = new AlbumImpl(); - synchronized (albums) { - albums.put(album.getId(), album); - } + Album album = database.newAlbumBuilder().randomId().build(); + database.storeAlbum(album); album.setSone(sone); parent.addAlbum(album); return album; @@ -1627,9 +1621,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, return; } album.getParent().removeAlbum(album); - synchronized (albums) { - albums.remove(album.getId()); - } + database.removeAlbum(album); touchConfiguration(); }