package com.myqsc.mobile2.Timetable.Information;
import android.content.Context;
import java.util.Calendar;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
// TODO: Synchronization confirmation.
// TODO: Invalidate the cache by cache.evictAll() when changes are made.
public class TimetableManager {
private static final Object instanceLock = new Object();
private static TimetableManager instance = null;
private Context context;
private Set<TaskProvider> taskProviders = Collections.synchronizedSet(new LinkedHashSet<TaskProvider>());
private TimetableManager(Context context) {
this.context = context;
// TODO: Move this statement to package Curriculum & Examination thus registering there.
// TODO: Maybe this should be loaded according to permanent data storage.
taskProviders.add(new CurriculumTaskProvider(context));
taskProviders.add(new ExaminationTaskProvider(context));
// TODO: Remove debug statement.
//taskProviders.add(new DummyTaskProvider());
}
public static TimetableManager getInstance(Context context) {
synchronized (instanceLock) {
if (instance == null) {
instance = new TimetableManager(context.getApplicationContext());
}
return instance;
}
}
public SortedSet<Task> getTimetable(Calendar date) {
SortedSet<Task> timetable = Collections.synchronizedSortedSet(new TreeSet<Task>());
for (TaskProvider taskProvider : taskProviders) {
timetable.addAll(taskProvider.getTasks(date));
}
return timetable;
}
}