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 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
    • toString

      public String toString()
      Description copied from interface: Visitable
      Most visitables will render themselves into a Cypher fragment preceded with the actual classname. The representation however is not cached - in contrast to the ones for full statements. Using toString is recommended for debugging purposes mainly, and not for production use.

      The concrete classname has been prepended to help debugging and actually to discourage using fragments to build queries without explicitly rendering them, either as statement or going through the renderer on purpose.

      Specified by:
      toString in interface Visitable
      Overrides:
      toString in class Object
      Returns:
      A string representation of this visitable formatted as Classname{cypher=value}
    • 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: