    001    package org.maltparser.parser.algorithm.nivre;
    002
    003    import org.maltparser.core.exception.MaltChainedException;
    004    import org.maltparser.core.feature.function.Function;
    005    import org.maltparser.parser.AbstractParserFactory;
    006    import org.maltparser.parser.Algorithm;
    007    import org.maltparser.parser.DependencyParserConfig;
    008    import org.maltparser.parser.ParserConfiguration;
    009    /**
    010     * @author Johan Hall
    011     *
    012     */
    013    public abstract class NivreFactory implements AbstractParserFactory {
    014            protected Algorithm algorithm;
    015            protected DependencyParserConfig manager;
    016
    017            public NivreFactory(Algorithm algorithm) {
    018                    setAlgorithm(algorithm);
    019                    setManager(algorithm.getManager());
    020            }
    021
    022            public ParserConfiguration makeParserConfiguration() throws MaltChainedException {
    023                    if (manager.getConfigLogger().isInfoEnabled()) {
    024                            manager.getConfigLogger().info("  Parser configuration : Nivre with "+manager.getOptionValue("nivre", "root_handling").toString().toUpperCase()+" root handling\n");
    025                    }
    026                    return new NivreConfig(manager.getSymbolTables(), manager.getOptionValue("nivre", "root_handling").toString());
    027            }
    028
    029            public Function makeFunction(String subFunctionName) throws MaltChainedException {
    030                    return new NivreAddressFunction(subFunctionName, algorithm);
    031            }
    032
    033            public Algorithm getAlgorithm() {
    034                    return algorithm;
    035            }
    036
    037            public void setAlgorithm(Algorithm algorithm) {
    038                    this.algorithm = algorithm;
    039            }
    040
    041            public DependencyParserConfig getManager() {
    042                    return manager;
    043            }
    044
    045            public void setManager(DependencyParserConfig manager) {
    046                    this.manager = manager;
    047            }
    048    }