001 package org.maltparser.core.feature;
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.config.ConfigurationRegistry;
009 import org.maltparser.core.exception.MaltChainedException;
010 import org.maltparser.core.feature.spec.SpecificationModel;
011 import org.maltparser.core.feature.spec.SpecificationModels;
012 import org.maltparser.core.feature.system.FeatureEngine;
013
014 /**
015 *
016 *
017 * @author Johan Hall
018 */
019 public class FeatureModelManager {
020 protected SpecificationModels specModels;
021 protected FeatureEngine featureEngine;
022 protected ConfigurationDir configDirectory;
023
024
025 public FeatureModelManager(FeatureEngine engine, ConfigurationDir configDirectory) throws MaltChainedException {
026 specModels = new SpecificationModels();
027 setConfigDirectory(configDirectory);
028 setFeatureEngine(engine);
029 }
030
031 private URL findURL(String specModelFileName) throws MaltChainedException {
032 URL url = null;
033 File specFile = configDirectory.getFile(specModelFileName);
034 if (specFile.exists()) {
035 try {
036 url = new URL("file:///"+specFile.getAbsolutePath());
037 } catch (MalformedURLException e) {
038 throw new MaltChainedException("Malformed URL: "+specFile, e);
039 }
040 } else {
041 url = configDirectory.getConfigFileEntryURL(specModelFileName);
042 }
043 return url;
044 }
045
046 public void loadSpecification(String specModelFileName) throws MaltChainedException {
047 specModels.load(findURL(specModelFileName));
048 }
049
050
051 public void loadParSpecification(String specModelFileName, String markingStrategy, String coveredRoot) throws MaltChainedException {
052 specModels.loadParReader(findURL(specModelFileName), markingStrategy, coveredRoot);
053 }
054
055 public FeatureModel getFeatureModel(String specModelURL, int specModelUrlIndex, ConfigurationRegistry registry) throws MaltChainedException {
056 return new FeatureModel(specModels.getSpecificationModel(findURL(specModelURL), specModelUrlIndex), registry, featureEngine);
057 }
058
059 public FeatureModel getFeatureModel(String specModelURL, ConfigurationRegistry registry) throws MaltChainedException {
060 return new FeatureModel(specModels.getSpecificationModel(findURL(specModelURL), 0), registry, featureEngine);
061 }
062
063 public FeatureModel getFeatureModel(SpecificationModel specModel, ConfigurationRegistry registry) throws MaltChainedException {
064 return new FeatureModel(specModel, registry, featureEngine);
065 }
066
067 public SpecificationModels getSpecModels() {
068 return specModels;
069 }
070
071 protected void setSpecModels(SpecificationModels specModel) {
072 this.specModels = specModel;
073 }
074
075 public FeatureEngine getFeatureEngine() {
076 return featureEngine;
077 }
078
079 public void setFeatureEngine(FeatureEngine featureEngine) {
080 this.featureEngine = featureEngine;
081 }
082
083 public ConfigurationDir getConfigDirectory() {
084 return configDirectory;
085 }
086
087 public void setConfigDirectory(ConfigurationDir configDirectory) {
088 this.configDirectory = configDirectory;
089 }
090
091 public String toString() {
092 return specModels.toString();
093 }
094 }