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    }