Class AnnotationSetSnapshot

  • All Implemented Interfaces:
    Serializable

    public class AnnotationSetSnapshot
    extends Object
    implements Serializable
    A snapshot of an annotation set that is used to store information as a file. This will make it quicker to load annotation values than if we have to do it from the database each time. The snapshot will store information about:
    • The item the annotation set is linked to
    • The primary annotations (including their values)
    • Unit the values should be displayed in (values are always stored in the unit of the annotation type)
    • Inherited annotations (not including the values)
    • Inherited annotation sets (not including the values)
    The reason that the snapshot doesn't include values for inherited annotations is that it is better to just store a reference to the annotation set the annotations are inherited from. The values can then be loaded from the referenced snapshot. This design makes it easier to "invalidate" (eg. delete the serialized file) a cached snapshot when an annotation has been modified. We only have to delete the file that is associated with the primary annotation set.

    IMPORTANT NOTE TO DEVELOPERS!!

    Do not forget to synchronize all serialization code and to increment the FILE_VERSION in case the number of variables that needs serialization in this class or in the AnnotationSnapshot changes.

    Version:
    2.14
    Author:
    Nicklas
    See Also:
    Serialized Form
    Last modified
    $Date: 2019-02-27 14:18:43 +0100 (ons, 27 feb. 2019) $
    • Field Detail

      • FILE_VERSION

        public static final int FILE_VERSION
        The version number for the file format in use when serializing this data. If the format changes in an incompatible way, this number must be increased. This will make sure that the old files are not used and that new files are generated instead.
      • created

        private transient long created
      • annotationSetId

        private transient int annotationSetId
      • itemId

        private transient int itemId
      • itemType

        private transient Item itemType
    • Constructor Detail

      • AnnotationSetSnapshot

        public AnnotationSetSnapshot()
        Creates a new, empty snapshot.
    • Method Detail

      • init

        public void init​(AnnotationSetData set)
        Initialise the snapshot with data from the given annotation set, including values for all primary annotations and information about inherited annotations.
      • getSnapshotDate

        public Date getSnapshotDate()
        Get the date and time this snapshot was created.
      • getItemId

        public int getItemId()
        Get the ID of the item the annotations in this snapshot belong to.
      • getItem

        public Annotatable getItem​(DbControl dc)
        Get item the annotations belong to.
        Parameters:
        dc - A DbControl to use for database access
      • getItemType

        public Item getItemType()
        Get the item type of the item the annotations in this snapshot belong to.
      • getSize

        public int getSize()
        Get the number of annotations.
      • getAnnotations

        List<AnnotationSnapshot> getAnnotations()
        Get a list with the all annotations in this snapshot.
      • getAnnotationSetId

        public int getAnnotationSetId()
        Get the id of the annotation set this is a snapshot of.
      • getAnnotationSet

        public AnnotationSet getAnnotationSet​(DbControl dc)
        Get the annotation set this is a snapshot of.