- /** Comparator that sorts Sones by last activity (least recent active first). */
- public static final Comparator<Sone> LAST_ACTIVITY_COMPARATOR = new Comparator<Sone>() {
-
- @Override
- public int compare(Sone firstSone, Sone secondSone) {
- return (int) Math.min(Integer.MAX_VALUE, Math.max(Integer.MIN_VALUE, secondSone.getTime() - firstSone.getTime()));
- }
- };
-
- /** Comparator that sorts Sones by numbers of posts (descending). */
- public static final Comparator<Sone> POST_COUNT_COMPARATOR = new Comparator<Sone>() {
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int compare(Sone leftSone, Sone rightSone) {
- return (leftSone.getPosts().size() != rightSone.getPosts().size()) ? (rightSone.getPosts().size() - leftSone.getPosts().size()) : (rightSone.getReplies().size() - leftSone.getReplies().size());
- }
- };
-
- /** Comparator that sorts Sones by number of images (descending). */
- public static final Comparator<Sone> IMAGE_COUNT_COMPARATOR = new Comparator<Sone>() {
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int compare(Sone leftSone, Sone rightSone) {
- int rightSoneImageCount = from(asList(rightSone.getRootAlbum())).transformAndConcat(FLATTENER).transformAndConcat(IMAGES).size();
- int leftSoneImageCount = from(asList(leftSone.getRootAlbum())).transformAndConcat(FLATTENER).transformAndConcat(IMAGES).size();
- /* sort descending. */
- return Ints.compare(rightSoneImageCount, leftSoneImageCount);
- }
- };
-
- public static final Function<Sone, List<Album>> toAllAlbums = new Function<Sone, List<Album>>() {
- @Override
- public List<Album> apply(@Nullable Sone sone) {
- return (sone == null) ? Collections.<Album>emptyList() : FLATTENER.apply(
- sone.getRootAlbum());
- }
- };
-
- public static final Function<Sone, List<Image>> toAllImages = new Function<Sone, List<Image>>() {
- @Override
- public List<Image> apply(@Nullable Sone sone) {
- return (sone == null) ? Collections.<Image>emptyList() :
- from(FLATTENER.apply(sone.getRootAlbum()))
- .transformAndConcat(IMAGES).toList();
- }
- };
-