X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=1ec4d7b6f7482a1d5b3e1e943ccf6d656111d693;hb=c2f9f5293a81bdf2606f56f3822779a4639a1356;hp=5103b7d527afe1b22082cdaf4f50f6de229cc857;hpb=c2e868714435ac7c75d77d1911d0dfb00393d051;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..1ec4d7b 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -187,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(); @@ -636,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 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 = database.newAlbumBuilder().withId(albumId).build(); + database.storeAlbum(newAlbum); + return newAlbum; } /** @@ -1033,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); } } } @@ -1250,7 +1247,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, logger.log(Level.WARNING, "Invalid album found, aborting load!"); return; } - Album album = getAlbum(albumId).setSone(sone).setTitle(albumTitle).setDescription(albumDescription).setAlbumImage(albumImageId); + Album album = getAlbum(albumId).setSone(sone).modify().setTitle(albumTitle).setDescription(albumDescription).setAlbumImage(albumImageId).update(); if (albumParentId != null) { Album parentAlbum = getAlbum(albumParentId, false); if (parentAlbum == null) { @@ -1603,10 +1600,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); - } + Album album = database.newAlbumBuilder().randomId().build(); + database.storeAlbum(album); album.setSone(sone); parent.addAlbum(album); return album; @@ -1626,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(); }