001 package org.maltparser.core.io.dataformat;
002
003 import java.net.URL;
004 import java.util.HashMap;
005 import java.util.HashSet;
006
007 import org.maltparser.core.exception.MaltChainedException;
008 import org.maltparser.core.io.dataformat.DataFormatSpecification.Dependency;
009
010 public class DataFormatManager {
011 private DataFormatSpecification inputDataFormatSpec;
012 private DataFormatSpecification outputDataFormatSpec;
013 private final HashMap<String, DataFormatSpecification> fileNameDataFormatSpecs;
014 private final HashMap<String, DataFormatSpecification> nameDataFormatSpecs;
015
016 // public DataFormatManager(String inputFormatName, String outputFormatName) throws MaltChainedException {
017 // fileNameDataFormatSpecs = new HashMap<String, DataFormatSpecification>();
018 // nameDataFormatSpecs = new HashMap<String, DataFormatSpecification>();
019 // inputDataFormatSpec = loadDataFormat(inputFormatName);
020 // outputDataFormatSpec = loadDataFormat(outputFormatName);
021 // }
022 //
023 // public DataFormatSpecification loadDataFormat(String dataFormatName) throws MaltChainedException {
024 // if (dataFormatName == null || dataFormatName.length() == 0 ) {
025 // return null;
026 // }
027 // DataFormatSpecification dataFormat = fileNameDataFormatSpecs.get(dataFormatName);
028 // if (dataFormat == null) {
029 // dataFormat = new DataFormatSpecification();
030 // dataFormat.parseDataFormatXMLfile(dataFormatName);
031 // fileNameDataFormatSpecs.put(dataFormatName, dataFormat);
032 // nameDataFormatSpecs.put(dataFormat.getDataFormatName(), dataFormat);
033 // HashSet<Dependency> dependencies = dataFormat.getDependencies();
034 // for (Dependency dep : dependencies) {
035 // loadDataFormat(dep.urlString);
036 // }
037 // }
038 // return dataFormat;
039 // }
040
041 public DataFormatManager(URL inputFormatUrl, URL outputFormatUrl) throws MaltChainedException {
042 fileNameDataFormatSpecs = new HashMap<String, DataFormatSpecification>();
043 nameDataFormatSpecs = new HashMap<String, DataFormatSpecification>();
044 inputDataFormatSpec = loadDataFormat(inputFormatUrl);
045 outputDataFormatSpec = loadDataFormat(outputFormatUrl);
046 }
047
048 public DataFormatSpecification loadDataFormat(URL dataFormatUrl) throws MaltChainedException {
049 if (dataFormatUrl == null) {
050 return null;
051 }
052 DataFormatSpecification dataFormat = fileNameDataFormatSpecs.get(dataFormatUrl.toString());
053 if (dataFormat == null) {
054 dataFormat = new DataFormatSpecification();
055 dataFormat.parseDataFormatXMLfile(dataFormatUrl);
056 fileNameDataFormatSpecs.put(dataFormatUrl.toString(), dataFormat);
057 nameDataFormatSpecs.put(dataFormat.getDataFormatName(), dataFormat);
058 // HashSet<Dependency> dependencies = dataFormat.getDependencies();
059 // for (Dependency dep : dependencies) {
060 // loadDataFormat(dep.urlString);
061 // }
062 }
063 return dataFormat;
064 }
065
066 public DataFormatSpecification getInputDataFormatSpec() {
067 return inputDataFormatSpec;
068 }
069
070 public DataFormatSpecification getOutputDataFormatSpec() {
071 return outputDataFormatSpec;
072 }
073
074 public DataFormatSpecification getDataFormatSpec(String name) {
075 return nameDataFormatSpecs.get(name);
076 }
077 }