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 }