Let core be an album provider
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Core.java
index c1d51a3..140d80c 100644 (file)
@@ -73,6 +73,7 @@ import net.pterodactylus.sone.data.Sone.ShowCustomAvatars;
 import net.pterodactylus.sone.data.Sone.SoneStatus;
 import net.pterodactylus.sone.data.TemporaryImage;
 import net.pterodactylus.sone.database.AlbumBuilder;
+import net.pterodactylus.sone.database.AlbumProvider;
 import net.pterodactylus.sone.database.Database;
 import net.pterodactylus.sone.database.DatabaseException;
 import net.pterodactylus.sone.database.ImageBuilder;
@@ -115,7 +116,7 @@ import com.google.inject.Singleton;
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 @Singleton
-public class Core extends AbstractService implements SoneProvider, PostProvider, PostReplyProvider {
+public class Core extends AbstractService implements SoneProvider, PostProvider, PostReplyProvider, AlbumProvider {
 
        /** The logger. */
        private static final Logger logger = getLogger(Core.class.getName());
@@ -559,8 +560,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
         * @return The album with the given ID, or {@code null} if no album with the
         *         given ID exists
         */
-       public Album getAlbum(String albumId) {
-               return database.getAlbum(albumId).orNull();
+       public Optional<Album> getAlbum(String albumId) {
+               return database.getAlbum(albumId);
        }
 
        public ImageBuilder imageBuilder() {
@@ -1512,7 +1513,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                        int replyCounter = 0;
                        for (PostReply reply : sone.getReplies()) {
                                String replyPrefix = sonePrefix + "/Replies/" + replyCounter++;
-                               configuration.getStringValue(replyPrefix + "/ID").setValue(reply.getId());
+                               configuration.getStringValue(replyPrefix + "/ID").setValue(reply.getInternalId());
                                configuration.getStringValue(replyPrefix + "/Post/ID").setValue(reply.getPostId());
                                configuration.getLongValue(replyPrefix + "/Time").setValue(reply.getTime());
                                configuration.getStringValue(replyPrefix + "/Text").setValue(reply.getText());
@@ -1621,6 +1622,9 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                                configuration.getStringValue("SoneFollowingTimes/" + soneCounter + "/Sone").setValue(null);
                        }
 
+                       /* save compatibility modes. */
+                       configuration.getBooleanValue("CompatibilityModes/OldElementIds").setValue(compatibilityModes.contains(CompatibilityMode.oldElementIds));
+
                        /* save known posts. */
                        database.save();
 
@@ -1669,6 +1673,11 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                        }
                        ++soneCounter;
                }
+
+               /* load compatibility modes. */
+               if (configuration.getBooleanValue("CompatibilityModes/OldElementIds").getValue(false)) {
+                       setCompatibilityMode(CompatibilityMode.oldElementIds);
+               }
        }
 
        /**