001// Generated from: ../../../../../../../../oscal/src/metaschema/oscal_mapping-common_metaschema.xml
002// Do not edit - changes will be lost when regenerated.
003package dev.metaschema.oscal.lib.model;
004
005import dev.metaschema.core.datatype.adapter.StringAdapter;
006import dev.metaschema.core.datatype.adapter.UuidAdapter;
007import dev.metaschema.core.datatype.markup.MarkupMultiline;
008import dev.metaschema.core.datatype.markup.MarkupMultilineAdapter;
009import dev.metaschema.core.model.IBoundObject;
010import dev.metaschema.core.model.IMetaschemaData;
011import dev.metaschema.core.model.JsonGroupAsBehavior;
012import dev.metaschema.core.model.constraint.IConstraint;
013import dev.metaschema.core.util.ObjectUtils;
014import dev.metaschema.databind.model.annotations.AllowedValue;
015import dev.metaschema.databind.model.annotations.AllowedValues;
016import dev.metaschema.databind.model.annotations.BoundAssembly;
017import dev.metaschema.databind.model.annotations.BoundField;
018import dev.metaschema.databind.model.annotations.BoundFlag;
019import dev.metaschema.databind.model.annotations.GroupAs;
020import dev.metaschema.databind.model.annotations.MetaschemaAssembly;
021import dev.metaschema.databind.model.annotations.ValueConstraints;
022import edu.umd.cs.findbugs.annotations.NonNull;
023import edu.umd.cs.findbugs.annotations.Nullable;
024import java.util.LinkedList;
025import java.util.List;
026import java.util.UUID;
027import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
028import org.apache.commons.lang3.builder.ToStringStyle;
029
030/**
031 * A mapping between two target resources.
032 */
033@MetaschemaAssembly(
034    formalName = "Control Mapping",
035    description = "A mapping between two target resources.",
036    name = "mapping",
037    moduleClass = OscalMappingCommonModule.class
038)
039public class Mapping implements IBoundObject {
040  private final IMetaschemaData __metaschemaData;
041
042  /**
043   * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference this mapping definition elsewhere in this or other OSCAL instances. The locally defined <em>UUID</em> of the <code> mapping</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same mapping across revisions of the document.
044   */
045  @BoundFlag(
046      formalName = "Mapping Universally Unique Identifier",
047      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 mapping definition elsewhere in this or other OSCAL instances. The locally defined *UUID* of the ` mapping` 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 mapping across revisions of the document.",
048      name = "uuid",
049      required = true,
050      typeAdapter = UuidAdapter.class
051  )
052  private UUID _uuid;
053
054  /**
055   * The method used to complete the overall mapping.
056   */
057  @BoundFlag(
058      formalName = "Method",
059      description = "The method used to complete the overall mapping.",
060      name = "method",
061      typeAdapter = StringAdapter.class,
062      valueConstraints = @ValueConstraints(allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, values = {@AllowedValue(value = "human", description = "Human"), @AllowedValue(value = "automation", description = "Automation"), @AllowedValue(value = "hybrid", description = "Hybrid")}))
063  )
064  private String _method;
065
066  /**
067   * The method used for relating controls within the mapping. The supported methods are aligned with the <a href="https://doi.org/10.6028/NIST.IR.8477">NIST Interagency Report (IR) 8477</a>, Section 4.3 Set Theory Relationship Mapping.
068   */
069  @BoundFlag(
070      formalName = "Matching",
071      description = "The method used for relating controls within the mapping. The supported methods are aligned with the [NIST Interagency Report (IR) 8477](https://doi.org/10.6028/NIST.IR.8477), Section 4.3 Set Theory Relationship Mapping.",
072      name = "matching-rationale",
073      typeAdapter = StringAdapter.class,
074      valueConstraints = @ValueConstraints(allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, values = {@AllowedValue(value = "syntactic", description = "Syntactic: How similar is the *wording* that expresses the two concepts. This is a word-for-word analysis of the relationship, not an interpretation of the language."), @AllowedValue(value = "semantic", description = "Semantic: How similar are the *meanings* of the two concepts? This involves some interpretation of each concept’s language."), @AllowedValue(value = "functional", description = "Functional: How similar are the *results* of executing the two concepts? This involves understanding what will happen if the two concepts are implemented, performed, or otherwise executed.")}))
075  )
076  private String _matchingRationale;
077
078  /**
079   * The current status of this mapping document.
080   */
081  @BoundFlag(
082      formalName = "Status",
083      description = "The current status of this mapping document.",
084      name = "status",
085      typeAdapter = StringAdapter.class,
086      valueConstraints = @ValueConstraints(allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, values = {@AllowedValue(value = "complete", description = "Complete"), @AllowedValue(value = "not-complete", description = "Not Complete"), @AllowedValue(value = "draft", description = "Draft"), @AllowedValue(value = "deprecated", description = "Deprecated"), @AllowedValue(value = "superseded", description = "Superseded")}))
087  )
088  private String _status;
089
090  /**
091   * A reference to a resource that is either the source or the target of a mapping.
092   */
093  @BoundAssembly(
094      formalName = "Mapped Resource Reference",
095      description = "A reference to a resource that is either the source or the target of a mapping.",
096      useName = "source-resource",
097      minOccurs = 1
098  )
099  private MappingResourceReference _sourceResource;
100
101  /**
102   * A reference to a resource that is either the source or the target of a mapping.
103   */
104  @BoundAssembly(
105      formalName = "Mapped Resource Reference",
106      description = "A reference to a resource that is either the source or the target of a mapping.",
107      useName = "target-resource",
108      minOccurs = 1
109  )
110  private MappingResourceReference _targetResource;
111
112  /**
113   * A relationship-based mapping between a source and target set consisting of members (i.e., controls, control statements) from the respective source and target.
114   */
115  @BoundAssembly(
116      formalName = "Mapping Entry",
117      description = "A relationship-based mapping between a source and target set consisting of members (i.e., controls, control statements) from the respective source and target.",
118      useName = "map",
119      minOccurs = 1,
120      maxOccurs = -1,
121      groupAs = @GroupAs(name = "maps", inJson = JsonGroupAsBehavior.LIST)
122  )
123  private List<MappingEntry> _maps;
124
125  /**
126   * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.
127   */
128  @BoundAssembly(
129      formalName = "Property",
130      description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
131      useName = "prop",
132      maxOccurs = -1,
133      groupAs = @GroupAs(name = "props", inJson = JsonGroupAsBehavior.LIST)
134  )
135  private List<Property> _props;
136
137  /**
138   * A reference to a local or remote resource, that has a specific relation to the containing object.
139   */
140  @BoundAssembly(
141      formalName = "Link",
142      description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
143      useName = "link",
144      maxOccurs = -1,
145      groupAs = @GroupAs(name = "links", inJson = JsonGroupAsBehavior.LIST)
146  )
147  private List<Link> _links;
148
149  /**
150   * Additional commentary about the containing object.
151   */
152  @BoundField(
153      formalName = "Remarks",
154      description = "Additional commentary about the containing object.",
155      useName = "remarks",
156      typeAdapter = MarkupMultilineAdapter.class
157  )
158  private MarkupMultiline _remarks;
159
160  /**
161   * Description of the context and intended use of the mapping set.
162   */
163  @BoundField(
164      formalName = "Mapping Description",
165      description = "Description of the context and intended use of the mapping set.",
166      useName = "mapping-description",
167      typeAdapter = MarkupMultilineAdapter.class
168  )
169  private MarkupMultiline _mappingDescription;
170
171  /**
172   * A <em>by-id</em> collection of all controls that were not mapped at all in this <code> mapping-collection</code>. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the <code> relationship-gal</code>.
173   */
174  @BoundAssembly(
175      formalName = "Gap Summary",
176      description = "A *by-id* collection of all controls that were not mapped at all in this ` mapping-collection`. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the ` relationship-gal`.",
177      useName = "source-gap-summary"
178  )
179  private GapSummary _sourceGapSummary;
180
181  /**
182   * A <em>by-id</em> collection of all controls that were not mapped at all in this <code> mapping-collection</code>. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the <code> relationship-gal</code>.
183   */
184  @BoundAssembly(
185      formalName = "Gap Summary",
186      description = "A *by-id* collection of all controls that were not mapped at all in this ` mapping-collection`. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the ` relationship-gal`.",
187      useName = "target-gap-summary"
188  )
189  private GapSummary _targetGapSummary;
190
191  /**
192   * This records either a string category or a decimal value from 0-1 representing a percentage. Both of these values describe an estimation of the author's confidence that this mapping is correct and accurate.
193   */
194  @BoundField(
195      formalName = "Confidence Score",
196      description = "This records either a string category or a decimal value from 0-1 representing a percentage. Both of these values describe an estimation of the author's confidence that this mapping is correct and accurate.",
197      useName = "confidence-score"
198  )
199  private ConfidenceScore _confidenceScore;
200
201  /**
202   * A decimal value from 0-1, representing the percentage coverage of the targets by the sources.
203   */
204  @BoundField(
205      formalName = "Coverage",
206      description = "A decimal value from 0-1, representing the percentage coverage of the targets by the sources.",
207      useName = "coverage"
208  )
209  private Coverage _coverage;
210
211  /**
212   * Constructs a new {@code dev.metaschema.oscal.lib.model.Mapping} instance with no metadata.
213   */
214  public Mapping() {
215    this(null);
216  }
217
218  /**
219   * Constructs a new {@code dev.metaschema.oscal.lib.model.Mapping} instance with the specified metadata.
220   *
221   * @param data
222   *           the metaschema data, or {@code null} if none
223   */
224  public Mapping(IMetaschemaData data) {
225    this.__metaschemaData = data;
226  }
227
228  @Override
229  public IMetaschemaData getMetaschemaData() {
230    return __metaschemaData;
231  }
232
233  /**
234   * Get the "{@literal Mapping Universally Unique Identifier}".
235   *
236   * <p>
237   * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference this mapping definition elsewhere in this or other OSCAL instances. The locally defined <em>UUID</em> of the <code> mapping</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same mapping across revisions of the document.
238   *
239   * @return the uuid value
240   */
241  @NonNull
242  public UUID getUuid() {
243    return _uuid;
244  }
245
246  /**
247   * Set the "{@literal Mapping Universally Unique Identifier}".
248   *
249   * <p>
250   * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a>, <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#cross-instance">cross-instance</a> scope that can be used to reference this mapping definition elsewhere in this or other OSCAL instances. The locally defined <em>UUID</em> of the <code> mapping</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#consistency">per-subject</a>, which means it should be consistently used to identify the same mapping across revisions of the document.
251   *
252   * @param value
253   *           the uuid value to set
254   */
255  public void setUuid(@NonNull UUID value) {
256    _uuid = value;
257  }
258
259  /**
260   * Get the "{@literal Method}".
261   *
262   * <p>
263   * The method used to complete the overall mapping.
264   *
265   * @return the method value, or {@code null} if not set
266   */
267  @Nullable
268  public String getMethod() {
269    return _method;
270  }
271
272  /**
273   * Set the "{@literal Method}".
274   *
275   * <p>
276   * The method used to complete the overall mapping.
277   *
278   * @param value
279   *           the method value to set, or {@code null} to clear
280   */
281  public void setMethod(@Nullable String value) {
282    _method = value;
283  }
284
285  /**
286   * Get the "{@literal Matching}".
287   *
288   * <p>
289   * The method used for relating controls within the mapping. The supported methods are aligned with the <a href="https://doi.org/10.6028/NIST.IR.8477">NIST Interagency Report (IR) 8477</a>, Section 4.3 Set Theory Relationship Mapping.
290   *
291   * @return the matching-rationale value, or {@code null} if not set
292   */
293  @Nullable
294  public String getMatchingRationale() {
295    return _matchingRationale;
296  }
297
298  /**
299   * Set the "{@literal Matching}".
300   *
301   * <p>
302   * The method used for relating controls within the mapping. The supported methods are aligned with the <a href="https://doi.org/10.6028/NIST.IR.8477">NIST Interagency Report (IR) 8477</a>, Section 4.3 Set Theory Relationship Mapping.
303   *
304   * @param value
305   *           the matching-rationale value to set, or {@code null} to clear
306   */
307  public void setMatchingRationale(@Nullable String value) {
308    _matchingRationale = value;
309  }
310
311  /**
312   * Get the "{@literal Status}".
313   *
314   * <p>
315   * The current status of this mapping document.
316   *
317   * @return the status value, or {@code null} if not set
318   */
319  @Nullable
320  public String getStatus() {
321    return _status;
322  }
323
324  /**
325   * Set the "{@literal Status}".
326   *
327   * <p>
328   * The current status of this mapping document.
329   *
330   * @param value
331   *           the status value to set, or {@code null} to clear
332   */
333  public void setStatus(@Nullable String value) {
334    _status = value;
335  }
336
337  /**
338   * Get the "{@literal Mapped Resource Reference}".
339   *
340   * <p>
341   * A reference to a resource that is either the source or the target of a mapping.
342   *
343   * @return the source-resource value
344   */
345  @NonNull
346  public MappingResourceReference getSourceResource() {
347    return _sourceResource;
348  }
349
350  /**
351   * Set the "{@literal Mapped Resource Reference}".
352   *
353   * <p>
354   * A reference to a resource that is either the source or the target of a mapping.
355   *
356   * @param value
357   *           the source-resource value to set
358   */
359  public void setSourceResource(@NonNull MappingResourceReference value) {
360    _sourceResource = value;
361  }
362
363  /**
364   * Get the "{@literal Mapped Resource Reference}".
365   *
366   * <p>
367   * A reference to a resource that is either the source or the target of a mapping.
368   *
369   * @return the target-resource value
370   */
371  @NonNull
372  public MappingResourceReference getTargetResource() {
373    return _targetResource;
374  }
375
376  /**
377   * Set the "{@literal Mapped Resource Reference}".
378   *
379   * <p>
380   * A reference to a resource that is either the source or the target of a mapping.
381   *
382   * @param value
383   *           the target-resource value to set
384   */
385  public void setTargetResource(@NonNull MappingResourceReference value) {
386    _targetResource = value;
387  }
388
389  /**
390   * Get the "{@literal Mapping Entry}".
391   *
392   * <p>
393   * A relationship-based mapping between a source and target set consisting of members (i.e., controls, control statements) from the respective source and target.
394   *
395   * @return the map value
396   */
397  @NonNull
398  public List<MappingEntry> getMaps() {
399    if (_maps == null) {
400      _maps = new LinkedList<>();
401    }
402    return ObjectUtils.notNull(_maps);
403  }
404
405  /**
406   * Set the "{@literal Mapping Entry}".
407   *
408   * <p>
409   * A relationship-based mapping between a source and target set consisting of members (i.e., controls, control statements) from the respective source and target.
410   *
411   * @param value
412   *           the map value to set
413   */
414  public void setMaps(@NonNull List<MappingEntry> value) {
415    _maps = value;
416  }
417
418  /**
419   * Add a new {@link MappingEntry} item to the underlying collection.
420   * @param item the item to add
421   * @return {@code true}
422   */
423  public boolean addMap(MappingEntry item) {
424    MappingEntry value = ObjectUtils.requireNonNull(item,"item cannot be null");
425    if (_maps == null) {
426      _maps = new LinkedList<>();
427    }
428    return _maps.add(value);
429  }
430
431  /**
432   * Remove the first matching {@link MappingEntry} item from the underlying collection.
433   * @param item the item to remove
434   * @return {@code true} if the item was removed or {@code false} otherwise
435   */
436  public boolean removeMap(MappingEntry item) {
437    MappingEntry value = ObjectUtils.requireNonNull(item,"item cannot be null");
438    return _maps != null && _maps.remove(value);
439  }
440
441  /**
442   * Get the "{@literal Property}".
443   *
444   * <p>
445   * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.
446   *
447   * @return the prop value
448   */
449  @NonNull
450  public List<Property> getProps() {
451    if (_props == null) {
452      _props = new LinkedList<>();
453    }
454    return ObjectUtils.notNull(_props);
455  }
456
457  /**
458   * Set the "{@literal Property}".
459   *
460   * <p>
461   * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.
462   *
463   * @param value
464   *           the prop value to set
465   */
466  public void setProps(@NonNull List<Property> value) {
467    _props = value;
468  }
469
470  /**
471   * Add a new {@link Property} item to the underlying collection.
472   * @param item the item to add
473   * @return {@code true}
474   */
475  public boolean addProp(Property item) {
476    Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
477    if (_props == null) {
478      _props = new LinkedList<>();
479    }
480    return _props.add(value);
481  }
482
483  /**
484   * Remove the first matching {@link Property} item from the underlying collection.
485   * @param item the item to remove
486   * @return {@code true} if the item was removed or {@code false} otherwise
487   */
488  public boolean removeProp(Property item) {
489    Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
490    return _props != null && _props.remove(value);
491  }
492
493  /**
494   * Get the "{@literal Link}".
495   *
496   * <p>
497   * A reference to a local or remote resource, that has a specific relation to the containing object.
498   *
499   * @return the link value
500   */
501  @NonNull
502  public List<Link> getLinks() {
503    if (_links == null) {
504      _links = new LinkedList<>();
505    }
506    return ObjectUtils.notNull(_links);
507  }
508
509  /**
510   * Set the "{@literal Link}".
511   *
512   * <p>
513   * A reference to a local or remote resource, that has a specific relation to the containing object.
514   *
515   * @param value
516   *           the link value to set
517   */
518  public void setLinks(@NonNull List<Link> value) {
519    _links = value;
520  }
521
522  /**
523   * Add a new {@link Link} item to the underlying collection.
524   * @param item the item to add
525   * @return {@code true}
526   */
527  public boolean addLink(Link item) {
528    Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
529    if (_links == null) {
530      _links = new LinkedList<>();
531    }
532    return _links.add(value);
533  }
534
535  /**
536   * Remove the first matching {@link Link} item from the underlying collection.
537   * @param item the item to remove
538   * @return {@code true} if the item was removed or {@code false} otherwise
539   */
540  public boolean removeLink(Link item) {
541    Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
542    return _links != null && _links.remove(value);
543  }
544
545  /**
546   * Get the "{@literal Remarks}".
547   *
548   * <p>
549   * Additional commentary about the containing object.
550   *
551   * @return the remarks value, or {@code null} if not set
552   */
553  @Nullable
554  public MarkupMultiline getRemarks() {
555    return _remarks;
556  }
557
558  /**
559   * Set the "{@literal Remarks}".
560   *
561   * <p>
562   * Additional commentary about the containing object.
563   *
564   * @param value
565   *           the remarks value to set, or {@code null} to clear
566   */
567  public void setRemarks(@Nullable MarkupMultiline value) {
568    _remarks = value;
569  }
570
571  /**
572   * Get the "{@literal Mapping Description}".
573   *
574   * <p>
575   * Description of the context and intended use of the mapping set.
576   *
577   * @return the mapping-description value, or {@code null} if not set
578   */
579  @Nullable
580  public MarkupMultiline getMappingDescription() {
581    return _mappingDescription;
582  }
583
584  /**
585   * Set the "{@literal Mapping Description}".
586   *
587   * <p>
588   * Description of the context and intended use of the mapping set.
589   *
590   * @param value
591   *           the mapping-description value to set, or {@code null} to clear
592   */
593  public void setMappingDescription(@Nullable MarkupMultiline value) {
594    _mappingDescription = value;
595  }
596
597  /**
598   * Get the "{@literal Gap Summary}".
599   *
600   * <p>
601   * A <em>by-id</em> collection of all controls that were not mapped at all in this <code> mapping-collection</code>. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the <code> relationship-gal</code>.
602   *
603   * @return the source-gap-summary value, or {@code null} if not set
604   */
605  @Nullable
606  public GapSummary getSourceGapSummary() {
607    return _sourceGapSummary;
608  }
609
610  /**
611   * Set the "{@literal Gap Summary}".
612   *
613   * <p>
614   * A <em>by-id</em> collection of all controls that were not mapped at all in this <code> mapping-collection</code>. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the <code> relationship-gal</code>.
615   *
616   * @param value
617   *           the source-gap-summary value to set, or {@code null} to clear
618   */
619  public void setSourceGapSummary(@Nullable GapSummary value) {
620    _sourceGapSummary = value;
621  }
622
623  /**
624   * Get the "{@literal Gap Summary}".
625   *
626   * <p>
627   * A <em>by-id</em> collection of all controls that were not mapped at all in this <code> mapping-collection</code>. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the <code> relationship-gal</code>.
628   *
629   * @return the target-gap-summary value, or {@code null} if not set
630   */
631  @Nullable
632  public GapSummary getTargetGapSummary() {
633    return _targetGapSummary;
634  }
635
636  /**
637   * Set the "{@literal Gap Summary}".
638   *
639   * <p>
640   * A <em>by-id</em> collection of all controls that were not mapped at all in this <code> mapping-collection</code>. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the <code> relationship-gal</code>.
641   *
642   * @param value
643   *           the target-gap-summary value to set, or {@code null} to clear
644   */
645  public void setTargetGapSummary(@Nullable GapSummary value) {
646    _targetGapSummary = value;
647  }
648
649  /**
650   * Get the "{@literal Confidence Score}".
651   *
652   * <p>
653   * This records either a string category or a decimal value from 0-1 representing a percentage. Both of these values describe an estimation of the author's confidence that this mapping is correct and accurate.
654   *
655   * @return the confidence-score value, or {@code null} if not set
656   */
657  @Nullable
658  public ConfidenceScore getConfidenceScore() {
659    return _confidenceScore;
660  }
661
662  /**
663   * Set the "{@literal Confidence Score}".
664   *
665   * <p>
666   * This records either a string category or a decimal value from 0-1 representing a percentage. Both of these values describe an estimation of the author's confidence that this mapping is correct and accurate.
667   *
668   * @param value
669   *           the confidence-score value to set, or {@code null} to clear
670   */
671  public void setConfidenceScore(@Nullable ConfidenceScore value) {
672    _confidenceScore = value;
673  }
674
675  /**
676   * Get the "{@literal Coverage}".
677   *
678   * <p>
679   * A decimal value from 0-1, representing the percentage coverage of the targets by the sources.
680   *
681   * @return the coverage value, or {@code null} if not set
682   */
683  @Nullable
684  public Coverage getCoverage() {
685    return _coverage;
686  }
687
688  /**
689   * Set the "{@literal Coverage}".
690   *
691   * <p>
692   * A decimal value from 0-1, representing the percentage coverage of the targets by the sources.
693   *
694   * @param value
695   *           the coverage value to set, or {@code null} to clear
696   */
697  public void setCoverage(@Nullable Coverage value) {
698    _coverage = value;
699  }
700
701  @Override
702  public String toString() {
703    return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString());
704  }
705}