package aimax.osm.gps; import java.io.File; /** * Singleton, which creates NMEA reader instances and hides their * implementation. Reflection is used, to avoid compilation errors even * if the needed serial port reader class does not exist. * @author Ruediger Lunde */ public class NmeaReaderFactory { private static NmeaReaderFactory instance; public static NmeaReaderFactory instance() { if (instance == null) instance = new NmeaReaderFactory(); return instance; } /** Returns the factory. */ public static void setInstance(NmeaReaderFactory factory) { instance = factory; } /** Creates the factory instance. */ private NmeaReaderFactory() { } /** * Creates a NMEA file reader. The file stream is not automatically * opened! */ public NmeaReader createFileReader(File file) { return new NmeaFileReader(file); } /** * Creates a new NMEA serial port reader. * The implementation uses reflection to create an instance of class * <code>aimax.osm.gps.NmeaSerialPortReader</code>. Null is returned, * if the class does not exist, but no compilation error. * @return A NmeaReader or null. */ public NmeaReader createSerialPortReader() { NmeaReader result = null; try { Class<?> cls = Class.forName("aimax.osm.gps.NmeaSerialPortReader"); result = (NmeaReader) cls.newInstance(); } catch (Throwable e) { e.printStackTrace(); } return result; } }