Module inet.ipaddr

Class AddressDivisionGroupingBase

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object o)
      Two groupings are equal if: - they match type/version (ipv4, ipv6, mac, or a specific grouping class) - they match division counts - each division matches bit counts - each division matches their specific grouping class - each division matches values Prefix lengths, for those groupings and/or divisionsS that have them, are ignored.
      byte[] getBytes()
      Gets the bytes for the lowest address in the range represented by this address.
      byte[] getBytes​(byte[] bytes)
      Equivalent to getBytes(byte[], int) with index of 0.
      byte[] getBytes​(byte[] bytes, int index)
      Gets the value for the lowest address in the range represented by this address division grouping.
      java.math.BigInteger getCount()
      gets the count of addresses that this address division grouping may represent If this address division grouping is not a subnet block of multiple addresses or has no range of values, then there is only one such address.
      AddressDivisionBase getDivision​(int index)  
      int getDivisionCount()  
      java.lang.String[] getDivisionStrings()
      Get standard-format strings for each of the divisions in the series.
      int getMinPrefixLengthForBlock()
      Returns the smallest prefix length possible such that this address division grouping includes the block of addresses for that prefix.
      java.math.BigInteger getPrefixCount()
      If this has a prefix length, the count of the range of values in the prefix.
      java.lang.Integer getPrefixLength()
      The bit-length of the portion of the address that is not specific to an individual address but common amongst a group of addresses.
      java.lang.Integer getPrefixLengthForSingleBlock()
      Returns a prefix length for which the range of this segment grouping matches the block of addresses for that prefix.
      byte[] getUpperBytes()
      Gets the bytes for the highest address in the range represented by this address.
      byte[] getUpperBytes​(byte[] bytes)
      Equivalent to getBytes(byte[], int) with index of 0.
      byte[] getUpperBytes​(byte[] bytes, int index)
      Similar to getBytes(byte[], int), but for obtaining the upper value of the range.
      java.math.BigInteger getUpperValue()
      Returns the highest value represented by this address item, the highest value included in the range of values
      java.math.BigInteger getValue()
      Returns the lowest value represented by this address item, the lowest value included in the range of values
      int hashCode()  
      boolean includesMax()
      Returns whether this item includes the maximum possible value for the address type or version within its range
      boolean includesZero()
      Returns whether this item includes the value of zero within its range
      boolean isFullRange()
      whether this address item represents all possible values attainable by an address item of this type
      boolean isMax()
      Returns whether this item matches the maximum possible value for the address type or version
      boolean isMultiple()
      Whether this represents multiple potential values (eg a prefixed address or a segment representing a range of values)
      boolean isPrefixBlock()
      Returns whether this address segment series represents a block of addresses associated with its prefix length.
      boolean isPrefixed()
      Whether there exists a prefix length associated with this series.
      boolean isSequential()
      Returns whether the series represents a range of values that are sequential.
      boolean isSinglePrefixBlock()
      Returns whether the range of values matches a single subnet block for the prefix length
      boolean isZero()
      Returns whether this item matches the value of zero
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • AddressDivisionGroupingBase

        public AddressDivisionGroupingBase​(AddressDivisionBase[] divisions)
      • AddressDivisionGroupingBase

        public AddressDivisionGroupingBase​(AddressDivisionBase[] divisions,
                                           boolean checkDivisions)
    • Method Detail

      • getBytes

        public byte[] getBytes()
        Gets the bytes for the lowest address in the range represented by this address.

        Since bytes are signed values while addresses are unsigned, values greater than 127 are represented as the (negative) two's complement value of the actual value. You can get the unsigned integer value i from byte b using i = 0xff & b.

        Specified by:
        getBytes in interface AddressItem
        Returns:
      • getBytes

        public byte[] getBytes​(byte[] bytes,
                               int index)
        Gets the value for the lowest address in the range represented by this address division grouping.

        If the value fits in the specified array, the same array is returned with the value. Otherwise, a new array is allocated and returned with the value.

        You can use AddressDivisionSeries.getBitCount() to determine the required array length for the bytes.

        Since bytes are signed values while addresses are unsigned, values greater than 127 are represented as the (negative) two's complement value of the actual value. You can get the unsigned integer value i from byte b using i = 0xff & b.

        Specified by:
        getBytes in interface AddressItem
        Returns:
      • getBytes

        public byte[] getBytes​(byte[] bytes)
        Equivalent to getBytes(byte[], int) with index of 0.
        Specified by:
        getBytes in interface AddressItem
        Returns:
        the bytes of the lowest address represented by this address item.
      • getUpperBytes

        public byte[] getUpperBytes()
        Gets the bytes for the highest address in the range represented by this address.
        Specified by:
        getUpperBytes in interface AddressItem
        Returns:
      • getUpperBytes

        public byte[] getUpperBytes​(byte[] bytes,
                                    int index)
        Similar to getBytes(byte[], int), but for obtaining the upper value of the range. If this division represents a single value, equivalent to getBytes(byte[], int)
        Specified by:
        getUpperBytes in interface AddressItem
        Returns:
        the bytes of the largest address represented by this address item.
      • getUpperBytes

        public byte[] getUpperBytes​(byte[] bytes)
        Equivalent to getBytes(byte[], int) with index of 0.
        Specified by:
        getUpperBytes in interface AddressItem
        Returns:
        the bytes of the largest address represented by this address item.
      • getValue

        public java.math.BigInteger getValue()
        Description copied from interface: AddressItem
        Returns the lowest value represented by this address item, the lowest value included in the range of values
        Specified by:
        getValue in interface AddressItem
        Returns:
        the lowest value represented by this address item
      • getUpperValue

        public java.math.BigInteger getUpperValue()
        Description copied from interface: AddressItem
        Returns the highest value represented by this address item, the highest value included in the range of values
        Specified by:
        getUpperValue in interface AddressItem
        Returns:
        the highest value represented by this address item
      • getPrefixLength

        public java.lang.Integer getPrefixLength()
        Description copied from interface: AddressDivisionSeries
        The bit-length of the portion of the address that is not specific to an individual address but common amongst a group of addresses.

        Typically this is the largest number of bits in the upper-most portion of the section for which the remaining bits assume all possible values.

        For IP addresses, this must be explicitly defined when the address is created. For example, 1.2.0.0/16 has a prefix length of 16, while 1.2.*.* has no prefix length, even though they both represent the same set of addresses and are considered equal. Prefixes can be considered variable for any given IP addresses and can depend on the routing table.

        The methods AddressItem.getMinPrefixLengthForBlock() and AddressItem.getPrefixLengthForSingleBlock() can help you to obtain or define a prefix length if one does not exist already. 1.2.0.0/16 and 1.2.*.* both the same equivalent and minimum prefix length of 16.

        For MAC addresses, the prefix is initially defined by the range, so 1:2:3:*:*:* has a prefix length of 24 by definition. Addresses derived from the original may retain the original prefix length regardless of their range.

        Specified by:
        getPrefixLength in interface AddressDivisionSeries
      • getMinPrefixLengthForBlock

        public int getMinPrefixLengthForBlock()
        Returns the smallest prefix length possible such that this address division grouping includes the block of addresses for that prefix.
        Specified by:
        getMinPrefixLengthForBlock in interface AddressItem
        Returns:
        the prefix length
      • getPrefixLengthForSingleBlock

        public java.lang.Integer getPrefixLengthForSingleBlock()
        Returns a prefix length for which the range of this segment grouping matches the block of addresses for that prefix. If no such prefix exists, returns null If this segment grouping represents a single value, returns the bit length
        Specified by:
        getPrefixLengthForSingleBlock in interface AddressItem
        Returns:
        the prefix length or null
      • getCount

        public java.math.BigInteger getCount()
        gets the count of addresses that this address division grouping may represent If this address division grouping is not a subnet block of multiple addresses or has no range of values, then there is only one such address.
        Specified by:
        getCount in interface AddressDivisionSeries
        Specified by:
        getCount in interface AddressItem
        Returns:
      • isMultiple

        public boolean isMultiple()
        Description copied from interface: AddressItem
        Whether this represents multiple potential values (eg a prefixed address or a segment representing a range of values)
        Specified by:
        isMultiple in interface AddressItem
        Returns:
        whether this address represents more than one address. Such addresses include CIDR/IP addresses (eg 1.2.3.4/11) or wildcard addresses (eg 1.2.*.4) or range addresses (eg 1.2.3-4.5)
      • isSequential

        public boolean isSequential()
        Description copied from interface: AddressDivisionSeries
        Returns whether the series represents a range of values that are sequential.

        Generally, this means that any division covering a range of values must be followed by divisions that are full range, covering all values.

        Specified by:
        isSequential in interface AddressDivisionSeries
        Returns:
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Two groupings are equal if: - they match type/version (ipv4, ipv6, mac, or a specific grouping class) - they match division counts - each division matches bit counts - each division matches their specific grouping class - each division matches values Prefix lengths, for those groupings and/or divisionsS that have them, are ignored.
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • isZero

        public boolean isZero()
        Description copied from interface: AddressItem
        Returns whether this item matches the value of zero
        Specified by:
        isZero in interface AddressItem
        Returns:
        whether this item matches the value of zero
      • includesZero

        public boolean includesZero()
        Description copied from interface: AddressItem
        Returns whether this item includes the value of zero within its range
        Specified by:
        includesZero in interface AddressItem
        Returns:
        whether this item includes the value of zero within its range
      • isMax

        public boolean isMax()
        Description copied from interface: AddressItem
        Returns whether this item matches the maximum possible value for the address type or version
        Specified by:
        isMax in interface AddressItem
        Returns:
        whether this item matches the maximum possible value
      • includesMax

        public boolean includesMax()
        Description copied from interface: AddressItem
        Returns whether this item includes the maximum possible value for the address type or version within its range
        Specified by:
        includesMax in interface AddressItem
        Returns:
        whether this item includes the maximum possible value within its range
      • isFullRange

        public boolean isFullRange()
        Description copied from interface: AddressItem
        whether this address item represents all possible values attainable by an address item of this type
        Specified by:
        isFullRange in interface AddressItem
        Returns:
        whether this address item represents all possible values attainable by an address item of this type, or in other words, both includesZero() and includesMax() return true
      • isPrefixBlock

        public boolean isPrefixBlock()
        Description copied from interface: AddressDivisionSeries
        Returns whether this address segment series represents a block of addresses associated with its prefix length.

        This returns false if it has no prefix length or if it is a range of addresses that does not include the entire subnet block for the prefix length.

        If AddressNetwork.getPrefixConfiguration() is set to consider all prefixes as subnets, this returns true for any series with a prefix length.

        An important distinction of AddressItem.containsPrefixBlock(int) with this method is that this method returns false if the series does not have a prefix length assigned to it, even if there exists one or more prefix lengths for which AddressItem.containsPrefixBlock(int) returns true.

        Specified by:
        isPrefixBlock in interface AddressDivisionSeries
        Returns: