    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    }