View Javadoc
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   * Indicates the degree to which the a given control is implemented.
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  }