.. java:import:: java.util ArrayList .. java:import:: java.util HashMap .. java:import:: java.util HashSet .. java:import:: java.util Iterator .. java:import:: java.util LinkedHashMap .. java:import:: java.util LinkedHashSet .. java:import:: java.util LinkedList .. java:import:: java.util List .. java:import:: java.util Map .. java:import:: java.util Map.Entry .. java:import:: java.util Objects .. java:import:: java.util Set .. java:import:: org.apache.shiro.subject Subject .. java:import:: org.caosdb.server.accessControl ACMPermissions .. java:import:: org.caosdb.server.database.exceptions EntityDoesNotExistException .. java:import:: org.caosdb.server.datatype AbstractCollectionDatatype .. java:import:: org.caosdb.server.datatype CollectionValue .. java:import:: org.caosdb.server.datatype IndexedSingleValue .. java:import:: org.caosdb.server.datatype ReferenceDatatype .. java:import:: org.caosdb.server.datatype ReferenceDatatype2 .. java:import:: org.caosdb.server.datatype ReferenceValue .. java:import:: org.caosdb.server.datatype TextDatatype .. java:import:: org.caosdb.server.entity ClientMessage .. java:import:: org.caosdb.server.entity DeleteEntity .. java:import:: org.caosdb.server.entity EntityID .. java:import:: org.caosdb.server.entity EntityInterface .. java:import:: org.caosdb.server.entity Message .. java:import:: org.caosdb.server.entity Message.MessageType .. java:import:: org.caosdb.server.entity StatementStatus .. java:import:: org.caosdb.server.entity.container TransactionContainer .. java:import:: org.caosdb.server.entity.wrapper Property .. java:import:: org.caosdb.server.entity.xml ToElementable .. java:import:: org.caosdb.server.jobs EntityJob .. java:import:: org.caosdb.server.jobs LazyEntityResolver .. java:import:: org.caosdb.server.permissions EntityACI .. java:import:: org.caosdb.server.permissions EntityACL .. java:import:: org.caosdb.server.query Query .. java:import:: org.caosdb.server.utils EntityStatus .. java:import:: org.jdom2 Element EntityStateJob ============== .. java:package:: org.caosdb.server.jobs.core :noindex: .. java:type:: public abstract class EntityStateJob extends EntityJob The EntityStateJob is the abstract base class for four EntityJobs: 1. The \ :java:ref:`InitEntityState`\ job reads ClientMessages or StateProperties with tag state and converts them into instances of State. This job runs during WriteTransactions. This job runs during the INIT Phase and does not perform any checks other than those necessary for the conversion. 2. The \ :java:ref:`CheckStateTransition`\ job checks if the attempted state transition is in compliance with the state model. This job runs during the CHECK phase and should do all necessary consistency and permission checks. 3. The \ :java:ref:`MakeStateProperty`\ job constructs an ordinary Property from the State right before the entity is being written to the back-end and after any checks run. 4. The \ :java:ref:`MakeStateMessage`\ job converts a state property (back) into State messages and appends them to the entity. Only the 4th job (\ :java:ref:`MakeStateMessage`\ ) runs during Retrieve transitions. During WriteTransactions all four jobs do run. :author: Timm Fitschen Fields ------ COULD_NOT_CONSTRUCT_STATE_MESSAGE ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final Message COULD_NOT_CONSTRUCT_STATE_MESSAGE :outertype: EntityStateJob COULD_NOT_CONSTRUCT_TRANSITIONS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final Message COULD_NOT_CONSTRUCT_TRANSITIONS :outertype: EntityStateJob ENTITY_STATE_ROLE_MARKER ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String ENTITY_STATE_ROLE_MARKER :outertype: EntityStateJob FINAL_STATE_PROPERTY_NAME ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String FINAL_STATE_PROPERTY_NAME :outertype: EntityStateJob FROM_STATE_PROPERTY_NAME ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String FROM_STATE_PROPERTY_NAME :outertype: EntityStateJob FROM_XML_TAG ^^^^^^^^^^^^ .. java:field:: public static final String FROM_XML_TAG :outertype: EntityStateJob INITIAL_STATE_PROPERTY_NAME ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String INITIAL_STATE_PROPERTY_NAME :outertype: EntityStateJob PERMISSION_STATE_TRANSION ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final TransitionPermission PERMISSION_STATE_TRANSION :outertype: EntityStateJob SERVER_PROPERTY_EXT_ENTITY_STATE ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: protected static final String SERVER_PROPERTY_EXT_ENTITY_STATE :outertype: EntityStateJob STATE_ATTRIBUTE_DESCRIPTION ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String STATE_ATTRIBUTE_DESCRIPTION :outertype: EntityStateJob STATE_ATTRIBUTE_ID ^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String STATE_ATTRIBUTE_ID :outertype: EntityStateJob STATE_ATTRIBUTE_MODEL ^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String STATE_ATTRIBUTE_MODEL :outertype: EntityStateJob STATE_ATTRIBUTE_NAME ^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String STATE_ATTRIBUTE_NAME :outertype: EntityStateJob STATE_MODEL_NOT_FOUND ^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final Message STATE_MODEL_NOT_FOUND :outertype: EntityStateJob STATE_MODEL_NOT_SPECIFIED ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final Message STATE_MODEL_NOT_SPECIFIED :outertype: EntityStateJob STATE_MODEL_RECORD_TYPE_NAME ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String STATE_MODEL_RECORD_TYPE_NAME :outertype: EntityStateJob STATE_NOT_IN_STATE_MODEL ^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final Message STATE_NOT_IN_STATE_MODEL :outertype: EntityStateJob STATE_NOT_SPECIFIED ^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final Message STATE_NOT_SPECIFIED :outertype: EntityStateJob STATE_PERMISSIONS ^^^^^^^^^^^^^^^^^ .. java:field:: public static final ACMPermissions STATE_PERMISSIONS :outertype: EntityStateJob STATE_RECORD_TYPE_NAME ^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String STATE_RECORD_TYPE_NAME :outertype: EntityStateJob STATE_XML_TAG ^^^^^^^^^^^^^ .. java:field:: public static final String STATE_XML_TAG :outertype: EntityStateJob TO_STATE_PROPERTY_NAME ^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String TO_STATE_PROPERTY_NAME :outertype: EntityStateJob TO_XML_TAG ^^^^^^^^^^ .. java:field:: public static final String TO_XML_TAG :outertype: EntityStateJob TRANSITION_ATTRIBUTE_DESCRIPTION ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String TRANSITION_ATTRIBUTE_DESCRIPTION :outertype: EntityStateJob TRANSITION_ATTRIBUTE_NAME ^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String TRANSITION_ATTRIBUTE_NAME :outertype: EntityStateJob TRANSITION_RECORD_TYPE_NAME ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String TRANSITION_RECORD_TYPE_NAME :outertype: EntityStateJob TRANSITION_XML_TAG ^^^^^^^^^^^^^^^^^^ .. java:field:: public static final String TRANSITION_XML_TAG :outertype: EntityStateJob Methods ------- createState ^^^^^^^^^^^ .. java:method:: protected State createState(ClientMessage s) throws Message :outertype: EntityStateJob createState ^^^^^^^^^^^ .. java:method:: protected State createState(Property p) throws Message :outertype: EntityStateJob Create a State instance from the value of the state property. This method also retrieves the state entity from the back-end. The StateModel is deduced from finding an appropriately referencing StateModel Record. :param p: the entity's state property :throws Message: :return: The state of the entity findStateModel ^^^^^^^^^^^^^^ .. java:method:: EntityInterface findStateModel(EntityInterface stateEntity) throws Exception :outertype: EntityStateJob getState ^^^^^^^^ .. java:method:: protected State getState() :outertype: EntityStateJob getState ^^^^^^^^ .. java:method:: protected State getState(EntityInterface entity) :outertype: EntityStateJob getState ^^^^^^^^ .. java:method:: protected State getState(EntityInterface entity, boolean remove) :outertype: EntityStateJob getState ^^^^^^^^ .. java:method:: protected State getState(boolean remove) :outertype: EntityStateJob getStateClientMessages ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected List getStateClientMessages(EntityInterface entity, boolean remove) :outertype: EntityStateJob Get the \ ``ClientMessage``\ s which denote a state. getStateClientMessages ^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected List getStateClientMessages(boolean remove) :outertype: EntityStateJob getStateProperties ^^^^^^^^^^^^^^^^^^ .. java:method:: protected List getStateProperties(EntityInterface entity, boolean remove) :outertype: EntityStateJob Return (and possibly remove) the States Properties of `entity`. getStateProperties ^^^^^^^^^^^^^^^^^^ .. java:method:: protected List getStateProperties(boolean remove) :outertype: EntityStateJob getStateRecordType ^^^^^^^^^^^^^^^^^^ .. java:method:: protected EntityInterface getStateRecordType() throws Message :outertype: EntityStateJob removeCached ^^^^^^^^^^^^ .. java:method:: protected void removeCached(EntityInterface entity) :outertype: EntityStateJob