Class RelationshipBase<S extends NodeBase<?>,​E extends NodeBase<?>,​SELF extends RelationshipBase<S,​E,​SELF>>

    • Constructor Detail

      • RelationshipBase

        protected RelationshipBase​(S start,
                                   java.lang.String type,
                                   E end)
        Always creates a relationship from start to end (left to right).
        Parameters:
        start - start node
        end - end node
        type - type of the relationship
      • RelationshipBase

        protected RelationshipBase​(SymbolicName symbolicName,
                                   Node start,
                                   java.lang.String type,
                                   Properties properties,
                                   Node end)
        Always creates a relationship from start to end (left to right).
        Parameters:
        symbolicName - an optional symbolic name
        start - start node
        properties - The properties for the relationship
        end - end node
        type - type of the relationship
    • Method Detail

      • named

        public final SELF named​(java.lang.String newSymbolicName)
        Description copied from interface: Relationship
        Creates a copy of this relationship with a new symbolic name.
        Specified by:
        named in interface Relationship
        Specified by:
        named in interface RelationshipPattern
        Parameters:
        newSymbolicName - the new symbolic name.
        Returns:
        The new relationship.
      • named

        public abstract SELF named​(SymbolicName newSymbolicName)
        This method needs to be implemented to provide new, type safe instances of this relationship.
        Specified by:
        named in interface Relationship
        Parameters:
        newSymbolicName - the new symbolic name.
        Returns:
        A new relationship
      • withProperties

        public final SELF withProperties​(java.lang.Object... keysAndValues)
        Description copied from interface: ExposesProperties
        Creates a a copy of this property container with additional properties. Creates a property container without properties when no properties are passed to this method.
        Specified by:
        withProperties in interface ExposesProperties<S extends NodeBase<?>>
        Parameters:
        keysAndValues - A list of key and values. Must be an even number, with alternating String and Expression.
        Returns:
        The new property container.
      • withProperties

        public final SELF withProperties​(java.util.Map<java.lang.String,​java.lang.Object> newProperties)
        Description copied from interface: ExposesProperties
        Creates a a copy of this property container with additional properties.
        Specified by:
        withProperties in interface ExposesProperties<S extends NodeBase<?>>
        Parameters:
        newProperties - A map with the new properties
        Returns:
        The new property container.
      • withProperties

        public abstract SELF withProperties​(MapExpression newProperties)
        This method needs to be implemented to provide new, type safe instances of this relationship.
        Specified by:
        withProperties in interface ExposesProperties<S extends NodeBase<?>>
        Parameters:
        newProperties - the new properties (can be null to remove exiting properties).
        Returns:
        A new relationship
      • getRequiredType

        protected final java.lang.String getRequiredType()
      • getDetails

        public final Relationship.Details getDetails()
        Description copied from interface: Relationship
        The details contains the types, properties and cardinality.
        Specified by:
        getDetails in interface Relationship
        Returns:
        A wrapper around the details of this relationship.
      • unbounded

        public final Relationship unbounded()
        Description copied from interface: Relationship
        Creates a new relationship with an unbound length minimum length
        Specified by:
        unbounded in interface Relationship
        Returns:
        the new relationship
      • min

        public final Relationship min​(java.lang.Integer minimum)
        Description copied from interface: Relationship
        Creates a new relationship with a new minimum length
        Specified by:
        min in interface Relationship
        Parameters:
        minimum - the new minimum
        Returns:
        the new relationship
      • max

        public final Relationship max​(java.lang.Integer maximum)
        Description copied from interface: Relationship
        Creates a new relationship with a new maximum length
        Specified by:
        max in interface Relationship
        Parameters:
        maximum - the new maximum
        Returns:
        the new relationship
      • length

        public final Relationship length​(java.lang.Integer minimum,
                                         java.lang.Integer maximum)
        Description copied from interface: Relationship
        Creates a new relationship with a new length
        Specified by:
        length in interface Relationship
        Parameters:
        minimum - the new minimum
        maximum - the new maximum
        Returns:
        the new relationship
      • inverse

        public final Relationship inverse()
        Description copied from interface: Relationship
        Creates a new relationship, inverting the direction but keeping the semantics intact ((a) --> (b) becomes (b) <-- (a)). A symbolic name will be removed from this relationship if any, as the it wouldn't be the same pattern to match against.
        Specified by:
        inverse in interface Relationship
        Returns:
        the new relationship
      • getSymbolicName

        public final java.util.Optional<SymbolicName> getSymbolicName()
        Specified by:
        getSymbolicName in interface Named
        Returns:
        An optional symbolic name.
      • relationshipTo

        public final RelationshipChain relationshipTo​(Node other,
                                                      java.lang.String... types)
        Description copied from interface: ExposesRelationships
        Starts building an outgoing relationship to the other node.
        Specified by:
        relationshipTo in interface ExposesRelationships<S extends NodeBase<?>>
        Parameters:
        other - The other end of the outgoing relationship
        types - The types to match
        Returns:
        An ongoing relationship definition, that can be used to specify the type
      • relationshipFrom

        public final RelationshipChain relationshipFrom​(Node other,
                                                        java.lang.String... types)
        Description copied from interface: ExposesRelationships
        Starts building an incoming relationship starting at the other node.
        Specified by:
        relationshipFrom in interface ExposesRelationships<S extends NodeBase<?>>
        Parameters:
        other - The source of the incoming relationship
        types - The types to match
        Returns:
        An ongoing relationship definition, that can be used to specify the type
      • relationshipBetween

        public final RelationshipChain relationshipBetween​(Node other,
                                                           java.lang.String... types)
        Description copied from interface: ExposesRelationships
        Starts building an undirected relationship between this node and the other.
        Specified by:
        relationshipBetween in interface ExposesRelationships<S extends NodeBase<?>>
        Parameters:
        other - The other end of the relationship
        types - The types to match
        Returns:
        An ongoing relationship definition, that can be used to specify the type
      • asCondition

        public final Condition asCondition()
        Description copied from interface: RelationshipPattern
        Transform this pattern into a condition. All names of the patterns must be known upfront in the final statement, as PatternExpressions are not allowed to introduce new variables.
        Specified by:
        asCondition in interface RelationshipPattern
        Returns:
        A condition based on this pattern.
      • accept

        public final void accept​(Visitor visitor)
        Description copied from interface: Visitable
        Accept a Visitor visiting this Visitable and its nested Visitables if applicable.
        Specified by:
        accept in interface Visitable
        Parameters:
        visitor - the visitor to notify, must not be null.
      • property

        public final Property property​(java.lang.String name)
        Description copied from interface: PropertyContainer
        Creates a new Property associated with this property container. This property can be used as a lookup in other expressions. It does not add a value to the property.

        Note: The property container does not track property creation and there is no possibility to enumerate all properties that have been created for this property container.

        Specified by:
        property in interface PropertyContainer
        Parameters:
        name - property name, must not be null or empty.
        Returns:
        a new Property associated with this named container
      • property

        public final Property property​(Expression lookup)
        Description copied from interface: PropertyContainer
        Creates a new Property associated with this property container. This property can be used as a lookup in other expressions. It does not add a value to the property.

        The new Property object is a dynamic lookup, based on the expression passed to this method. The expression can be example another property, a function result or a Cypher parameter. A property defined in such a way will render as p[expression].

        Note: The property container does not track property creation and there is no possibility to enumerate all properties that have been created for this property container.

        Specified by:
        property in interface PropertyContainer
        Parameters:
        lookup - the expression that is evaluated to lookup this property.
        Returns:
        a new Property associated with this named container
      • mutate

        public final Operation mutate​(Parameter parameter)
        Description copied from interface: PropertyContainer
        Creates an Operation mutating the properties of this container to a new value. The container does not track the operations created with this method.
        Specified by:
        mutate in interface PropertyContainer
        Parameters:
        parameter - the new properties
        Returns:
        A new operation.
      • mutate

        public final Operation mutate​(MapExpression properties)
        Description copied from interface: PropertyContainer
        Creates an Operation mutating the properties of this container to a new value. The container does not track the operations created with this method.
        Specified by:
        mutate in interface PropertyContainer
        Parameters:
        properties - the new properties
        Returns:
        A new operation.
      • project

        public final MapProjection project​(java.util.List<java.lang.Object> entries)
        Description copied from interface: PropertyContainer
        Unwraps the list of entries into an array before creating a projection out of it.
        Specified by:
        project in interface PropertyContainer
        Parameters:
        entries - A list of entries for the projection
        Returns:
        A map projection.
        See Also:
        SymbolicName.project(List)