grib/src/main/java/ucar/nc2/grib/grib1/tables/Grib1ParamTableReader.java
private synchronized Map<Integer, Grib1Parameter> readParameterTable() {
    if (path == null) {
      throw new IllegalStateException(name);
    }

    try {
      if (name.startsWith("table_2_") || name.startsWith("local_table_2_")) {
        return readParameterTableEcmwf(); // ecmwf
      } else if (name.startsWith("US058")) {
        return readParameterTableXml(new FnmocParser());// FNMOC
      } else if (name.endsWith(".tab")) {
        return readParameterTableTab();                               // wgrib format
      } else if (name.endsWith(".wrf")) {
        return readParameterTableSplit("\\|", new int[]{0, 3, 1, 2}); // WRF AMPS
      } else if (name.endsWith(".h")) {
        return readParameterTableNcl(); // NCL
      } else if (name.endsWith(".dss")) {
        return readParameterTableSplit("\t", new int[]{0, -1, 1, 2}); // NCAR DSS
      } else if (name.endsWith(".xml")) {
        return readParameterTableXml(new DssParser(Namespace.NO_NAMESPACE));// NCAR DSS XML format
      } else if (name.startsWith("2.98")) {
        return readParameterTableEcmwfEcCodes(); // ecmwf from ecCodes package
      } else {
        throw new RuntimeException(
            "Grib1ParamTableReader: Dont know how to read " + name + " file=" + path);
      }

    } catch (IOException ioError) {
      logger.warn(
          "An error occurred in Grib1ParamTable while trying to open the parameter table {}:{}",
          path, ioError.getMessage());
      throw new RuntimeException(ioError);
    }
  }
private synchronized Map<Integer, Grib1Parameter> readParameterTable() {
    if (path == null) {
      throw new IllegalStateException(name);
    }

    try {
      if (name.startsWith("table_2_") || name.startsWith("local_table_2_")) {
        return readParameterTableEcmwf(); // ecmwf
      } else if (name.startsWith("US058")) {
        return readParameterTableXml(new FnmocParser());// FNMOC
      } else if (name.endsWith(".tab")) {
        return readParameterTableTab();                               // wgrib format
      } else if (name.endsWith(".wrf")) {
        return readParameterTableSplit("\\|", new int[]{0, 3, 1, 2}); // WRF AMPS
      } else if (name.endsWith(".h")) {
        return readParameterTableNcl(); // NCL
      } else if (name.endsWith(".dss")) {
        return readParameterTableSplit("\t", new int[]{0, -1, 1, 2}); // NCAR DSS
      } else if (name.endsWith(".xml")) {
        return readParameterTableXml(new DssParser(Namespace.NO_NAMESPACE));// NCAR DSS XML format
      } else if (name.startsWith("2.98")) {
        return readParameterTableEcmwfEcCodes(); // ecmwf from ecCodes package
      } else {
        throw new RuntimeException(
            "Grib1ParamTableReader: Dont know how to read " + name + " file=" + path);
      }

    } catch (IOException ioError) {
      logger.warn(
          "An error occurred in Grib1ParamTable while trying to open the parameter table {}:{}",
          path, ioError.getMessage());
      throw new RuntimeException(ioError);
    }
  }
reading