Class Artifact.ArtifactBuilder

java.lang.Object
org.ivoa.dm.caom2.Artifact.ArtifactBuilder
Enclosing class:
Artifact

public static class Artifact.ArtifactBuilder extends Object
A builder class for Artifact, mainly for use in the functional builder pattern.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    accumulated checksum of the metadata of this entity and all child entities; The URI must conform to the pattern {algorithm}:{hex value}, for example: \begin{verbatim}md5:4be91751541fd804e7207663a0822f56.\end{verbatim} The accumulated checksum of an entity is computed by accumulating the byte representation of entity checksums in the following order: (1) the metaChecksum of the current entity, (2) the accMetaChecksum of all child entities accumulated in order of the child's Entity.id.
    this is the checksum of the artifact data; the URI must conform to the pattern {algorithm}:{hex value}, for example: \begin{verbatim} md5:4be91751541fd804e7207663a0822f56 \end{verbatim}.
    This specifies the size of the stored artifact; for files, this is the file size.
    Thsi is a set of groups that are allowed to access the content of this artifact.
    This timestamp after which content for the artifact is public.
    This field specifies the format of the resolved artifact: should be a MIME-type.
    This is an identifier to refer to an ArtifactDescription entity.
    The id is a globally unique identifier (primary key) for an instance.
    The timestamp of last modification of this entity tracks changes in metadata and supports incremental operations.
    The maximum last modification timestamp of this entity and all child entities is used to support incremental synchronization (of Observation instances).
    This checksum of the metadata in this entity signals a change in the metadata of an instance and supports validation (e.g.
    This identifier is used to identify the tools used to produce the metadata.
    the relationship of this Artifact to the parent Plane (DataLink semantics).
    This field indicates whether this artifact is treated as data or metadata when determining access permission.
    This identifier can be used to interact with an associated data management system.
    This is a short string of hexadecimal digits generated from the uri to support operational use cases (mainly: dividing workload to perform validation in parallel).
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    create a Artifact from this builder.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • uri

      public String uri
      This identifier can be used to interact with an associated data management system. Existing usage: this is an internal identifier that an IVOA DataLink service can convert into a usable link to the data. TODO: There is an informal style used to make sure that these identifiers are globally unique and avoid collisions...
    • uriBucket

      public String uriBucket
      This is a short string of hexadecimal digits generated from the uri to support operational use cases (mainly: dividing workload to perform validation in parallel). The value is the first three characters of the hexadecimal representation of SHA-1 of the UTF-8 encoded bytes of the Observation.uri value. (NEW in CAOM-2.5).
    • productType

      public String productType
      the relationship of this Artifact to the parent Plane (DataLink semantics).
    • releaseType

      public ReleaseType releaseType
      This field indicates whether this artifact is treated as data or metadata when determining access permission. Existing usage: some collections have small previews (productType=thumbnail) that are considered metadata and are thus viewable by all users.
    • contentType

      public String contentType
      This field specifies the format of the resolved artifact: should be a MIME-type.
    • contentLength

      public Integer contentLength
      This specifies the size of the stored artifact; for files, this is the file size.
    • contentChecksum

      public String contentChecksum
      this is the checksum of the artifact data; the URI must conform to the pattern {algorithm}:{hex value}, for example: \begin{verbatim} md5:4be91751541fd804e7207663a0822f56 \end{verbatim}.
    • contentRelease

      public Date contentRelease
      This timestamp after which content for the artifact is public. If set, this value overrides the permission implied by the releaseType and Plane release dates. Existing usage: MAST?.
    • contentReadGroups

      public List<String> contentReadGroups
      Thsi is a set of groups that are allowed to access the content of this artifact. If set, thisd overrides the permission implied by the releaseType and PLane release groups. Existing usage: unknown.
    • descriptionID

      public String descriptionID
      This is an identifier to refer to an ArtifactDescription entity. (new in CAOM-2.5) Use case: provide standard descriptions for links in a DataLink response.
    • maxLastModified

      public Date maxLastModified
      The maximum last modification timestamp of this entity and all child entities is used to support incremental synchronization (of Observation instances). As with the instance lastModified timestamp above, this timestamp is intended to be set and/or updated when the entity is stored (e.g. in a database).
    • accMetaChecksum

      public String accMetaChecksum
      accumulated checksum of the metadata of this entity and all child entities; The URI must conform to the pattern {algorithm}:{hex value}, for example: \begin{verbatim}md5:4be91751541fd804e7207663a0822f56.\end{verbatim} The accumulated checksum of an entity is computed by accumulating the byte representation of entity checksums in the following order: (1) the metaChecksum of the current entity, (2) the accMetaChecksum of all child entities accumulated in order of the child's Entity.id. For an entity with no children, the accMetaChecksum is derived only from the metaChecksum but it is not equal to it because it is a checksum of that checksum and not a checksum of the same metadata directly.
    • id

      public String id
      The id is a globally unique identifier (primary key) for an instance.
    • lastModified

      public Date lastModified
      The timestamp of last modification of this entity tracks changes in metadata and supports incremental operations. The timestamp is intended to be set and/or updated when the entity is stored (e.g. in a database).
    • metaChecksum

      public String metaChecksum
      This checksum of the metadata in this entity signals a change in the metadata of an instance and supports validation (e.g. to compare metadata before and after serialisation or persistence). A change in the metaChecksum can also be used to optimise operations like updating a row in the database only when the metaChecksum changed. A change in metaChecksum normally triggers a change in the lastModified timestamp. The URI must conform to the pattern {algorithm}:{hex value}, for example: \begin{verbatim}md5:4be91751541fd804e7207663a0822f56.\end{verbatim} The checksum of an entity is computed by accumulating byte representation of individual metadata values in the following order: (1) Entity.id for entities, (2) Entity.metaProducer, (3) state fields in alphabetic order (foo.a comes before foo.b) and using depth-first recursion (foo.abc.x comes before foo.def). The lastModified timestamp is not included in the metaChecksum calculation. Null values are ignored so that the addition of new fields in future versions will not change/invalidate existing checksums. Non-null values are converted to bytes as follows: \begin{itemize} \item string: UTF-8 encoded bytes \item URI: UTF-8 encoded bytes of the string representation \item VocabularyTerm: UTF-8 encoded bytes of the term (do not include the namespace) \item enumeration: the literal value converted to bytes \item float: IEEE754 single (4 bytes) \item double: IEEE754 double (8 bytes) \item boolean: convert to single byte, false=0, true=1 (1 byte) \item byte: as-is (1 byte) \item short: (2 bytes, network byte order == big endian)) \item integer: (4 bytes, network byte order == big endian) \item long: (8 bytes, network byte order == big endian) \item date: treat as a long (milliseconds since 1970-01-01 00:00:00 UTC) \end{itemize} TODO: truncatedDates=false, digestFieldNames=true, digestFieldnamesLowerCase=true TODO: external data model components: recursion or specify conversion above (interval, point, shape, multishape) .
    • metaProducer

      public String metaProducer
      This identifier is used to identify the tools used to produce the metadata. It also implicitly applies to child entities with null metaProducer. The form of the URI is not specified; implementations are free to use this to track metadata curation. For example, a pattern like {organisation}:{software name}-{version} is useful to support a variety of operational uses: query for metadata created by a version with a known bug or query for metadata created by an older version of the software and perform updates.
  • Constructor Details

    • ArtifactBuilder

      public ArtifactBuilder()
  • Method Details

    • create

      public Artifact create()
      create a Artifact from this builder.
      Returns:
      an object initialized from the builder.