Add isRoot() method to Album, only dump album ID in sone.xml if the parent is not...
[Sone.git] / src / main / java / net / pterodactylus / sone / data / Album.java
index aa14ede..8238b3f 100644 (file)
@@ -44,7 +44,7 @@ import com.google.common.hash.Hashing;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class Album implements Fingerprintable {
+public class Album implements Identified, Fingerprintable {
 
        /** Compares two {@link Album}s by {@link #getTitle()}. */
        public static final Comparator<Album> TITLE_COMPARATOR = new Comparator<Album>() {
@@ -86,11 +86,19 @@ public class Album implements Fingerprintable {
 
                @Override
                public boolean apply(Album album) {
+                       /* so, we flatten all albums below the given one and check whether at least one album… */
                        return FluentIterable.from(asList(album)).transformAndConcat(FLATTENER).anyMatch(new Predicate<Album>() {
 
                                @Override
                                public boolean apply(Album album) {
-                                       return !album.getImages().isEmpty();
+                                       /* …contains any inserted images. */
+                                       return !album.getImages().isEmpty() && FluentIterable.from(album.getImages()).allMatch(new Predicate<Image>() {
+
+                                               @Override
+                                               public boolean apply(Image input) {
+                                                       return input.isInserted();
+                                               }
+                                       });
                                }
                        });
                }
@@ -400,6 +408,16 @@ public class Album implements Fingerprintable {
        }
 
        /**
+        * Returns whether this album is an identitiy’s root album.
+        *
+        * @return {@code true} if this album is an identity’s root album, {@code
+        *         false} otherwise
+        */
+       public boolean isRoot() {
+               return parent == null;
+       }
+
+       /**
         * Returns the parent album of this album.
         *
         * @return The parent album of this album, or {@code null} if this album