com.ihr.xbrl.om.xdt

## Class XDTDimension

- java.lang.Object
- - com.ihr.xbrl.om.xdt.XDTDimension

-     public class XDTDimension
      extends java.lang.Object

  The Class XDTDimension.
  Author:
    Ignacio

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `EXPLICIT` The Constant EXPLICIT.
    `static int` | `TYPED` The Constant TYPED.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XDTDimension(XBRLItem item, XDTProcessor processor)` Instantiates a new XDT dimension.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(java.lang.Object obj)`
    `java.util.ArrayList<net.sf.saxon.value.QNameValue>` | `filter_member_network_selection(net.sf.saxon.value.QNameValue qMember, net.sf.saxon.value.StringValue qLinkRole, net.sf.saxon.value.StringValue arcRole, net.sf.saxon.value.StringValue axis)` Backup function of the XFI function with the same name.
    `javax.xml.namespace.QName` | `getDefault()` Access to the QName that is the default value for the dimension.
    `int` | `getDimensionType()` Returns EXPLICIT or TYPED.
    `java.util.Iterator<javax.xml.namespace.QName>` | `getDomain()` Access to the dimension domain of members.
    `XBRLItem` | `getItem()` Gets the item.
    `XMLElementDefinition` | `getTypedElement()` Access to the element that is valid content for the typed dimension.
    `int` | `hashCode()`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### EXPLICIT

          public static final int EXPLICIT

      The Constant EXPLICIT.
      See Also:
        Constant Field Values

    - #### TYPED

          public static final int TYPED

      The Constant TYPED.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### XDTDimension

          public XDTDimension(XBRLItem item,
                      XDTProcessor processor)

      Instantiates a new XDT dimension.
      Parameters:
        `item` - the item
        `processor` - the processor

  - ### Method Detail

    - #### getDefault

          public javax.xml.namespace.QName getDefault()

      Access to the QName that is the default value for the dimension.

      Default values are global so the method belongs to the dimension and not to the dimension use.

      Returns:
        QName or null if no default value exist

    - #### getItem

          public XBRLItem getItem()

      Gets the item.
      Returns:
        the item

    - #### getDimensionType

          public int getDimensionType()

      Returns EXPLICIT or TYPED.
      Returns:
        int

    - #### getTypedElement

          public XMLElementDefinition getTypedElement()

      Access to the element that is valid content for the typed dimension.
      Returns:
        the typed element

    - #### getDomain

          public java.util.Iterator<javax.xml.namespace.QName> getDomain()

      Access to the dimension domain of members.

      This method is rarely used because the domain of members depends on the dimension usage and the dimension use is different on each hypercube declaration. This method should only be used when there is a need to know the dimension domain regardless of the dimension use or in the absence of an hypercube

      Only usable members are returned

      Works only if the dimension is Explicit

      Returns:
        Iterator<QName> Iterator over defined domain members of this dimension

    - #### filter_member_network_selection

          public java.util.ArrayList<net.sf.saxon.value.QNameValue> filter_member_network_selection(net.sf.saxon.value.QNameValue qMember,
                                                                                           net.sf.saxon.value.StringValue qLinkRole,
                                                                                           net.sf.saxon.value.StringValue arcRole,
                                                                                           net.sf.saxon.value.StringValue axis)
                                                                                             throws XDTAmbiguousFilterMemberNetwork

      Backup function of the XFI function with the same name.

      The existence of this function in the functions conformance suite makes me wonder if the authors of the functions specification has ever understood the XBRL Dimensions Specification 1.0.

      The function has parameters dimension QName and Member QName for start exploring for more members in the same domain. Surprisingly the function does not considers the concept QName which is supposed to make USE OF THE DIMENSION through an hypercube.

      Note that the hypercube can modify the dimension content via all and not-all combinations.

      It looks like the authors of the functions specification took a very syntactical approach to the dimensions specification rather than an object model approach in which an object is declared once and used multiple times. Certainly, the Dimensions Specification was written with the idea of being able to redefine a dimension members each time a dimension is used in a concept and this function is ignoring this capability.

      Parameters:
        `qMember` - the q member
        `qLinkRole` - the q link role
        `arcRole` - the arc role
        `axis` - the axis
      Returns:
        Array of QNames or null if the value of qMember is not a domain member
      Throws:
        `XDTAmbiguousFilterMemberNetwork` - the XDT ambiguous filter member network

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`