001 package org.maltparser.core.io.dataformat; 002 003 import java.util.HashMap; 004 import java.util.HashSet; 005 006 import org.maltparser.core.exception.MaltChainedException; 007 import org.maltparser.core.io.dataformat.DataFormatSpecification.Dependency; 008 009 public class DataFormatManager { 010 private DataFormatSpecification inputDataFormatSpec; 011 private DataFormatSpecification outputDataFormatSpec; 012 private final HashMap<String, DataFormatSpecification> fileNameDataFormatSpecs; 013 private final HashMap<String, DataFormatSpecification> nameDataFormatSpecs; 014 015 public DataFormatManager(String inputFormatName, String outputFormatName) throws MaltChainedException { 016 fileNameDataFormatSpecs = new HashMap<String, DataFormatSpecification>(); 017 nameDataFormatSpecs = new HashMap<String, DataFormatSpecification>(); 018 inputDataFormatSpec = loadDataFormat(inputFormatName); 019 outputDataFormatSpec = loadDataFormat(outputFormatName); 020 } 021 022 public DataFormatSpecification loadDataFormat(String dataFormatName) throws MaltChainedException { 023 if (dataFormatName == null || dataFormatName.length() == 0 ) { 024 return null; 025 } 026 DataFormatSpecification dataFormat = fileNameDataFormatSpecs.get(dataFormatName); 027 if (dataFormat == null) { 028 dataFormat = new DataFormatSpecification(); 029 dataFormat.parseDataFormatXMLfile(dataFormatName); 030 fileNameDataFormatSpecs.put(dataFormatName, dataFormat); 031 nameDataFormatSpecs.put(dataFormat.getDataFormatName(), dataFormat); 032 HashSet<Dependency> dependencies = dataFormat.getDependencies(); 033 for (Dependency dep : dependencies) { 034 loadDataFormat(dep.urlString); 035 } 036 } 037 return dataFormat; 038 } 039 040 public DataFormatSpecification getInputDataFormatSpec() { 041 return inputDataFormatSpec; 042 } 043 044 public DataFormatSpecification getOutputDataFormatSpec() { 045 return outputDataFormatSpec; 046 } 047 048 public DataFormatSpecification getDataFormatSpec(String name) { 049 return nameDataFormatSpecs.get(name); 050 } 051 }