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 MetroProvider metroProvider = 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(); } if (metroProvider != null && metroProvider instanceof XmlMetroProvider) { ((XmlMetroProvider)metroProvider).metroCache.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; } public static MetroProvider getMetroProvider() { if (metroProvider == null) { if (!DEBUG) { metroProvider = new XmlMetroProvider(); } else { metroProvider = new DebugProvider(); } } return metroProvider; } }