package dk.thoerup.traininfo.provider; public class ProviderFactory { private static DepartureProvider departureProvider = null; private static StationProvider stationProvider = null; private static TimetableProvider timetableProvider = null; private static final boolean DEBUG = false; //TODO: this one really doesn't belong here ... and damn it is ugly code public static void purgeOldEntries() { synchronized (ProviderFactory.class) { if (stationProvider != null && stationProvider instanceof XmlStationProvider) { ((XmlStationProvider)stationProvider).stationCache.purgeOldEntries(); } if (departureProvider != null && departureProvider instanceof XmlDepartureProvider) { ((XmlDepartureProvider)departureProvider).departureCache.purgeOldEntries(); } if (timetableProvider != null && timetableProvider instanceof XmlTimetableProvider) { ((XmlTimetableProvider)timetableProvider).timetableCache.purgeOldEntries(); } } } public static DepartureProvider getDepartureProvider() { if (departureProvider == null) { if (!DEBUG) { departureProvider = new XmlDepartureProvider(); } else { departureProvider = new DebugProvider(); } } return departureProvider; } public static StationProvider getStationProvider() { if (stationProvider == null) { if (!DEBUG) { stationProvider = new XmlStationProvider(); } else { stationProvider = new DebugProvider(); } } return stationProvider; } public static TimetableProvider getTimetableProvider() { if (timetableProvider == null) { if (!DEBUG) { timetableProvider = new XmlTimetableProvider(); } else { timetableProvider = new DebugProvider(); } } return timetableProvider; } }