001    package nl.cwi.sen1.visplugin;
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 VisualizationFactorySingleton {
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        /**
042         * Allows for initialization of the factories with the factories given by
043         * the MetaStudio.
044         *
045         * @param pureFactory Pure factory.
046         * @param factory RStore factory.
047         *
048         * @author Arend van Beelen
049         * @date 13-03-2007
050         */
051        public static void initInstances(PureFactory pureFactory, Factory factory) {
052            m_pureFactory = pureFactory;
053            m_factory = factory;
054        }
055    
056        private static void createInstances() {
057            if (m_factory == null) {
058                m_pureFactory = new PureFactory();
059                m_factory = Factory.getInstance(m_pureFactory);
060            }
061        }
062    
063    }