package xsched.analysis.core;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
public class AnalysisSession<Instance, TV, SM extends TaskScheduleManager<TV>> {
private HashMap<Instance, AnalysisTask<Instance, TV, SM>> tasks = new HashMap<Instance, AnalysisTask<Instance, TV, SM>>();
public Collection<AnalysisTask<Instance, TV, SM>> tasks() {
return tasks.values();
}
public AnalysisTask<Instance, TV, SM> taskForID(Instance id) {
AnalysisTask<Instance, TV, SM> result = tasks.get(id);
assert result != null;
return result;
}
public Collection<AnalysisTask<Instance, TV, SM>> tasksWithIDs(Collection<Instance> ids) {
HashSet<AnalysisTask<Instance, TV, SM>> result = new HashSet<AnalysisTask<Instance, TV, SM>>();
for(Instance id : ids) {
result.add(tasks.get(id));
}
return result;
}
public AnalysisTask<Instance, TV, SM> createTask(Instance id, TaskSchedule<TV, SM> schedule) {
assert ! tasks.containsKey(id);
AnalysisTask<Instance, TV, SM> result = new AnalysisTask<Instance, TV, SM>(this, id, schedule);
tasks.put(id, result);
return result;
}
}