001package org.maltparser.parser.algorithm.twoplanar;
002
003import org.maltparser.core.exception.MaltChainedException;
004import org.maltparser.core.feature.FeatureRegistry;
005import org.maltparser.core.feature.function.Function;
006import org.maltparser.parser.AbstractParserFactory;
007import org.maltparser.parser.AlgoritmInterface;
008import org.maltparser.parser.DependencyParserConfig;
009import org.maltparser.parser.ParserConfiguration;
010import org.maltparser.parser.ParserRegistry;
011/**
012 * @author Carlos Gomez Rodriguez
013 *
014 */
015public abstract class TwoPlanarFactory implements AbstractParserFactory {
016        protected final DependencyParserConfig manager;
017        
018        public TwoPlanarFactory(DependencyParserConfig _manager) {
019                this.manager = _manager;
020        }
021        
022        public ParserConfiguration makeParserConfiguration() throws MaltChainedException {
023                if (manager.isLoggerInfoEnabled()) {
024                        manager.logInfoMessage("  Parser configuration : Two-Planar with no_covered_roots = " + manager.getOptionValue("planar", "no_covered_roots").toString().toUpperCase() + ", " + "acyclicity = " + manager.getOptionValue("planar", "acyclicity").toString().toUpperCase() + ", planar root handling = " + manager.getOptionValue("2planar" , "planar_root_handling").toString().toUpperCase() + ", reduce on switch = " + manager.getOptionValue("2planar" , "reduceonswitch").toString().toUpperCase() + "\n");
025                }
026                return new TwoPlanarConfig(manager.getOptionValue("planar", "no_covered_roots").toString() , manager.getOptionValue("planar", "acyclicity").toString() , manager.getOptionValue("2planar" , "reduceonswitch").toString()  , manager.getOptionValue("multiplanar" , "planar_root_handling").toString() );
027        }
028        
029        public Function makeFunction(String subFunctionName, FeatureRegistry registry) throws MaltChainedException {
030                AlgoritmInterface algorithm = ((ParserRegistry)registry).getAlgorithm();
031                return new TwoPlanarAddressFunction(subFunctionName, algorithm);
032        }
033}