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