Class Catalog

All Implemented Interfaces:
dev.metaschema.core.model.IBoundObject, ICatalog, IControlContainer, IGroupContainer, IOscalInstance

@MetaschemaAssembly(formalName="Catalog", description="A structured, [organized collection](https://pages.nist.gov/OSCAL/concepts/terminology/#catalog) of control information.", name="catalog", moduleClass=OscalCatalogModule.class, rootName="catalog", remarks="Catalogs may use one or more `group` objects to subdivide the control contents of a catalog.", valueConstraints=@AllowedValues(id="oscal-catalog-metadata-prop-name",level=ERROR,target="metadata/prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values={@AllowedValue(value="resolution-tool",description="The tool used to produce a resolved profile."),@AllowedValue(value="source-profile-uuid",description="The document-level `uuid` of the source profile from which the catalog was produced by [profile resolution](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/).")}) @AllowedValues(id="oscal-catalog-metadata-link-rel-type",level=ERROR,target="metadata/link/@rel",allowOthers=true,values={@AllowedValue(value="source-profile",description="The profile from which the catalog was produced by [profile resolution](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/)."),@AllowedValue(value="source-profile-uuid",description="The document-level `uuid` of the profile from which the catalog was produced by [profile resolution](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/).")}), modelConstraints=@AssemblyConstraints(index={@Index(id="oscal-catalog-parts",level=ERROR,target="//part",name="catalog-parts",keyFields=@KeyField(target="@id")),@Index(id="oscal-catalog-props",level=ERROR,target="//prop",name="catalog-props",keyFields=@KeyField(target="@uuid")),@Index(id="oscal-catalog-groups-controls-parts",level=ERROR,target="//(control|group|part)",name="catalog-groups-controls-parts",keyFields=@KeyField(target="@id")),@Index(id="oscal-catalog-controls",level=ERROR,target="//control",name="catalog-controls",keyFields=@KeyField(target="@id")),@Index(id="oscal-catalog-params",level=ERROR,target="//param",name="catalog-params",keyFields=@KeyField(target="@id")),@Index(id="oscal-catalog-groups",level=ERROR,target="//group",name="catalog-groups",keyFields=@KeyField(target="@id")),@Index(id="oscal-catalog-index-metadata-scoped-metadata-role-id",formalName="In-Scope Role Identifiers",description="An index of role identifiers that are in-scope for the catalog model.",level=ERROR,target="metadata/role",name="index-imports-metadata-role-id",keyFields=@KeyField(target="@id")),@Index(id="oscal-catalog-index-metadata-scoped-location-uuid",level=ERROR,target="metadata/location",name="index-imports-metadata-location-uuid",keyFields=@KeyField(target="@uuid")),@Index(id="oscal-catalog-index-metadata-scoped-party-uuid",level=ERROR,target="metadata/party",name="index-imports-metadata-party-uuid",keyFields=@KeyField(target="@uuid")),@Index(id="oscal-catalog-index-metadata-scoped-party-organization-uuid",level=ERROR,target="metadata/party[@type=\'organization\']",name="index-imports-metadata-party-organization-uuid",keyFields=@KeyField(target="@uuid")),@Index(id="oscal-catalog-index-metadata-scoped-property-uuid",level=ERROR,target=".//prop[@uuid]",name="index-imports-metadata-property-uuid",keyFields=@KeyField(target="@uuid"))},unique={@IsUnique(id="oscal-unique-document-id",formalName="Unique Document Identifier",description="Ensure all document identifiers have a unique combination of @scheme and value.",level=ERROR,target="document-id",keyFields={@KeyField(target="@scheme"),@KeyField}),@IsUnique(id="oscal-unique-property-in-context-location",formalName="Unique Properties",description="Ensure all properties are unique for a given location using a unique combination of @ns, @name, @class. @group. and @value.",level=ERROR,target=".//prop",keyFields={@KeyField(target="path(..)"),@KeyField(target="@name"),@KeyField(target="@ns"),@KeyField(target="@class"),@KeyField(target="@group"),@KeyField(target="@value")}),@IsUnique(id="oscal-unique-link-in-context-location",formalName="Unique Links",description="Ensure all links are unique for a given location using a unique combination of @href, @rel, and @media-type.",level=ERROR,target=".//link",keyFields={@KeyField(target="path(..)"),@KeyField(target="@href"),@KeyField(target="@rel"),@KeyField(target="@media-type"),@KeyField(target="@resource-fragment")}),@IsUnique(id="oscal-unique-responsibility-in-context-location",formalName="Unique Responsibilities",description="Ensure all responsible-roles and responsible-parties are unique for a given location using a unique combination of @role-id and the combination of @party-uuid values.",level=ERROR,target=".//(responsible-party|responsible-role)",keyFields={@KeyField(target="path(..)"),@KeyField(target="@role-id"),@KeyField(target="@party-uuid")},remarks="Since `responsible-party` and `responsible-role` associate multiple `party-uuid` entries with a single `role-id`, each role-id must be referenced only once.")})) public class Catalog extends AbstractCatalog implements dev.metaschema.core.model.IBoundObject
A structured, organized collection of control information.
  • Constructor Details

    • Catalog

      public Catalog()
      Constructs a new dev.metaschema.oscal.lib.model.Catalog instance with no metadata.
    • Catalog

      public Catalog(dev.metaschema.core.model.IMetaschemaData data)
      Constructs a new dev.metaschema.oscal.lib.model.Catalog instance with the specified metadata.
      Parameters:
      data - the metaschema data, or null if none
  • Method Details

    • getMetaschemaData

      public dev.metaschema.core.model.IMetaschemaData getMetaschemaData()
      Specified by:
      getMetaschemaData in interface dev.metaschema.core.model.IBoundObject
    • getUuid

      @NonNull public UUID getUuid()
      Get the "Catalog Universally Unique Identifier".

      Provides a globally unique means to identify a given catalog instance.

      Specified by:
      getUuid in interface IOscalInstance
      Returns:
      the uuid value
    • setUuid

      public void setUuid(@NonNull UUID value)
      Set the "Catalog Universally Unique Identifier".

      Provides a globally unique means to identify a given catalog instance.

      Parameters:
      value - the uuid value to set
    • getMetadata

      @NonNull public Metadata getMetadata()
      Get the "Document Metadata".

      Provides information about the containing document, and defines concepts that are shared across the document.

      Specified by:
      getMetadata in interface IOscalInstance
      Returns:
      the metadata value
    • setMetadata

      public void setMetadata(@NonNull Metadata value)
      Set the "Document Metadata".

      Provides information about the containing document, and defines concepts that are shared across the document.

      Parameters:
      value - the metadata value to set
    • getParams

      @NonNull public List<Parameter> getParams()
      Get the "Parameter".

      Parameters provide a mechanism for the dynamic assignment of value(s) in a control.

      Specified by:
      getParams in interface IControlContainer
      Returns:
      the param value
    • setParams

      public void setParams(@NonNull List<Parameter> value)
      Set the "Parameter".

      Parameters provide a mechanism for the dynamic assignment of value(s) in a control.

      Parameters:
      value - the param value to set
    • addParam

      public boolean addParam(Parameter item)
      Add a new Parameter item to the underlying collection.
      Specified by:
      addParam in interface IControlContainer
      Parameters:
      item - the item to add
      Returns:
      true
    • removeParam

      public boolean removeParam(Parameter item)
      Remove the first matching Parameter item from the underlying collection.
      Specified by:
      removeParam in interface IControlContainer
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getControls

      @NonNull public List<Control> getControls()
      Get the "Control".

      A structured object representing a requirement or guideline, which when implemented will reduce an aspect of risk related to an information system and its information.

      Specified by:
      getControls in interface IControlContainer
      Returns:
      the control value
    • setControls

      public void setControls(@NonNull List<Control> value)
      Set the "Control".

      A structured object representing a requirement or guideline, which when implemented will reduce an aspect of risk related to an information system and its information.

      Parameters:
      value - the control value to set
    • addControl

      public boolean addControl(Control item)
      Add a new Control item to the underlying collection.
      Specified by:
      addControl in interface IControlContainer
      Parameters:
      item - the item to add
      Returns:
      true
    • removeControl

      public boolean removeControl(Control item)
      Remove the first matching Control item from the underlying collection.
      Specified by:
      removeControl in interface IControlContainer
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getGroups

      @NonNull public List<CatalogGroup> getGroups()
      Get the "Control Group".

      A group of controls, or of groups of controls.

      Specified by:
      getGroups in interface IGroupContainer
      Returns:
      the group value
    • setGroups

      public void setGroups(@NonNull List<CatalogGroup> value)
      Set the "Control Group".

      A group of controls, or of groups of controls.

      Parameters:
      value - the group value to set
    • addGroup

      public boolean addGroup(CatalogGroup item)
      Add a new CatalogGroup item to the underlying collection.
      Specified by:
      addGroup in interface IGroupContainer
      Parameters:
      item - the item to add
      Returns:
      true
    • removeGroup

      public boolean removeGroup(CatalogGroup item)
      Remove the first matching CatalogGroup item from the underlying collection.
      Specified by:
      removeGroup in interface IGroupContainer
      Parameters:
      item - the item to remove
      Returns:
      true if the item was removed or false otherwise
    • getBackMatter

      @Nullable public BackMatter getBackMatter()
      Get the "Back matter".

      A collection of resources that may be referenced from within the OSCAL document instance.

      Specified by:
      getBackMatter in interface IOscalInstance
      Returns:
      the back-matter value, or null if not set
    • setBackMatter

      public void setBackMatter(@Nullable BackMatter value)
      Set the "Back matter".

      A collection of resources that may be referenced from within the OSCAL document instance.

      Parameters:
      value - the back-matter value to set, or null to clear
    • toString

      public String toString()
      Overrides:
      toString in class Object