Class ProjectSpecificAnnotationsManager

  • All Implemented Interfaces:
    TransactionalAction

    class ProjectSpecificAnnotationsManager
    extends Object
    implements TransactionalAction
    Internal class for keeping the "override_id" column in the "Annotations" table synchronized when annotations are creted and deleted.
    Since:
    3.10
    Author:
    nicklas
    • Constructor Detail

      • ProjectSpecificAnnotationsManager

        ProjectSpecificAnnotationsManager​(Session session)
    • Method Detail

      • cleanupProjectSpecificAnnotations

        static int cleanupProjectSpecificAnnotations()
                                              throws BaseException
        Delete project-specific annotations that belong to projects that no longer exists.
        Returns:
        The number of deleted annotation sets
        Throws:
        BaseException
      • findProjectSpecificAnnotation

        Annotation findProjectSpecificAnnotation​(Annotation defaultAnnotation,
                                                 int projectId)
        Find a project-specific annotation for a given default annotation.
      • primaryCreated

        void primaryCreated​(int id,
                            int annotationSet,
                            int annotationType,
                            int project)
        A PRIMARY annotation has been created in this transaction. If this is a DEFAULT annotation (projectId==0) we need to set "override_id" for project-specific annotations to point to this annotation. If this is a PROJECT-SPECIFIC annotation (projectId!=0) we need to find the ID of the default annotation.
        Parameters:
        id - The annotation that was created
        annotationSet - The annotation set the annotation belongs to
        annotationType - The annotation type of the annotation
        project - The id of the project, or 0 for default annotation
      • inheritedCreated

        void inheritedCreated​(int id,
                              int annotationSet,
                              int parent,
                              int parentSet,
                              int parentOverride,
                              int project)
        An INHERITED/CLONED annotation has been created in this transaction. If this is a DEFAULT annotation (projectId==0) we need to set "override_id" for project-specific annotations to point to this annotation. If this is a PROJECT-SPECIFIC annotation (projectId!=0) we need to find the ID of the default annotation.
        Parameters:
        id - The annotation that was created
        annotationSet - The annotation set the annotation belongs to
        parent - The id of the parent annotation
        parentSet - The id of the parent annotation set
        parentOverride - The "override_id" column from the parent annotation
        project - The id of the project, or 0 for default annotation
      • defaultDeleted

        void defaultDeleted​(int id,
                            boolean isPrimary)
        A default annotation is being deleted in this transaction. We need to set override_id=0 on all other annotations that are referencing this annotation. This method can be used for both primary, inherited and cloned annotations.
      • onBeforeCommit

        public void onBeforeCommit()
        Description copied from interface: TransactionalAction
        This method is called before the commit is about to happen. If this method throws an exception the transaction will be rolled back.
        Specified by:
        onBeforeCommit in interface TransactionalAction
      • onAfterCommit

        public void onAfterCommit()
        Description copied from interface: TransactionalAction
        Called after a successful commit. Implementations should not throw any exceptions from this method. If they do, the message is logged, by no other action is taken.
        Specified by:
        onAfterCommit in interface TransactionalAction
      • onRollback

        public void onRollback()
        Description copied from interface: TransactionalAction
        Called after an unsuccessful commit. Implementations should not throw any exceptions from this method. If they do, the message is logged, by no other action is taken.
        Specified by:
        onRollback in interface TransactionalAction
      • deleteAnnotationsForNonExistingProjects

        int deleteAnnotationsForNonExistingProjects()