package org.wikipedia.readinglist;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ReadingLists {
public static final int SORT_BY_NAME_ASC = 0;
public static final int SORT_BY_NAME_DESC = 1;
public static final int SORT_BY_RECENT_ASC = 2;
public static final int SORT_BY_RECENT_DESC = 3;
@NonNull private List<ReadingList> lists = new ArrayList<>();
public void set(@NonNull List<ReadingList> lists) {
this.lists = lists;
}
@NonNull public List<String> getTitles() {
List<String> result = new ArrayList<>();
for (ReadingList list : lists) {
result.add(list.getTitle());
}
return result;
}
@NonNull public List<String> getTitlesExcept(@NonNull String title) {
List<String> result = getTitles();
result.remove(title);
return result;
}
public ReadingList get(int pos) {
return lists.get(pos);
}
@Nullable public ReadingList get(@Nullable String title) {
for (ReadingList list : lists) {
if (list.getTitle().equals(title)) {
return list;
}
}
return null;
}
public int size() {
return lists.size();
}
public boolean isEmpty() {
return lists.isEmpty();
}
public void sort(int sortMode) {
switch (sortMode) {
case SORT_BY_NAME_ASC:
Collections.sort(lists, new Comparator<ReadingList>() {
@Override
public int compare(ReadingList lhs, ReadingList rhs) {
return lhs.getTitle().compareTo(rhs.getTitle());
}
});
break;
case SORT_BY_NAME_DESC:
Collections.sort(lists, new Comparator<ReadingList>() {
@Override
public int compare(ReadingList lhs, ReadingList rhs) {
return rhs.getTitle().compareTo(lhs.getTitle());
}
});
break;
case SORT_BY_RECENT_ASC:
Collections.sort(lists, new Comparator<ReadingList>() {
@Override
public int compare(ReadingList lhs, ReadingList rhs) {
return ((Long) lhs.atime()).compareTo(rhs.atime());
}
});
break;
case SORT_BY_RECENT_DESC:
Collections.sort(lists, new Comparator<ReadingList>() {
@Override
public int compare(ReadingList lhs, ReadingList rhs) {
return ((Long) rhs.atime()).compareTo(lhs.atime());
}
});
break;
default:
break;
}
}
}