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 }