package com.shizhefei.task.datasource;
import com.shizhefei.mvc.IAsyncDataSource;
import com.shizhefei.mvc.IDataSource;
import com.shizhefei.task.IAsyncTask;
/**
* Created by luckyjayce on 2017/4/17.
*/
public class DataSources {
/**
* 先执行task,再执行dataSource,该函数会返回新的dataSource
* @param task
* @param dataSource
* @param <DATA>
* @return
*/
public static <DATA> IAsyncDataSource<DATA> concatWith(IAsyncTask<Void> task, IAsyncDataSource<DATA> dataSource) {
return new ConcatDataSource<>(task, dataSource);
}
/**
* 先执行task,再执行dataSource,该函数会返回新的dataSource
* @param task
* @param dataSource
* @param <DATA>
* @return
*/
public static <DATA> IAsyncDataSource<DATA> concatWith(IAsyncTask<Void> task, IDataSource<DATA> dataSource) {
return new ConcatDataSource<>(task, async(dataSource));
}
/**
* 同步dataSource变为异步dataSource
* @param dataSource
* @param <DATA>
* @return
*/
public static <DATA> IAsyncDataSource<DATA> async(IDataSource<DATA> dataSource) {
return new AsyncDataSource<>(dataSource);
}
}