Package ucar.nc2

Class Group.Builder

  • Enclosing class:
    Group

    public static class Group.Builder
    extends Object
    A builder of Groups.
    • Constructor Detail

      • Builder

        public Builder()
    • Method Detail

      • getParentGroup

        @Nullable
        public Group.Builder getParentGroup()
      • addDimension

        public Group.Builder addDimension​(Dimension dim)
        Add Dimension with error if it already exists
      • addDimensionIfNotExists

        public boolean addDimensionIfNotExists​(Dimension dim)
        Add Dimension if it doesnt already exist
      • replaceDimension

        public boolean replaceDimension​(Dimension dim)
        Replace dimension if it exists, else just add it.
        Returns:
        true if there was an existing dimension of that name
      • removeDimension

        public boolean removeDimension​(String name)
        Remove dimension, if it exists.
        Returns:
        true if there was an existing dimension of that name
      • findDimensionLocal

        public Optional<Dimension> findDimensionLocal​(String name)
        Find Dimension local to this Group
      • contains

        public boolean contains​(Dimension want)
        Is the Dimension contained within this Group or a parent Group
      • findDimension

        public Optional<Dimension> findDimension​(String name)
        Find Dimension in this Group or a parent Group
      • removeGroup

        public boolean removeGroup​(String name)
        Remove group, if it exists.
        Returns:
        true if there was an existing group of that name
      • findGroupNested

        public Optional<Group.Builder> findGroupNested​(String relativeName)
        Find a subgroup of this Group, with the specified relative name. An embedded "/" separates group names. Can have a leading "/" only if this is the root group.
        Parameters:
        relativeName - eg "group/subgroup/wantGroup".
        Returns:
        Group or empty if not found.
      • isParent

        public boolean isParent​(Group.Builder other)
        Is this group a parent of the other group ?
      • findSimilarEnumTypedef

        public Optional<EnumTypedef> findSimilarEnumTypedef​(EnumTypedef template,
                                                            boolean searchup)
        Locate an enum type definition that is structurally similar to the template type def. The Enum names are ignored.
        Parameters:
        template - match this enum type def
        searchup - if true, then search this group and then parent groups.
      • findEnumTypedef

        public Optional<EnumTypedef> findEnumTypedef​(String name)
        Find a Enumeration in this Group Builder, using its short name.
      • findEnumTypedef

        public Optional<EnumTypedef> findEnumTypedef​(String name,
                                                     boolean searchup)
        Find a Enumeration in this or a parent Group Builder, using its short name.
        Parameters:
        name - for which to search
        searchup - if true, then search this group and then parent groups.
      • findOrAddEnumTypedef

        public EnumTypedef findOrAddEnumTypedef​(String name,
                                                Map<Integer,​String> map)
        Add a EnumTypedef if it does not already exist. Return new or existing.
      • addVariable

        public Group.Builder addVariable​(Variable.Builder<?> variable)
        Add a Variable, throw error if one of the same name if it exists.
      • replaceVariable

        public boolean replaceVariable​(Variable.Builder<?> vb)
        Replace variable of same name, if it exists, else just add it.
        Returns:
        true if there was an existing variable of that name
      • removeVariable

        public boolean removeVariable​(String name)
        Remove variable, if it exists.
        Returns:
        true if there was an existing variable of that name
      • findVariableNested

        public Optional<Variable.Builder<?>> findVariableNested​(String relativeName)
        Find a Variable, with the specified relative name. No structure members.
        Parameters:
        relativeName - eg "group/subgroup/varname".
      • findVariableOrInParent

        public Optional<Variable.Builder<?>> findVariableOrInParent​(String varShortName)
        Find the Variable with the specified (short) name in this group or a parent group.
        Parameters:
        varShortName - short name of Variable.
        Returns:
        the Variable or empty.
      • makeFullName

        public String makeFullName()
        Make the full name of the this group. TODO In light of CF groups, we may have to start full names with '/'
      • removeDimensionFromAllGroups

        public void removeDimensionFromAllGroups​(Group.Builder group,
                                                 Dimension remove)
        Remove the given dimension from this group and any subgroups
      • makeDimensionMap

        public void makeDimensionMap​(Group.Builder parent,
                                     com.google.common.collect.Multimap<Dimension,​Variable.Builder<?>> dimUsedMap)
        Make a multimap of Dimensions and all the variables that reference them, in this group and its nested groups.
      • build

        public Group build()
        Build the root group, with parent = null.