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}