X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneDownloaderImpl.java;h=d59f1f5b4fd34421bc075ffda580b3166ebc0c7e;hb=f67d0cbb1bc328c0072fe5f795ffb31cf1b987bb;hp=9da1ba05091edb2075498c1cc4d225ef91f9b9f3;hpb=471c14dabae91b2012eecb2b63be5dccb1229ff7;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/SoneDownloaderImpl.java b/src/main/java/net/pterodactylus/sone/core/SoneDownloaderImpl.java index 9da1ba0..d59f1f5 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneDownloaderImpl.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneDownloaderImpl.java @@ -99,22 +99,23 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade * The Sone to add */ @Override - public void addSone(Sone sone) { + public void addSone(final Sone sone) { if (!sones.add(sone)) { freenetInterface.unregisterUsk(sone); } - freenetInterface.registerUsk(sone, this); + freenetInterface.registerUsk(sone, new SoneUpdater() { + @Override + public void updateSone(long edition) { + if (edition > sone.getLatestEdition()) { + sone.setLatestEdition(edition); + new Thread(fetchSoneAction(sone), + "Sone Downloader").start(); + } + } + }); } - /** - * Fetches the updated Sone. This method is a callback method for - * {@link FreenetInterface#registerUsk(Sone, SoneDownloader)}. - * - * @param sone - * The Sone to fetch - */ - @Override - public void fetchSone(Sone sone) { + private void fetchSone(Sone sone) { fetchSone(sone, sone.getRequestUri().sskForUSK()); } @@ -449,13 +450,20 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade } Album parent = null; if (parentId != null) { - parent = core.getAlbum(parentId, false); + parent = core.getAlbum(parentId); if (parent == null) { logger.log(Level.WARNING, String.format("Downloaded Sone %s has album with invalid parent!", sone)); return null; } } - Album album = core.getAlbum(id).setSone(sone).modify().setTitle(title).setDescription(description).update(); + Album album = core.albumBuilder() + .withId(id) + .by(sone) + .build() + .modify() + .setTitle(title) + .setDescription(description) + .update(); if (parent != null) { parent.addAlbum(album); } else {