X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=6d90516c64b3bf07e796019ec68e75bf80eb7e73;hb=92737bf9d3c70eaa015434ae714a67995df4f6d4;hp=91bd0cc00430e7fe7fe3c0244b2eb89dc0fb8295;hpb=f90d92147c4cff4abe4ae904c6e89d7382b5921e;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 91bd0cc..6d90516 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -17,12 +17,15 @@ package net.pterodactylus.sone.core; +import static com.google.common.base.Optional.fromNullable; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Predicates.not; +import static com.google.common.primitives.Longs.tryParse; import static java.lang.String.format; import static java.util.logging.Level.WARNING; import static net.pterodactylus.sone.data.Sone.LOCAL_SONE_FILTER; +import static net.pterodactylus.sone.data.Sone.toAllAlbums; import java.net.MalformedURLException; import java.util.ArrayList; @@ -75,6 +78,7 @@ import net.pterodactylus.sone.data.TemporaryImage; import net.pterodactylus.sone.database.AlbumBuilder; import net.pterodactylus.sone.database.Database; import net.pterodactylus.sone.database.DatabaseException; +import net.pterodactylus.sone.database.ImageBuilder; import net.pterodactylus.sone.database.PostBuilder; import net.pterodactylus.sone.database.PostProvider; import net.pterodactylus.sone.database.PostReplyBuilder; @@ -607,6 +611,10 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, return database.getAlbum(albumId).orNull(); } + public ImageBuilder imageBuilder() { + return database.newImageBuilder(); + } + /** * Returns the image with the given ID, creating it if necessary. * @@ -758,6 +766,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, logger.log(Level.WARNING, "Given Identity is null!"); return null; } + final Long latestEdition = fromNullable(tryParse( + identity.getProperty("Sone.LatestEdition"))).or(0L); synchronized (sones) { final Sone sone = getRemoteSone(identity.getId(), true); if (sone.isLocal()) { @@ -766,7 +776,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, sone.setIdentity(identity); boolean newSone = sone.getRequestUri() == null; sone.setRequestUri(SoneUri.create(identity.getRequestUri())); - sone.setLatestEdition(Numbers.safeParseLong(identity.getProperty("Sone.LatestEdition"), (long) 0)); + sone.setLatestEdition(latestEdition); if (newSone) { synchronized (knownSones) { newSone = !knownSones.contains(sone.getId()); @@ -1004,7 +1014,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, for (PostReply newPostReply : newPostReplies) { eventBus.post(new NewPostReplyFoundEvent(newPostReply)); } - for (Album album : sone.getRootAlbum().getAlbums()) { + for (Album album : toAllAlbums.apply(sone)) { database.storeAlbum(album); for (Image image : album.getImages()) { database.storeImage(image); @@ -1158,7 +1168,9 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, /* load avatar. */ String avatarId = configuration.getStringValue(sonePrefix + "/Profile/Avatar").getValue(null); if (avatarId != null) { - profile.setAvatar(getImage(avatarId, false)); + final Map images = + configurationSoneParser.getImages(); + profile.setAvatar(images.get(avatarId)); } /* load options. */ @@ -1187,6 +1199,12 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, sone.getRootAlbum().addAlbum(album); } soneInserters.get(sone).setLastInsertFingerprint(lastInsertFingerprint); + for (Album album : toAllAlbums.apply(sone)) { + database.storeAlbum(album); + for (Image image : album.getImages()) { + database.storeImage(image); + } + } } synchronized (knownSones) { for (String friend : friends) {