X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=c30aef60c98a716ffccb7283ce24cb307b91b5f0;hb=d537e73df4c53b205f2c06067a6bb4616f45c530;hp=8a6236a1713a39f3d767a26387e6c4600bb43f1e;hpb=41ad88e59a3249031c6b546c8189204d99596e26;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 8a6236a..c30aef6 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -60,7 +60,7 @@ import freenet.keys.FreenetURI; * * @author David ‘Bombe’ Roden */ -public class Core implements IdentityListener, UpdateListener { +public class Core implements IdentityListener, UpdateListener, ImageInsertListener { /** * Enumeration for the possible states of a {@link Sone}. @@ -109,6 +109,9 @@ public class Core implements IdentityListener, UpdateListener { /** The Sone downloader. */ private final SoneDownloader soneDownloader; + /** The image inserter. */ + private final ImageInserter imageInserter; + /** The update checker. */ private final UpdateChecker updateChecker; @@ -192,6 +195,7 @@ public class Core implements IdentityListener, UpdateListener { this.freenetInterface = freenetInterface; this.identityManager = identityManager; this.soneDownloader = new SoneDownloader(this, freenetInterface); + this.imageInserter = new ImageInserter(this, freenetInterface); this.updateChecker = new UpdateChecker(freenetInterface); } @@ -1339,8 +1343,9 @@ public class Core implements IdentityListener, UpdateListener { /* load albums. */ List topLevelAlbums = new ArrayList(); + int albumCounter = 0; while (true) { - String albumPrefix = sonePrefix + "/Albums/" + albums.size(); + String albumPrefix = sonePrefix + "/Albums/" + albumCounter++; String albumId = configuration.getStringValue(albumPrefix + "/ID").getValue(null); if (albumId == null) { break; @@ -1859,6 +1864,7 @@ public class Core implements IdentityListener, UpdateListener { synchronized (images) { images.put(image.getId(), image); } + imageInserter.insertImage(temporaryImage, image); return image; } @@ -1886,7 +1892,7 @@ public class Core implements IdentityListener, UpdateListener { * @param temporaryImage * The temporary image to delete */ - public void deteleTemporaryImage(TemporaryImage temporaryImage) { + public void deleteTemporaryImage(TemporaryImage temporaryImage) { Validation.begin().isNotNull("Temporary Image", temporaryImage).check(); deleteTemporaryImage(temporaryImage.getId()); } @@ -2182,6 +2188,49 @@ public class Core implements IdentityListener, UpdateListener { coreListenerManager.fireUpdateFound(version, releaseTime, latestEdition); } + // + // INTERFACE ImageInsertListener + // + + /** + * {@inheritDoc} + */ + @Override + public void imageInsertStarted(Image image) { + logger.log(Level.WARNING, "Image insert started for " + image); + coreListenerManager.fireImageInsertStarted(image); + } + + /** + * {@inheritDoc} + */ + @Override + public void imageInsertAborted(Image image) { + logger.log(Level.WARNING, "Image insert aborted for " + image); + coreListenerManager.fireImageInsertAborted(image); + } + + /** + * {@inheritDoc} + */ + @Override + public void imageInsertFinished(Image image, FreenetURI key) { + logger.log(Level.WARNING, "Image insert finished for " + image + ": " + key); + image.setKey(key.toString()); + deleteTemporaryImage(image.getId()); + saveSone(image.getSone()); + coreListenerManager.fireImageInsertFinished(image); + } + + /** + * {@inheritDoc} + */ + @Override + public void imageInsertFailed(Image image, Throwable cause) { + logger.log(Level.WARNING, "Image insert failed for " + image, cause); + coreListenerManager.fireImageInsertFailed(image, cause); + } + /** * Convenience interface for external classes that want to access the core’s * configuration.