package shts.jp.android.nogifeed.entities;
import android.content.Context;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import shts.jp.android.nogifeed.common.Logger;
public class NewsList extends ArrayList<News> {
private static final String TAG = NewsList.class.getSimpleName();
public void filter(Context context) {
NewsList filteredNewsList = new NewsList();
List<News.Type> filteredTypes = News.Type.getFilteredTypes(context);
if (filteredTypes.isEmpty()) {
return;
}
for (News.Type type : filteredTypes) {
filteredNewsList.addAll(filterNews(type));
}
clear();
addAll(filteredNewsList);
}
private NewsList filterNews(News.Type type) {
NewsList filteredNews = new NewsList();
for (News news : this) {
if (news.iconType.equals(type.iconTypeText)) {
filteredNews.add(news);
}
}
return filteredNews;
}
public void sort() {
Collections.sort(this, new DateComparator(DateComparator.DESC));
}
private class DateComparator implements Comparator<News> {
private static final int ASC = 1; //昇順
private static final int DESC = -1; //降順
private int sort = ASC; //デフォルトは昇順
private DateComparator(int sort) {
this.sort = sort;
}
@Override
public int compare(News lhs, News rhs) {
final Date lhsDate = lhs.getDate();
if (lhsDate == null) {
Logger.w(TAG, "lhsDate is null");
return 0;
}
final Date rhsDate = rhs.getDate();
if (rhsDate == null) {
Logger.w(TAG, "rhsDate is null");
return 0;
}
return lhsDate.compareTo(rhsDate) * sort;
}
}
}