001    package nl.cwi.sen1.visbase.factbrowser;
002    
003    import nl.cwi.sen1.relationstores.Factory;
004    import aterm.pure.PureFactory;
005    
006    /**
007     * A Singleton class to share a single factory instance.
008     * @author A. Belgraver
009     * @author R. van Remortel
010     * @date 20-2-2007
011     */
012    public class FactBrowserFactorySingleton {
013    
014        private static Factory m_factory = null;
015        private static PureFactory m_pureFactory = null;
016    
017        /**
018         * Get the factory instance.
019         * @author A. Belgraver
020         * @author R. van Remortel
021         * @return a new Factory (if none is present)
022         * @date 20-2-2007
023         */
024        public static Factory getFactoryInstance() {
025            createInstances();
026            return m_factory;
027        }
028    
029        /**
030         * Get the factory instance.
031         * @author A. Belgraver
032         * @author R. van Remortel
033         * @return a new Factory (if none is present)
034         * @date 20-2-2007
035         */
036        public static PureFactory getPureFactoryInstance() {
037            createInstances();
038            return m_pureFactory;
039        }
040    
041        private static void createInstances() {
042            if (m_factory == null) {
043                m_pureFactory = new PureFactory();
044                m_factory = Factory.getInstance(m_pureFactory);
045            }
046        }
047    
048    }