Interface BasicUserType<X>

Type Parameters:
X - The type of the user type
All Superinterfaces:
BasicUserTypeStringSupport<X>
All Known Subinterfaces:
VersionBasicUserType<X>
All Known Implementing Classes:
AbstractMutableBasicUserType, ImmutableBasicUserType, MutableBasicUserType

public interface BasicUserType<X>
extends BasicUserTypeStringSupport<X>
A contract for defining a custom basic type to use with entity views.
Since:
1.2.0
Author:
Christian Beikov
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static String[] DIRTY_MARKER
    The object to return from getDirtyProperties(Object) when unsure what properties are dirty.
  • Method Summary

    Modifier and Type Method Description
    X deepClone​(X object)
    Clones the given object if the type is mutable to be able to detect mutations.
    String[] getDirtyProperties​(X object)
    Returns the nested properties of the object that are known to be dirty.
    int hashCode​(X object)
    Returns the hash code of the object for lookups in hash based collections.
    boolean isDeepEqual​(X object1, X object2)
    Returns true if the given objects are equal regarding their values.
    boolean isEqual​(X object1, X object2)
    Returns true if the given objects are equal regarding their identity.
    boolean isMutable()
    Returns true if the type is mutable, false otherwise.
    boolean shouldPersist​(X entity)
    Returns true if the given entity object should be persisted.
    boolean supportsDeepCloning()
    Returns true if the type supports creating deep clones, false otherwise.
    boolean supportsDeepEqualChecking()
    Returns true if the type supports checking deep equality, false otherwise.
    boolean supportsDirtyChecking()
    Returns true if the type supports dirty checking, false otherwise.
    boolean supportsDirtyTracking()
    Returns true if the type supports dirty tracking, false otherwise.

    Methods inherited from interface com.blazebit.persistence.view.spi.type.BasicUserTypeStringSupport

    fromString, toStringExpression
  • Field Details

  • Method Details

    • isMutable

      boolean isMutable()
      Returns true if the type is mutable, false otherwise.
      Returns:
      true if mutable, false otherwise
    • supportsDirtyChecking

      boolean supportsDirtyChecking()
      Returns true if the type supports dirty checking, false otherwise. This is only relevant when the type is also mutable.
      Returns:
      true if dirty checking is supported, false otherwise
    • supportsDirtyTracking

      boolean supportsDirtyTracking()
      Returns true if the type supports dirty tracking, false otherwise. Support for dirty tracking implies that the type implements the BasicDirtyTracker interface. This is only relevant when the type is also mutable. Note that if this method returns true, the supportsDirtyChecking() method should also return true.
      Returns:
      true if dirty tracking is supported, false otherwise
    • supportsDeepEqualChecking

      boolean supportsDeepEqualChecking()
      Returns true if the type supports checking deep equality, false otherwise. Deep equality checking, in contrast to normal equality checking, compares objects by their actual values rather than maybe just their identity. For value types, deep equality checking is the same as normal equality checking.
      Returns:
      true if deep equality checking is supported, false otherwise
    • supportsDeepCloning

      boolean supportsDeepCloning()
      Returns true if the type supports creating deep clones, false otherwise. Deep clones are only necessary for mutable types that don't support dirty checking. Immutable types can simply return true.
      Returns:
      true if deep cloning is supported, false otherwise
    • isEqual

      boolean isEqual​(X object1, X object2)
      Returns true if the given objects are equal regarding their identity. For value types, this is the same as deep equality checking.
      Parameters:
      object1 - The first object
      object2 - The second object
      Returns:
      true if the objects are equal, false otherwise
    • isDeepEqual

      boolean isDeepEqual​(X object1, X object2)
      Returns true if the given objects are equal regarding their values. If deep equality is not supported, returns false.
      Parameters:
      object1 - The first object
      object2 - The second object
      Returns:
      true if the objects are equal, false otherwise
    • hashCode

      int hashCode​(X object)
      Returns the hash code of the object for lookups in hash based collections.
      Parameters:
      object - The object
      Returns:
      the hash code of the object
    • shouldPersist

      boolean shouldPersist​(X entity)
      Returns true if the given entity object should be persisted. This is invoked for user types where the type T is an entity type. If the type is not an entity type, returns false.
      Parameters:
      entity - The entity for which to determine whether it should be persisted
      Returns:
      true if the entity should be persisted, false otherwise
    • getDirtyProperties

      String[] getDirtyProperties​(X object)
      Returns the nested properties of the object that are known to be dirty. If the object isn't dirty i.e. doesn't need flushing, null is returned. If the properties that are dirty aren't known or the type doesn't have nested properties, an empty array or DIRTY_MARKER is returned.
      Parameters:
      object - The object for which to determine the dirty properties
      Returns:
      the dirty properties of the object
    • deepClone

      X deepClone​(X object)
      Clones the given object if the type is mutable to be able to detect mutations. Immutable types may return the object itself. Types that can't be cloned easily can return the object too, but should make sure, that the deep equality check always returns false or dirty checking is properly supported.
      Parameters:
      object - The object to clone
      Returns:
      The cloned object