package tv.dyndns.kishibe.qmaclone.client.ranking; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import tv.dyndns.kishibe.qmaclone.client.ServiceAsync; import tv.dyndns.kishibe.qmaclone.client.packet.PacketMonth; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.IsWidget; import com.google.inject.Inject; public class DateRangeSelectorPresenter { interface View extends IsWidget { void setDateRange(List<PacketMonth> months); } private static final Logger logger = Logger.getLogger(DateRangeSelectorPresenter.class .toString()); private final ThemeRankingPresenter themeRankingPresenter; private View view; @Inject public DateRangeSelectorPresenter(ServiceAsync service, ThemeRankingPresenter themeRankingPresenter) { this.themeRankingPresenter = Preconditions.checkNotNull(themeRankingPresenter); service.getThemeRankingDateRanges(callbackGetThemeRankingDateRanges); } @VisibleForTesting final AsyncCallback<List<PacketMonth>> callbackGetThemeRankingDateRanges = new AsyncCallback<List<PacketMonth>>() { @Override public void onSuccess(List<PacketMonth> result) { view.setDateRange(result); } @Override public void onFailure(Throwable caught) { logger.log(Level.WARNING, "テーマモードランキングの日付範囲の取得に失敗しました", caught); } }; public void setView(View view) { this.view = Preconditions.checkNotNull(view); } public void onAllSelected() { themeRankingPresenter.onAllSelected(); } public void onOldSelected() { themeRankingPresenter.onOldSelected(); } public void onYearSelected(int year) { themeRankingPresenter.onYearSelected(year); } public void onMonthSelected(int year, int month) { themeRankingPresenter.onMonthSelected(year, month); } }