1 package gov.nist.secauto.oscal.lib.model;
2
3 import gov.nist.secauto.metaschema.binding.model.annotations.AllowedValue;
4 import gov.nist.secauto.metaschema.binding.model.annotations.AllowedValues;
5 import gov.nist.secauto.metaschema.binding.model.annotations.BoundField;
6 import gov.nist.secauto.metaschema.binding.model.annotations.BoundFieldValue;
7 import gov.nist.secauto.metaschema.binding.model.annotations.BoundFlag;
8 import gov.nist.secauto.metaschema.binding.model.annotations.MetaschemaAssembly;
9 import gov.nist.secauto.metaschema.binding.model.annotations.ValueConstraints;
10 import gov.nist.secauto.metaschema.model.common.constraint.IConstraint;
11 import gov.nist.secauto.metaschema.model.common.datatype.adapter.TokenAdapter;
12 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline;
13 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultilineAdapter;
14 import java.lang.Override;
15 import java.lang.String;
16 import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle;
17 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
18
19
20
21
22 @MetaschemaAssembly(
23 formalName = "Implementation Status",
24 description = "Indicates the degree to which the a given control is implemented.",
25 name = "implementation-status",
26 metaschema = OscalImplementationCommonMetaschema.class
27 )
28 public class ImplementationStatus {
29 @BoundFlag(
30 formalName = "Implementation State",
31 description = "Identifies the implementation status of the control or control objective.",
32 useName = "state",
33 required = true,
34 typeAdapter = TokenAdapter.class
35 )
36 @ValueConstraints(
37 allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, allowOthers = true, values = {@AllowedValue(value = "implemented", description = "The control is fully implemented."), @AllowedValue(value = "partial", description = "The control is partially implemented."), @AllowedValue(value = "planned", description = "There is a plan for implementing the control as explained in the remarks."), @AllowedValue(value = "alternative", description = "There is an alternative implementation for this control as explained in the remarks."), @AllowedValue(value = "not-applicable", description = "This control does not apply to this system as justified in the remarks.")})
38 )
39 private String _state;
40
41 @BoundField(
42 formalName = "Remarks",
43 description = "Additional commentary about the containing object.",
44 useName = "remarks"
45 )
46 @BoundFieldValue(
47 typeAdapter = MarkupMultilineAdapter.class
48 )
49 private MarkupMultiline _remarks;
50
51 public ImplementationStatus() {
52 }
53
54 public String getState() {
55 return _state;
56 }
57
58 public void setState(String value) {
59 _state = value;
60 }
61
62 public MarkupMultiline getRemarks() {
63 return _remarks;
64 }
65
66 public void setRemarks(MarkupMultiline value) {
67 _remarks = value;
68 }
69
70 @Override
71 public String toString() {
72 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
73 }
74 }