cdm/src/main/java/ucar/nc2/ParsedSectionSpec.java
private static ParsedSectionSpec parseVariableSelector(Object parent, String selector) throws InvalidRangeException {
    String varNameEsc, indexSelect = null;

    int pos1 = EscapeStrings.indexOf(selector, '(');
    if (pos1 < 0) { // no index
      varNameEsc = selector;
    } else {
      varNameEsc = selector.substring(0, pos1);
      int pos2 = selector.indexOf(')', pos1+1);
      indexSelect = selector.substring(pos1, pos2);
    }
    if (debugSelector)
      System.out.println(" parseVariableSection <" + selector + "> = <" + varNameEsc + ">, <" + indexSelect + ">");

    Variable v = null;
    if (parent instanceof NetcdfFile) { // then varNameEsc = varFullNameEsc (i.e. includes groups)
      NetcdfFile ncfile = (NetcdfFile) parent;
      v = ncfile.findVariable(varNameEsc);

    } else if (parent instanceof Structure) { // then varNameEsc = memberNameEsc (i.e. includes groups)
      Structure s = (Structure) parent;
      v = s.findVariable( NetcdfFile.makeNameUnescaped(varNameEsc) ); // s.findVariable wants unescaped version
    }
    if (v == null)
      throw new IllegalArgumentException(" cant find variable: " + varNameEsc + " in selector=" + selector);
    
    if (v.getDataType() == DataType.SEQUENCE)
      indexSelect = null; // ignore whatever was sent

    // get the selected Ranges, or all, and add to the list
    Section section;
    if (indexSelect != null) {
      section = new Section(indexSelect);
      section = Section.fill(section, v.getShape()); // Check section has no nulls, set from shape array.
    } else {
      section = v.getShapeAsSection(); // all
    }

    return new ParsedSectionSpec(v, section);
  }
private static ParsedSectionSpec parseVariableSelector(Object parent, String selector) throws InvalidRangeException {
    String varNameEsc, indexSelect = null;

    int pos1 = EscapeStrings.indexOf(selector, '(');
    if (pos1 < 0) { // no index
      varNameEsc = selector;
    } else {
      varNameEsc = selector.substring(0, pos1);
      int pos2 = selector.indexOf(')', pos1+1);
      indexSelect = selector.substring(pos1, pos2);
    }
    if (debugSelector)
      System.out.println(" parseVariableSection <" + selector + "> = <" + varNameEsc + ">, <" + indexSelect + ">");

    Variable v = null;
    if (parent instanceof NetcdfFile) { // then varNameEsc = varFullNameEsc (i.e. includes groups)
      NetcdfFile ncfile = (NetcdfFile) parent;
      v = ncfile.findVariable(varNameEsc);

    } else if (parent instanceof Structure) { // then varNameEsc = memberNameEsc (i.e. includes groups)
      Structure s = (Structure) parent;
      v = s.findVariable( NetcdfFile.makeNameUnescaped(varNameEsc) ); // s.findVariable wants unescaped version
    }
    if (v == null)
      throw new IllegalArgumentException(" cant find variable: " + varNameEsc + " in selector=" + selector);
    
    if (v.getDataType() == DataType.SEQUENCE)
      indexSelect = null; // ignore whatever was sent

    // get the selected Ranges, or all, and add to the list
    Section section;
    if (indexSelect != null) {
      section = new Section(indexSelect);
      section = Section.fill(section, v.getShape()); // Check section has no nulls, set from shape array.
    } else {
      section = v.getShapeAsSection(); // all
    }

    return new ParsedSectionSpec(v, section);
  }
private static ParsedSectionSpec parseVariableSelector ( Object parent , String selector ) throws InvalidRangeException { String varNameEsc , indexSelect = null ; int pos1 = EscapeStrings . indexOf ( selector , ' ' ) ; if ( pos1 < 0 ) { // no index varNameEsc = selector ; } else { varNameEsc = selector . substring ( 0 , pos1 ) ; int pos2 = selector . indexOf ( ' ' , pos1 + 1 ) ; indexSelect = selector . substring ( pos1 , pos2 ) ; } if ( debugSelector ) System . out . println ( " parseVariableSection <" + selector + "> = <" + varNameEsc + ">, <" + indexSelect + ">" ) ; Variable v = null ; if ( parent instanceof NetcdfFile ) { // then varNameEsc = varFullNameEsc (i.e. includes groups) NetcdfFile ncfile = ( NetcdfFile ) parent ; v = ncfile . findVariable ( varNameEsc ) ; } else if ( parent instanceof Structure ) { // then varNameEsc = memberNameEsc (i.e. includes groups) Structure s = ( Structure ) parent ; v = s . findVariable ( NetcdfFile . makeNameUnescaped ( varNameEsc ) ) ; // s.findVariable wants unescaped version } if ( v == null ) throw new IllegalArgumentException ( " cant find variable: " + varNameEsc + " in selector=" + selector ) ; if ( v . getDataType ( ) == DataType . SEQUENCE ) indexSelect = null ; // ignore whatever was sent // get the selected Ranges, or all, and add to the list Section section ; if ( indexSelect != null ) { section = new Section ( indexSelect ) ; section = Section . fill ( section , v . getShape ( ) ) ; // Check section has no nulls, set from shape array. } else { section = v . getShapeAsSection ( ) ; // all } return new ParsedSectionSpec ( v , section ) ; }
parse variable name and index selector out of the selector String. variable name must be escaped
parse variable name and index selector out of the selector String . variable name must be escaped