Class AnnotationSetSnapshot

java.lang.Object
net.sf.basedb.core.snapshot.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 Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
      Constant Field Values
    • 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
    • annotations

      private transient List<AnnotationSnapshot> annotations
  • Constructor Details

    • AnnotationSetSnapshot

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

    • 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.
    • writeObject

      private void writeObject​(ObjectOutputStream out) throws IOException
      Throws:
      IOException
    • readObject

      private void readObject​(ObjectInputStream in) throws IOException, ClassNotFoundException
      Throws:
      IOException
      ClassNotFoundException