001 package org.maltparser.core.propagation;
002
003 import java.io.File;
004 import java.net.MalformedURLException;
005 import java.net.URL;
006
007 import org.maltparser.core.config.ConfigurationDir;
008 import org.maltparser.core.exception.MaltChainedException;
009 import org.maltparser.core.propagation.spec.PropagationSpecs;
010 import org.maltparser.core.propagation.spec.PropagationSpecsReader;
011 import org.maltparser.core.symbol.SymbolTableHandler;
012 import org.maltparser.core.syntaxgraph.edge.Edge;
013
014 public class PropagationManager {
015 private ConfigurationDir configDirectory;
016 private PropagationSpecs propagationSpecs;
017 private Propagations propagations;
018 private SymbolTableHandler symbolTables;
019
020 public PropagationManager(ConfigurationDir configDirectory, SymbolTableHandler symbolTables) {
021 setConfigDirectory(configDirectory);
022 setSymbolTables(symbolTables);
023 propagationSpecs = new PropagationSpecs();
024
025 }
026
027 private URL findURL(String propagationSpecFileName) throws MaltChainedException {
028 URL url = null;
029 File specFile = configDirectory.getFile(propagationSpecFileName);
030 if (specFile.exists()) {
031 try {
032 url = new URL("file:///"+specFile.getAbsolutePath());
033 } catch (MalformedURLException e) {
034 throw new PropagationException("Malformed URL: "+specFile, e);
035 }
036 } else {
037 url = configDirectory.getConfigFileEntryURL(propagationSpecFileName);
038 }
039 return url;
040 }
041
042 public void loadSpecification(String propagationSpecFileName) throws MaltChainedException {
043 PropagationSpecsReader reader = new PropagationSpecsReader();
044 reader.load(findURL(propagationSpecFileName), propagationSpecs);
045 propagations = new Propagations(propagationSpecs, symbolTables);
046 }
047
048 public void propagate(Edge e) throws MaltChainedException {
049 if (propagations != null && e != null) {
050 propagations.propagate(e);
051 }
052 }
053
054 public PropagationSpecs getPropagationSpecs() {
055 return propagationSpecs;
056 }
057
058 public ConfigurationDir getConfigDirectory() {
059 return configDirectory;
060 }
061
062 public void setConfigDirectory(ConfigurationDir configDirectory) {
063 this.configDirectory = configDirectory;
064 }
065
066 public SymbolTableHandler getSymbolTables() {
067 return symbolTables;
068 }
069
070 public void setSymbolTables(SymbolTableHandler symbolTables) {
071 this.symbolTables = symbolTables;
072 }
073
074 public Propagations getPropagations() {
075 return propagations;
076 }
077
078
079 }