Package com.orchestranetworks.schema.relationships

# Interface SchemaNodeRelationships

public interface SchemaNodeRelationships
Contains all the relationships held by a node in a resolved data model.

Since:
  5.7.1
See Also:
  - `SchemaNode.getRelationships()`
  - `SchemaNode.getRelationships(com.onwbp.adaptation.Adaptation, com.orchestranetworks.service.Session)`
  - `ExplicitRelationship`
  - `ReverseRelationship`
  - `RelationshipsHelper`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Iterable<ExplicitRelationship>`
  `getExplicitRelationships()`
  Returns the explicit relationships defined by the associated node.
  `Iterable<ExplicitRelationship>`
  `getExplicitRelationships(boolean includeMetadata)`
  Returns the explicit relationships defined by the associated node.
  `Iterable<ReverseRelationshipInterDataset>`
  `getInterDatasetReverseRelationships()`
  Returns the reverse relationships held by the associated node corresponding to a foreign key constraint, a selection link or an association link that targets a table in another dataset.
  `Iterable<ReverseRelationshipIntraDataset>`
  `getIntraDatasetReverseRelationships()`
  Returns the reverse relationships held by the associated node corresponding to a foreign key constraint, a selection link or an association link that targets a table in the same dataset.
  `SchemaNode`
  `getNode()`
  Returns the node holding these relationships.
  `Iterable<ReverseRelationship>`
  `getReverseRelationships()`
  Returns the reverse relationships held by the associated node.

- ## Method Details

  - ### getNode

    SchemaNode getNode()
    Returns the node holding these relationships.

  - ### getExplicitRelationships

    Iterable<ExplicitRelationship> getExplicitRelationships()
    Returns the explicit relationships defined by the associated node.

    This method is equivalent to:

    > `SchemaNodeRelationships.getExplicitRelationships(false);`

    See Also:
      - `ExplicitRelationship`
      - `ExplicitRelationship.getResult(com.onwbp.adaptation.Adaptation)`

  - ### getExplicitRelationships

    Iterable<ExplicitRelationship> getExplicitRelationships(boolean includeMetadata)
    Returns the explicit relationships defined by the associated node. An explicit relationship is either a foreign key constraint, a selection link or an association link. This method returns all the explicit relationships defined under this node if it is a group or a table node.

    ##### Permissions resolution

    Explicit relationships and their results are filtered according to the permissions defined for an end-user if this object has been retrieved using a specific session.

    An explicit relationship is not visible by an end-user if one of the following conditions is verified:

    - The dataset containing the field that defines the explicit relationship is not visible;
    - The field that defines the explicit relationship is not visible;
    - The target dataspace of the explicit relationship is not visible;
    - The target dataset of the explicit relationship is not visible;
    - The target table of the explicit relationship is not visible.

    Important:

    - Properties `osd:defaultView=Hidden` and `osd:category=hidden` defined on the nodes involved in the associated relationship are ignored during the resolution of the permissions. As a consequence, these properties must be handled, if needed, explicitly by the callers of this method.
    - In the context of an association by link table, the permissions defined on the link table are ignored. So an end-user can view the explicit relationship corresponding to an association even if not allowed to view the link table involved in the relationship. However, the permissions defined on the records of the link table are applied when computing the result of the explicit relationship corresponding to an association by link table. That is, an end-user will not be allowed to view the records in the target table of the association if he is not allowed to view the related records in the link table that are used to link the records of the source and target tables of the association.
    Since:
      6.1
    See Also:
      - `ExplicitRelationship`
      - `ExplicitRelationship.getResult(com.onwbp.adaptation.Adaptation)`

  - ### getReverseRelationships

    Iterable<ReverseRelationship> getReverseRelationships()
    Returns the reverse relationships held by the associated node. This method returns all the reverse relationships held under this node if it is a group.

    ##### Permissions resolution

    Reverse relationships and their results are filtered according to the permissions defined for an end-user if this object has been retrieved using a specific session.

    A reverse relationship is not visible by an end-user if one of the following condition is verified:

    - The target dataspace of the corresponding explicit relationship is not visible;
    - The target dataset of the corresponding explicit relationship is not visible;
    - The target table of the corresponding explicit relationship is not visible.
    - None of the datasets using the datamodel that contains the corresponding explicit relationship is visible.
    - The field that defines the corresponding explicit relationship is not visible in any of the datasets using the datamodel containing this field.

    Important:

    - Properties `osd:defaultView=Hidden` and `osd:category=hidden` defined on the nodes involved in the associated relationship are ignored during the resolution of the permissions. As a consequence, these properties must be handled, if needed, explicitly by the callers of this method.
    - In the context of an association by link table, the permissions defined on the link table are ignored. So an end-user can view the reverse relationship corresponding to an association even if it is not allowed to view the link table involved in the relationship. However, the permissions defined on the records of the link table are applied when computing the referring records from a reverse relationship of an association by link table. That is, an end-user won't be allowed to view the records in the target table of the association if he not allowed to view the related records in the link tables that are used to link the records of the source and target tables of the association.
    Throws:
      `IllegalStateException` - if the associated node is a field.
    See Also:
      - `ReverseRelationship`
      - `getIntraDatasetReverseRelationships()`
      - `getInterDatasetReverseRelationships()`

  - ### getIntraDatasetReverseRelationships

    Iterable<ReverseRelationshipIntraDataset> getIntraDatasetReverseRelationships()
    Returns the reverse relationships held by the associated node corresponding to a foreign key constraint, a selection link or an association link that targets a table in the same dataset. This method returns all the intra-dataset reverse relationships held under this node if it is a group.

    ##### Permissions resolution

    Reverse relationships and their results are filtered according to the rules defined by the method `getReverseRelationships()`.

    Throws:
      `IllegalStateException` - if the associated node is a field.
    See Also:
      - `ReverseRelationship.isIntraDataset()`
      - `getReverseRelationships()`
      - `getInterDatasetReverseRelationships()`

  - ### getInterDatasetReverseRelationships

    Iterable<ReverseRelationshipInterDataset> getInterDatasetReverseRelationships()
    Returns the reverse relationships held by the associated node corresponding to a foreign key constraint, a selection link or an association link that targets a table in another dataset. This method returns all the inter-dataset reverse relationships held under this node if it is a group.

    ##### Permissions resolution

    Reverse relationships and their results are filtered according to the rules defined by the method `getReverseRelationships()`.

    Throws:
      `IllegalStateException` - if the associated node is a field.
    See Also:
      - `ReverseRelationship.isIntraDataset()`
      - `getReverseRelationships()`
      - `getIntraDatasetReverseRelationships()`