Class NodeBase<SELF extends Node>

java.lang.Object
org.neo4j.cypherdsl.core.NodeBase<SELF>
Type Parameters:
SELF - The type of this node
All Implemented Interfaces:
Visitable, ExposesProperties<Node>, ExposesRelationships<Relationship>, IdentifiableElement, Named, Node, PatternElement, PropertyContainer

@API(status=STABLE, since="2021.1.0") public abstract class NodeBase<SELF extends Node> extends Object implements Node
This is the base class for all nodes. It can be used with generics, specifying a valid type. This is useful when using it as a base class for a static meta model.
Since:
2021.1.0
Author:
Michael J. Simons
  • Constructor Details

    • NodeBase

      protected NodeBase(String primaryLabel, String... additionalLabels)
      Creates a new base object from a set of labels.
      Parameters:
      primaryLabel - The primary label
      additionalLabels - An optional list of additional ones.
    • NodeBase

      protected NodeBase(SymbolicName symbolicName, List<NodeLabel> labels, Properties properties)
      Creates a new base object from a SymbolicName name, a list of labels and a set of properties
      Parameters:
      symbolicName - The symbolic name for this node object
      labels - The list of labels, no primary is given
      properties - A seto f properties
  • Method Details

    • named

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

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

      @NotNull public final SELF withProperties(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<SELF extends Node>
      Parameters:
      keysAndValues - A list of key and values. Must be an even number, with alternating String and Expression.
      Returns:
      The new property container.
    • withProperties

      @NotNull public final SELF withProperties(Map<String,Object> newProperties)
      A new object with a new set of properties
      Specified by:
      withProperties in interface ExposesProperties<SELF extends Node>
      Parameters:
      newProperties - A map with the new properties
      Returns:
      A new object
    • withProperties

      @NotNull public abstract SELF withProperties(MapExpression newProperties)
      This method needs to be implemented to provide new, type safe instances of this node.
      Specified by:
      withProperties in interface ExposesProperties<SELF extends Node>
      Parameters:
      newProperties - the new properties (can be null to remove exiting properties).
      Returns:
      A new node
    • getProperties

      protected final Properties getProperties()
      Returns:
      Set of properties for this node
    • getLabels

      @NotNull public final @NotNull List<NodeLabel> getLabels()
      Specified by:
      getLabels in interface Node
      Returns:
      The labels associated with this Node
    • getSymbolicName

      @NotNull public final @NotNull Optional<SymbolicName> getSymbolicName()
      Specified by:
      getSymbolicName in interface Named
      Returns:
      An optional symbolic name.
    • getRequiredSymbolicName

      @NotNull public final @NotNull SymbolicName getRequiredSymbolicName()
      Specified by:
      getRequiredSymbolicName in interface Named
      Returns:
      A symbolic name
    • 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.
    • hasLabels

      @NotNull public final @NotNull Condition hasLabels(String... labelsToQuery)
      Description copied from interface: Node
      A condition that checks for the presence of labels on a node.
      Specified by:
      hasLabels in interface Node
      Parameters:
      labelsToQuery - A list of labels to query
      Returns:
      A condition that checks whether this node has all of the labels to query
    • isEqualTo

      @NotNull public final @NotNull Condition isEqualTo(Node otherNode)
      Description copied from interface: Node
      Creates a new condition whether this node is equal to otherNode.
      Specified by:
      isEqualTo in interface Node
      Parameters:
      otherNode - The node to compare this node to.
      Returns:
      A condition.
    • isNotEqualTo

      @NotNull public final @NotNull Condition isNotEqualTo(Node otherNode)
      Description copied from interface: Node
      Creates a new condition whether this node is not equal to otherNode.
      Specified by:
      isNotEqualTo in interface Node
      Parameters:
      otherNode - The node to compare this node to.
      Returns:
      A condition.
    • isNull

      @NotNull public final @NotNull Condition isNull()
      Description copied from interface: Node
      Creates a new condition based on this node whether it is null.
      Specified by:
      isNull in interface Node
      Returns:
      A condition.
    • isNotNull

      @NotNull public final @NotNull Condition isNotNull()
      Description copied from interface: Node
      Creates a new condition based on this node whether it is not null.
      Specified by:
      isNotNull in interface Node
      Returns:
      A condition.
    • descending

      @NotNull public final @NotNull SortItem descending()
      Description copied from interface: Node
      Creates a new sort item of this node in descending order.
      Specified by:
      descending in interface Node
      Returns:
      A sort item.
    • ascending

      @NotNull public final @NotNull SortItem ascending()
      Description copied from interface: Node
      Creates a new sort item of this node in ascending order.
      Specified by:
      ascending in interface Node
      Returns:
      A sort item.
    • as

      @NotNull public final @NotNull AliasedExpression as(String alias)
      Description copied from interface: Node
      Creates an alias for this node.
      Specified by:
      as in interface Node
      Parameters:
      alias - The alias to use.
      Returns:
      The aliased expression.
    • internalId

      @NotNull public final @NotNull FunctionInvocation internalId()
      Specified by:
      internalId in interface Node
      Returns:
      A new function invocation returning the internal id of this node.
    • labels

      @NotNull public final @NotNull FunctionInvocation labels()
      Specified by:
      labels in interface Node
      Returns:
      A new function invocation returning the labels of this node.
    • relationshipTo

      @NotNull public final @NotNull Relationship relationshipTo(Node other, String... types)
      Description copied from interface: ExposesRelationships
      Starts building an outgoing relationship to the other node.
      Specified by:
      relationshipTo in interface ExposesRelationships<Relationship>
      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

      @NotNull public final @NotNull Relationship relationshipFrom(Node other, String... types)
      Description copied from interface: ExposesRelationships
      Starts building an incoming relationship starting at the other node.
      Specified by:
      relationshipFrom in interface ExposesRelationships<Relationship>
      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

      @NotNull public final @NotNull Relationship relationshipBetween(Node other, String... types)
      Description copied from interface: ExposesRelationships
      Starts building an undirected relationship between this node and the other.
      Specified by:
      relationshipBetween in interface ExposesRelationships<Relationship>
      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
    • property

      @NotNull public final @NotNull Property property(@NotNull @NotNull 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

      @NotNull public final @NotNull Property property(String... names)
      Specified by:
      property in interface PropertyContainer
      Parameters:
      names - a list of nested property names
      Returns:
      a new Property associated with this named container
      See Also:
    • property

      @NotNull public final @NotNull 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

      @NotNull public final @NotNull 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

      @NotNull public final @NotNull 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.
    • set

      @NotNull public final @NotNull Operation set(Parameter<?> parameter)
      Description copied from interface: PropertyContainer
      Creates an SET operation setting the properties of this container to a new value. The container does not track the operations created with this method.
      Specified by:
      set in interface PropertyContainer
      Parameters:
      parameter - the new properties
      Returns:
      A new operation.
    • set

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

      @NotNull public final @NotNull MapProjection project(List<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:
    • project

      @NotNull public final @NotNull MapProjection project(Object... entries)
      Description copied from interface: PropertyContainer
      Creates a map projection based on this container. The container needs a symbolic name for this to work.
      Specified by:
      project in interface PropertyContainer
      Parameters:
      entries - A list of entries for the projection
      Returns:
      A map projection.
      See Also: