001package org.maltparser.parser;
002
003import org.maltparser.core.feature.AbstractFeatureFactory;
004import org.maltparser.core.feature.FeatureRegistry;
005import org.maltparser.core.helper.HashMap;
006import org.maltparser.core.io.dataformat.DataFormatInstance;
007import org.maltparser.core.symbol.SymbolTableHandler;
008
009public class ParserRegistry implements FeatureRegistry {
010        private AbstractFeatureFactory abstractParserFactory;
011        private AlgoritmInterface algorithm;
012        private SymbolTableHandler symbolTableHandler;
013        private DataFormatInstance dataFormatInstance;
014        private final HashMap<Class<?>, Object> registry;
015        
016        public ParserRegistry() {
017                this.registry = new HashMap<Class<?>, Object>();
018        }
019
020        public Object get(Class<?> key) {
021                return registry.get(key);
022        }
023        
024        public void put(Class<?> key, Object value) {
025                registry.put(key, value);
026                if (key == org.maltparser.parser.AbstractParserFactory.class) {
027                        abstractParserFactory = (AbstractParserFactory)value;
028                } else if (key == org.maltparser.parser.AlgoritmInterface.class) {
029                        algorithm = (AlgoritmInterface)value;
030                }
031        }
032        
033        public AbstractFeatureFactory getFactory(Class<?> clazz) {
034                return abstractParserFactory;
035        }
036        
037        public SymbolTableHandler getSymbolTableHandler() {
038                return symbolTableHandler;
039        }
040
041        public void setSymbolTableHandler(SymbolTableHandler symbolTableHandler) {
042                this.symbolTableHandler = symbolTableHandler;
043                this.registry.put(org.maltparser.core.symbol.SymbolTableHandler.class, symbolTableHandler);
044        }
045
046        public DataFormatInstance getDataFormatInstance() {
047                return dataFormatInstance;
048        }
049
050        public void setDataFormatInstance(DataFormatInstance dataFormatInstance) {
051                this.dataFormatInstance = dataFormatInstance;
052                this.registry.put(org.maltparser.core.io.dataformat.DataFormatInstance.class, dataFormatInstance);
053        }
054
055        public AbstractFeatureFactory getAbstractParserFeatureFactory() {
056                return abstractParserFactory;
057        }
058
059        public void setAbstractParserFeatureFactory(AbstractParserFactory _abstractParserFactory) {
060                this.registry.put(org.maltparser.parser.AbstractParserFactory.class, _abstractParserFactory);
061                this.abstractParserFactory = _abstractParserFactory;
062        }
063
064        public AlgoritmInterface getAlgorithm() {
065                return algorithm;
066        }
067
068        public void setAlgorithm(AlgoritmInterface algorithm) {
069                this.registry.put(org.maltparser.parser.AlgoritmInterface.class, algorithm);
070                this.algorithm = algorithm;
071        }
072}