View Javadoc
1   package gov.nist.secauto.oscal.lib.model;
2   
3   import gov.nist.secauto.metaschema.binding.model.annotations.AssemblyConstraints;
4   import gov.nist.secauto.metaschema.binding.model.annotations.BoundAssembly;
5   import gov.nist.secauto.metaschema.binding.model.annotations.BoundFlag;
6   import gov.nist.secauto.metaschema.binding.model.annotations.Index;
7   import gov.nist.secauto.metaschema.binding.model.annotations.KeyField;
8   import gov.nist.secauto.metaschema.binding.model.annotations.MetaschemaAssembly;
9   import gov.nist.secauto.metaschema.model.common.constraint.IConstraint;
10  import gov.nist.secauto.metaschema.model.common.datatype.adapter.UuidAdapter;
11  import java.lang.Override;
12  import java.lang.String;
13  import java.util.UUID;
14  import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle;
15  import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
16  
17  /**
18   * A system security plan, such as those described in NIST SP 800-18.
19   */
20  @MetaschemaAssembly(
21      formalName = "System Security Plan (SSP)",
22      description = "A system security plan, such as those described in NIST SP 800-18.",
23      name = "system-security-plan",
24      metaschema = OscalSspMetaschema.class,
25      rootName = "system-security-plan"
26  )
27  @AssemblyConstraints(
28      index = @Index(level = IConstraint.Level.ERROR, target = "control-implementation/implemented-requirement//by-component|doc(system-implementation/leveraged-authorization/link[@rel='system-security-plan']/@href)/system-security-plan/control-implementation/implemented-requirement//by-component", name = "by-component-uuid", keyFields = @KeyField(target = "@uuid"))
29  )
30  public class SystemSecurityPlan extends AbstractOscalInstance {
31    @BoundFlag(
32        formalName = "System Security Plan Universally Unique Identifier",
33        description = "A [machine-oriented](https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented), [globally unique](https://pages.nist.gov/OSCAL/concepts/identifier-use/#globally-unique) identifier with [cross-instance](https://pages.nist.gov/OSCAL/concepts/identifier-use/#cross-instance) scope that can be used to reference this system security plan (SSP) elsewhere in [this or other OSCAL instances](https://pages.nist.gov/OSCAL/concepts/identifier-use/#ssp-identifiers). The locally defined *UUID* of the `SSP` can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance).This UUID should be assigned [per-subject](https://pages.nist.gov/OSCAL/concepts/identifier-use/#consistency), which means it should be consistently used to identify the same subject across revisions of the document.",
34        useName = "uuid",
35        required = true,
36        typeAdapter = UuidAdapter.class
37    )
38    private UUID _uuid;
39  
40    @BoundAssembly(
41        formalName = "Document Metadata",
42        description = "Provides information about the containing document, and defines concepts that are shared across the document.",
43        useName = "metadata",
44        minOccurs = 1
45    )
46    private Metadata _metadata;
47  
48    @BoundAssembly(
49        formalName = "Import Profile",
50        description = "Used to import the OSCAL profile representing the system's control baseline.",
51        useName = "import-profile",
52        minOccurs = 1
53    )
54    private ImportProfile _importProfile;
55  
56    @BoundAssembly(
57        formalName = "System Characteristics",
58        description = "Contains the characteristics of the system, such as its name, purpose, and security impact level.",
59        useName = "system-characteristics",
60        minOccurs = 1
61    )
62    private SystemCharacteristics _systemCharacteristics;
63  
64    @BoundAssembly(
65        formalName = "System Implementation",
66        description = "Provides information as to how the system is implemented.",
67        useName = "system-implementation",
68        minOccurs = 1
69    )
70    private SystemImplementation _systemImplementation;
71  
72    @BoundAssembly(
73        formalName = "Control Implementation",
74        description = "Describes how the system satisfies a set of controls.",
75        useName = "control-implementation",
76        minOccurs = 1
77    )
78    private ControlImplementation _controlImplementation;
79  
80    @BoundAssembly(
81        formalName = "Back matter",
82        description = "A collection of resources that may be referenced from within the OSCAL document instance.",
83        useName = "back-matter"
84    )
85    private BackMatter _backMatter;
86  
87    public SystemSecurityPlan() {
88    }
89  
90    public UUID getUuid() {
91      return _uuid;
92    }
93  
94    public void setUuid(UUID value) {
95      _uuid = value;
96    }
97  
98    public Metadata getMetadata() {
99      return _metadata;
100   }
101 
102   public void setMetadata(Metadata value) {
103     _metadata = value;
104   }
105 
106   public ImportProfile getImportProfile() {
107     return _importProfile;
108   }
109 
110   public void setImportProfile(ImportProfile value) {
111     _importProfile = value;
112   }
113 
114   public SystemCharacteristics getSystemCharacteristics() {
115     return _systemCharacteristics;
116   }
117 
118   public void setSystemCharacteristics(SystemCharacteristics value) {
119     _systemCharacteristics = value;
120   }
121 
122   public SystemImplementation getSystemImplementation() {
123     return _systemImplementation;
124   }
125 
126   public void setSystemImplementation(SystemImplementation value) {
127     _systemImplementation = value;
128   }
129 
130   public ControlImplementation getControlImplementation() {
131     return _controlImplementation;
132   }
133 
134   public void setControlImplementation(ControlImplementation value) {
135     _controlImplementation = value;
136   }
137 
138   public BackMatter getBackMatter() {
139     return _backMatter;
140   }
141 
142   public void setBackMatter(BackMatter value) {
143     _backMatter = value;
144   }
145 
146   @Override
147   public String toString() {
148     return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
149   }
150 }