]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/load/MediaSorter.java
Version 13, August 2011
[GpsPrune.git] / tim / prune / load / MediaSorter.java
index 897b5aa0ff6957e80b859fa485c15b554cf73d8d..e67a32bfd2a45ca0b728ce1b1a8f35556b6c2ef2 100644 (file)
@@ -2,31 +2,39 @@ package tim.prune.load;
 
 import java.io.File;
 import java.util.Comparator;
-import tim.prune.data.MediaFile;
-
+import tim.prune.data.MediaObject;
 
 /**
- * Class to sort photos by name
+ * Class to sort photos, audios by name
  */
-public class MediaSorter implements Comparator<MediaFile>
+public class MediaSorter implements Comparator<MediaObject>
 {
-
        /**
-        * Compare two media files
+        * Compare two media objects
         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
         */
-       public int compare(MediaFile o1, MediaFile o2)
+       public int compare(MediaObject o1, MediaObject o2)
        {
+               int nameComp = o1.getName().compareTo(o2.getName());
+               if (nameComp != 0) {
+                       // names different
+                       return nameComp;
+               }
                File file1 = o1.getFile();
                File file2 = o2.getFile();
-               int nameComp = file1.getName().compareTo(file2.getName());
-               if (nameComp == 0)
+               if (file1 != null && file2 != null)
                {
                        // names same, maybe in different directories
-                       return file1.getAbsolutePath().compareTo(file2.getAbsolutePath());
+                       nameComp = file1.getAbsolutePath().compareTo(file2.getAbsolutePath());
+               }
+               else if (o1.getByteData() != null && o2.getByteData() != null) {
+                       // compare data lengths instead
+                       nameComp = o1.getByteData().length - o2.getByteData().length;
+               }
+               else {
+                       // one's a file, one's from data
+                       nameComp = 1;
                }
-               // names different
                return nameComp;
        }
-
 }