Class ReadonlyInstance

java.lang.Object
com.aquima.interactions.profile.wrapper.ReadonlyInstance
All Implemented Interfaces:
IEventChannel, IPropertyContainer, IEntityInstance, Serializable
Direct Known Subclasses:
DependencyInstance

public class ReadonlyInstance extends Object implements IEntityInstance
This wrapper class can be used to make an instance read-only. All modification attempts to the wrapped instance will result in an exception.
Since:
5.0
Author:
O. Kerpershoek
See Also:
  • Constructor Details

    • ReadonlyInstance

      public ReadonlyInstance(IEntityInstance instance)
      Constructs a read only instance based on the instance passed.
      Parameters:
      instance - The instance that should become read-only.
  • Method Details

    • wrapInstance

      protected IEntityInstance wrapInstance(IEntityInstance instance)
    • getId

      public GUID getId()
      Description copied from interface: IEntityInstance
      This method returns the unique ID of this instance. The id of an instance is generated upon creation.
      Specified by:
      getId in interface IEntityInstance
      Returns:
      long containing the unique identifier of this instance.
    • getName

      public String getName()
      Description copied from interface: IEntityInstance
      This method returns the unique name of the instance. The name of an instance is either provided upon construction with createInstance, provided as a property of a static instance, or automatically generated when none was available.
      Specified by:
      getName in interface IEntityInstance
      Returns:
      Unique name of the instance
    • getInstanceReference

      public EntityValue getInstanceReference()
      Description copied from interface: IEntityInstance
      returns the instance identifier denoting this instance.
      Specified by:
      getInstanceReference in interface IEntityInstance
      Returns:
      EntityValue never null.
    • instanceOf

      public boolean instanceOf(String entityName)
      Description copied from interface: IEntityInstance
      This method checks if the instance is of the specified type. The instance is considered to be of the given type when either the type matches the actual type directly, or when the actual type is a specialization of the supplied type.

      Example: An instance of polygon that extends shape will return true for the types polygon and shape, but false for the type square (which extends the polygon type).

      This method is the direct equivalent of getEntityDefinition().typeOf( String entityName ).
      Specified by:
      instanceOf in interface IEntityInstance
      Parameters:
      entityName - The name of the entity type that should be used to check this instance against.
      Returns:
      boolean indicating if the instance is either directly of the supplied type, or extends the type.
    • getEntityDefinition

      public IEntityDefinition getEntityDefinition()
      Description copied from interface: IEntityInstance
      This method returns the entity definition of this instance. The entity definition object can be used to retrieve the static information of the entity.
      Specified by:
      getEntityDefinition in interface IEntityInstance
      Returns:
      IEntityDefinition object containing the static information about an entity.
    • getReferringInstances

      public InstanceReferrer[] getReferringInstances()
      Description copied from interface: IEntityInstance
      This method returns information about the instances that are referring this instance. The InstanceReferrer objects can be used to determine what instance is referring this one, and through what attribute. The attribute by which this instance is referenced is needed, as an instance may have multiple references to another through different attributes.
      Specified by:
      getReferringInstances in interface IEntityInstance
      Returns:
      Array of reference objects containing information about the referring instance.
    • getValue

      public IValue getValue(String attributeName)
      Description copied from interface: IEntityInstance
      This method can be used to retrieve a value for an attribute of this instance in a non-type safe manner.
      • DataType.Boolean returns a BooleanValue
      • DataType.Currency returns a DoubleValue
      • DataType.Date returns a DateValue
      • DataType.Number returns a NumberValue
      • DataType.Integer returns a IntegerValue
      • DataType.Percentage returns a DoubleValue
      • DataType.String returns a StringValue
      • DataType.Domain returns a StringValue containing the short value, and has the display value as well.
      • DataType.Entity returns an EntityValue object denoting the instance this relation was pointing to.
      N.B.
      1. If the value was not answered the return value is as specified but on the IValue object the isUnknown function renders true
      2. If the value was answered and the single value was null the return value is not null, but the isUnknown function results in true
      3. If the value is a multivalued attribute a collection containing the only the object types listed above.
      Specified by:
      getValue in interface IEntityInstance
      Parameters:
      attributeName - String (without the entity name)
      Returns:
      The value for the specified attribute name.
    • getAttributeState

      public IAttributeValue getAttributeState(String attributeName)
      Description copied from interface: IEntityInstance
      When the attribute is known, it will return the state of the attribute.
      Specified by:
      getAttributeState in interface IEntityInstance
      Parameters:
      attributeName - String Preferably without the entity name
      Returns:
      The state information of the attribute.
    • addValue

      public boolean addValue(String attributeName, ISingleValue attributeValue)
      Always throws an InvalidStateException: No modifications allowed on a read only instance.
      Specified by:
      addValue in interface IEntityInstance
      Parameters:
      attributeName - The name of the attribute to which the value should be added.
      attributeValue - The value that should be added to the attribute specified.
      Returns:
      boolean indicating whether the value was actually added (a duplicate value will result in false).
      Throws:
      AppException - This exception is raised when for instance the attribute name is not known within the entity definition.
    • removeValue

      public boolean removeValue(String attributeName, ISingleValue attributeValue)
      Always throws an InvalidStateException: No modifications allowed on a read only instance.
      Specified by:
      removeValue in interface IEntityInstance
      Parameters:
      attributeName - the attribute name preferred without the entity name
      attributeValue - The value that should be removed.
      Returns:
      boolean if the value was found in the original value list.
      Throws:
      AppException - This exception is raised when for instance the attribute name is not known within the entity definition.
    • setValue

      public boolean setValue(String attributeName, Object attributeValue)
      Always throws an InvalidStateException: No modifications allowed on a read only instance.
      Specified by:
      setValue in interface IEntityInstance
      Parameters:
      attributeName - the attribute name, preferred name instead of Person.name
      attributeValue - The objects value to set as value.
      Returns:
      Boolean indicating whether the value of the attribute did change.
      Throws:
      AppException - This exception is thrown when the parameters are incorrect (for instance an invalid attribute name).
    • clearValue

      public boolean clearValue(String attributeName)
      Always throws an InvalidStateException: No modifications allowed on a read only instance.
      Specified by:
      clearValue in interface IEntityInstance
      Parameters:
      attributeName - String the attribute name.
      Returns:
      boolean true whether the attribute-value was changed by this action.
      Throws:
      AppException - This exception is raised when for instance the attribute name is not known within the entity definition.
    • getInstanceValue

      public IEntityInstance getInstanceValue(String attributeName)
      Description copied from interface: IEntityInstance
      This method returns the instances that is referred to by the given attribute. If the attribute does not refer to an instance, a null value is returned.
      Specified by:
      getInstanceValue in interface IEntityInstance
      Parameters:
      attributeName - The name of the attribute containing the instance.
      Returns:
      The IEntityInstance referred to by the attribute.
    • getInstanceValues

      public IEntityInstance[] getInstanceValues(String attributeName)
      Description copied from interface: IEntityInstance
      This method returns an array containing all the instances that are referred to by the given attribute. If the attribute does not refer to any instance, an empty array is returned.
      Specified by:
      getInstanceValues in interface IEntityInstance
      Parameters:
      attributeName - The name of the attribute containing the instances.
      Returns:
      An array containing all the instances that are referred to by the attribute.
    • getSupportedEvents

      public int getSupportedEvents()
      Description copied from interface: IEventChannel
      This method returns a bit-mask containing all event types that are supported by this event channel. The bit-mask is a bitwise OR of the diverse event types. To check whether a specific event-listener is supported, you can do the following:
       // This checks if a VALUE listener is supported
       if ((channel.getSupportedEvents() & IEvent.Mask.VALUE) != 0) {
         // VALUE event listeners that are supported
       }
       
      Specified by:
      getSupportedEvents in interface IEventChannel
      Returns:
      Bit-mask containing the event types that are supported by this event channel.
    • addEventListener

      public boolean addEventListener(IEventListener listener)
      Always throws an InvalidStateException: No modifications allowed on a read only instance.
      Specified by:
      addEventListener in interface IEventChannel
      Parameters:
      listener - The event listener that should be added.
      Returns:
      boolean indicating is the listener was actually added.
    • removeEventListener

      public boolean removeEventListener(IEventListener listener)
      Always throws an InvalidStateException: No modifications allowed on a read only instance.
      Specified by:
      removeEventListener in interface IEventChannel
      Parameters:
      listener - The event listener that should be removed.
      Returns:
      boolean indicating if the listener was actually removed.
    • getPropertyNames

      public String[] getPropertyNames()
      Description copied from interface: IPropertyContainer
      Returns the names of the properties.
      Specified by:
      getPropertyNames in interface IPropertyContainer
      Returns:
      All available properties.
    • hasProperty

      public boolean hasProperty(String name)
      Description copied from interface: IPropertyContainer
      This method will return a boolean indicating if a property with the specified name is present.
      Specified by:
      hasProperty in interface IPropertyContainer
      Parameters:
      name - The name of the property that should be checked.
      Returns:
      boolean indicating if a property with the specified name is present.
    • getProperty

      public IValue getProperty(String name)
      Description copied from interface: IPropertyContainer
      This method will return the value of the specified property.
      Specified by:
      getProperty in interface IPropertyContainer
      Parameters:
      name - The name of the property whose value is requested.
      Returns:
      The value of the property.
    • setProperty

      public boolean setProperty(String name, IValue propertyValue)
      Always throws an InvalidStateException: No modifications allowed on a read only instance.
      Specified by:
      setProperty in interface IPropertyContainer
      Parameters:
      name - The name of the property whose value should be set.
      propertyValue - The new value of the property.
      Returns:
      boolean indicating if the set operation was successful.
    • isSingletonInstance

      public boolean isSingletonInstance()
      Description copied from interface: IEntityInstance
      This method returns a boolean indicating whether this instance is the singleton instance for its entity type. A singleton instance always has the same id (zero), and is guaranteed to be the only instance of its type.
      Specified by:
      isSingletonInstance in interface IEntityInstance
      Returns:
      boolean indicating whether this instance is the singleton instance for its entity type.
    • isStaticInstance

      public boolean isStaticInstance()
      Description copied from interface: IEntityInstance
      Checks whether the entity instance is a static instance. Static instances are defined in KnowledgeStudio and will always be present in the profile with the same name.
      Specified by:
      isStaticInstance in interface IEntityInstance
      Returns:
      boolean indicating whether the entity instance is a static instance.
    • isDeleted

      public boolean isDeleted()
      Description copied from interface: IEntityInstance

      This method returns a boolean indicating if the instance has been deleted. A reference to a deleted instance may still be used, but certain methods will no longer be available. Any method that would modify the state of the instance, for example the setValue method, will throw an UnknownInstanceException when invoked on a deleted instance. Methods that return information about the state, for example the getValue method, will still be available.

      Note: Deleted instances never refer to other instances, so the getInstanceValue(s) method will not be available. Requesting the value for any relation attribute on a deleted instance will always result in an unknown value.

      Specified by:
      isDeleted in interface IEntityInstance
      Returns:
      A boolean indicating if the instance has been deleted.
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object