001// Generated from: ../../../../../../../../oscal/src/metaschema/oscal_assessment-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.DateTimeWithTZAdapter; 006import dev.metaschema.core.datatype.adapter.PositiveIntegerAdapter; 007import dev.metaschema.core.datatype.adapter.StringAdapter; 008import dev.metaschema.core.datatype.adapter.TokenAdapter; 009import dev.metaschema.core.datatype.adapter.UuidAdapter; 010import dev.metaschema.core.datatype.markup.MarkupLine; 011import dev.metaschema.core.datatype.markup.MarkupLineAdapter; 012import dev.metaschema.core.datatype.markup.MarkupMultiline; 013import dev.metaschema.core.datatype.markup.MarkupMultilineAdapter; 014import dev.metaschema.core.model.IBoundObject; 015import dev.metaschema.core.model.IMetaschemaData; 016import dev.metaschema.core.model.JsonGroupAsBehavior; 017import dev.metaschema.core.model.constraint.IConstraint; 018import dev.metaschema.core.util.ObjectUtils; 019import dev.metaschema.databind.model.annotations.AllowedValue; 020import dev.metaschema.databind.model.annotations.AllowedValues; 021import dev.metaschema.databind.model.annotations.AssemblyConstraints; 022import dev.metaschema.databind.model.annotations.BoundAssembly; 023import dev.metaschema.databind.model.annotations.BoundChoice; 024import dev.metaschema.databind.model.annotations.BoundField; 025import dev.metaschema.databind.model.annotations.BoundFlag; 026import dev.metaschema.databind.model.annotations.GroupAs; 027import dev.metaschema.databind.model.annotations.IsUnique; 028import dev.metaschema.databind.model.annotations.KeyField; 029import dev.metaschema.databind.model.annotations.MetaschemaAssembly; 030import dev.metaschema.databind.model.annotations.ValueConstraints; 031import edu.umd.cs.findbugs.annotations.NonNull; 032import edu.umd.cs.findbugs.annotations.Nullable; 033import java.math.BigInteger; 034import java.time.ZonedDateTime; 035import java.util.LinkedList; 036import java.util.List; 037import java.util.UUID; 038import org.apache.commons.lang3.builder.ReflectionToStringBuilder; 039import org.apache.commons.lang3.builder.ToStringStyle; 040 041/** 042 * Represents a scheduled event or milestone, which may be associated with a series of assessment actions. 043 */ 044@MetaschemaAssembly( 045 formalName = "Task", 046 description = "Represents a scheduled event or milestone, which may be associated with a series of assessment actions.", 047 name = "task", 048 moduleClass = OscalAssessmentCommonModule.class 049) 050public class Task implements IBoundObject { 051 private final IMetaschemaData __metaschemaData; 052 053 /** 054 * 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 task elsewhere in <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#scope">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>task</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 subject across revisions of the document. 055 */ 056 @BoundFlag( 057 formalName = "Task Universally Unique Identifier", 058 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 task elsewhere in [this or other OSCAL instances](https://pages.nist.gov/OSCAL/concepts/identifier-use/#scope). The locally defined *UUID* of the `task` 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.", 059 name = "uuid", 060 required = true, 061 typeAdapter = UuidAdapter.class 062 ) 063 private UUID _uuid; 064 065 /** 066 * The type of task. 067 */ 068 @BoundFlag( 069 formalName = "Task Type", 070 description = "The type of task.", 071 name = "type", 072 required = true, 073 typeAdapter = TokenAdapter.class, 074 valueConstraints = @ValueConstraints(allowedValues = @AllowedValues(id = "oscal-task-values", level = IConstraint.Level.ERROR, allowOthers = true, values = {@AllowedValue(value = "milestone", description = "The task represents a planned milestone."), @AllowedValue(value = "action", description = "The task represents a specific assessment action to be performed.")})) 075 ) 076 private String _type; 077 078 /** 079 * The title for this task. 080 */ 081 @BoundField( 082 formalName = "Task Title", 083 description = "The title for this task.", 084 useName = "title", 085 minOccurs = 1, 086 typeAdapter = MarkupLineAdapter.class 087 ) 088 private MarkupLine _title; 089 090 /** 091 * A human-readable description of this task. 092 */ 093 @BoundField( 094 formalName = "Task Description", 095 description = "A human-readable description of this task.", 096 useName = "description", 097 typeAdapter = MarkupMultilineAdapter.class 098 ) 099 private MarkupMultiline _description; 100 101 /** 102 * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair. 103 */ 104 @BoundAssembly( 105 formalName = "Property", 106 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 107 useName = "prop", 108 maxOccurs = -1, 109 groupAs = @GroupAs(name = "props", inJson = JsonGroupAsBehavior.LIST) 110 ) 111 private List<Property> _props; 112 113 /** 114 * A reference to a local or remote resource, that has a specific relation to the containing object. 115 */ 116 @BoundAssembly( 117 formalName = "Link", 118 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 119 useName = "link", 120 maxOccurs = -1, 121 groupAs = @GroupAs(name = "links", inJson = JsonGroupAsBehavior.LIST) 122 ) 123 private List<Link> _links; 124 125 /** 126 * The timing under which the task is intended to occur. 127 */ 128 @BoundAssembly( 129 formalName = "Event Timing", 130 description = "The timing under which the task is intended to occur.", 131 useName = "timing" 132 ) 133 private Timing _timing; 134 135 /** 136 * Used to indicate that a task is dependent on another task. 137 */ 138 @BoundAssembly( 139 formalName = "Task Dependency", 140 description = "Used to indicate that a task is dependent on another task.", 141 useName = "dependency", 142 maxOccurs = -1, 143 groupAs = @GroupAs(name = "dependencies", inJson = JsonGroupAsBehavior.LIST) 144 ) 145 private List<Dependency> _dependencies; 146 147 /** 148 * Represents a scheduled event or milestone, which may be associated with a series of assessment actions. 149 */ 150 @BoundAssembly( 151 formalName = "Task", 152 description = "Represents a scheduled event or milestone, which may be associated with a series of assessment actions.", 153 useName = "task", 154 maxOccurs = -1, 155 groupAs = @GroupAs(name = "tasks", inJson = JsonGroupAsBehavior.LIST) 156 ) 157 private List<Task> _tasks; 158 159 /** 160 * Identifies an individual activity to be performed as part of a task. 161 */ 162 @BoundAssembly( 163 formalName = "Associated Activity", 164 description = "Identifies an individual activity to be performed as part of a task.", 165 useName = "associated-activity", 166 maxOccurs = -1, 167 groupAs = @GroupAs(name = "associated-activities", inJson = JsonGroupAsBehavior.LIST) 168 ) 169 private List<AssociatedActivity> _associatedActivities; 170 171 /** 172 * Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope. 173 */ 174 @BoundAssembly( 175 formalName = "Subject of Assessment", 176 description = "Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope.", 177 useName = "subject", 178 remarks = "The assessment subjects that the activity was performed against.", 179 maxOccurs = -1, 180 groupAs = @GroupAs(name = "subjects", inJson = JsonGroupAsBehavior.LIST) 181 ) 182 private List<AssessmentSubject> _subjects; 183 184 /** 185 * A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role. 186 */ 187 @BoundAssembly( 188 formalName = "Responsible Role", 189 description = "A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.", 190 useName = "responsible-role", 191 remarks = "Identifies the person or organization responsible for performing a specific role related to the task.", 192 maxOccurs = -1, 193 groupAs = @GroupAs(name = "responsible-roles", inJson = JsonGroupAsBehavior.LIST) 194 ) 195 private List<ResponsibleRole> _responsibleRoles; 196 197 /** 198 * Additional commentary about the containing object. 199 */ 200 @BoundField( 201 formalName = "Remarks", 202 description = "Additional commentary about the containing object.", 203 useName = "remarks", 204 typeAdapter = MarkupMultilineAdapter.class 205 ) 206 private MarkupMultiline _remarks; 207 208 /** 209 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task} instance with no metadata. 210 */ 211 public Task() { 212 this(null); 213 } 214 215 /** 216 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task} instance with the specified metadata. 217 * 218 * @param data 219 * the metaschema data, or {@code null} if none 220 */ 221 public Task(IMetaschemaData data) { 222 this.__metaschemaData = data; 223 } 224 225 @Override 226 public IMetaschemaData getMetaschemaData() { 227 return __metaschemaData; 228 } 229 230 /** 231 * Get the "{@literal Task Universally Unique Identifier}". 232 * 233 * <p> 234 * 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 task elsewhere in <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#scope">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>task</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 subject across revisions of the document. 235 * 236 * @return the uuid value 237 */ 238 @NonNull 239 public UUID getUuid() { 240 return _uuid; 241 } 242 243 /** 244 * Set the "{@literal Task Universally Unique Identifier}". 245 * 246 * <p> 247 * 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 task elsewhere in <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#scope">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>task</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 subject across revisions of the document. 248 * 249 * @param value 250 * the uuid value to set 251 */ 252 public void setUuid(@NonNull UUID value) { 253 _uuid = value; 254 } 255 256 /** 257 * Get the "{@literal Task Type}". 258 * 259 * <p> 260 * The type of task. 261 * 262 * @return the type value 263 */ 264 @NonNull 265 public String getType() { 266 return _type; 267 } 268 269 /** 270 * Set the "{@literal Task Type}". 271 * 272 * <p> 273 * The type of task. 274 * 275 * @param value 276 * the type value to set 277 */ 278 public void setType(@NonNull String value) { 279 _type = value; 280 } 281 282 /** 283 * Get the "{@literal Task Title}". 284 * 285 * <p> 286 * The title for this task. 287 * 288 * @return the title value 289 */ 290 @NonNull 291 public MarkupLine getTitle() { 292 return _title; 293 } 294 295 /** 296 * Set the "{@literal Task Title}". 297 * 298 * <p> 299 * The title for this task. 300 * 301 * @param value 302 * the title value to set 303 */ 304 public void setTitle(@NonNull MarkupLine value) { 305 _title = value; 306 } 307 308 /** 309 * Get the "{@literal Task Description}". 310 * 311 * <p> 312 * A human-readable description of this task. 313 * 314 * @return the description value, or {@code null} if not set 315 */ 316 @Nullable 317 public MarkupMultiline getDescription() { 318 return _description; 319 } 320 321 /** 322 * Set the "{@literal Task Description}". 323 * 324 * <p> 325 * A human-readable description of this task. 326 * 327 * @param value 328 * the description value to set, or {@code null} to clear 329 */ 330 public void setDescription(@Nullable MarkupMultiline value) { 331 _description = value; 332 } 333 334 /** 335 * Get the "{@literal Property}". 336 * 337 * <p> 338 * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair. 339 * 340 * @return the prop value 341 */ 342 @NonNull 343 public List<Property> getProps() { 344 if (_props == null) { 345 _props = new LinkedList<>(); 346 } 347 return ObjectUtils.notNull(_props); 348 } 349 350 /** 351 * Set the "{@literal Property}". 352 * 353 * <p> 354 * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair. 355 * 356 * @param value 357 * the prop value to set 358 */ 359 public void setProps(@NonNull List<Property> value) { 360 _props = value; 361 } 362 363 /** 364 * Add a new {@link Property} item to the underlying collection. 365 * @param item the item to add 366 * @return {@code true} 367 */ 368 public boolean addProp(Property item) { 369 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 370 if (_props == null) { 371 _props = new LinkedList<>(); 372 } 373 return _props.add(value); 374 } 375 376 /** 377 * Remove the first matching {@link Property} item from the underlying collection. 378 * @param item the item to remove 379 * @return {@code true} if the item was removed or {@code false} otherwise 380 */ 381 public boolean removeProp(Property item) { 382 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 383 return _props != null && _props.remove(value); 384 } 385 386 /** 387 * Get the "{@literal Link}". 388 * 389 * <p> 390 * A reference to a local or remote resource, that has a specific relation to the containing object. 391 * 392 * @return the link value 393 */ 394 @NonNull 395 public List<Link> getLinks() { 396 if (_links == null) { 397 _links = new LinkedList<>(); 398 } 399 return ObjectUtils.notNull(_links); 400 } 401 402 /** 403 * Set the "{@literal Link}". 404 * 405 * <p> 406 * A reference to a local or remote resource, that has a specific relation to the containing object. 407 * 408 * @param value 409 * the link value to set 410 */ 411 public void setLinks(@NonNull List<Link> value) { 412 _links = value; 413 } 414 415 /** 416 * Add a new {@link Link} item to the underlying collection. 417 * @param item the item to add 418 * @return {@code true} 419 */ 420 public boolean addLink(Link item) { 421 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 422 if (_links == null) { 423 _links = new LinkedList<>(); 424 } 425 return _links.add(value); 426 } 427 428 /** 429 * Remove the first matching {@link Link} item from the underlying collection. 430 * @param item the item to remove 431 * @return {@code true} if the item was removed or {@code false} otherwise 432 */ 433 public boolean removeLink(Link item) { 434 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 435 return _links != null && _links.remove(value); 436 } 437 438 /** 439 * Get the "{@literal Event Timing}". 440 * 441 * <p> 442 * The timing under which the task is intended to occur. 443 * 444 * @return the timing value, or {@code null} if not set 445 */ 446 @Nullable 447 public Timing getTiming() { 448 return _timing; 449 } 450 451 /** 452 * Set the "{@literal Event Timing}". 453 * 454 * <p> 455 * The timing under which the task is intended to occur. 456 * 457 * @param value 458 * the timing value to set, or {@code null} to clear 459 */ 460 public void setTiming(@Nullable Timing value) { 461 _timing = value; 462 } 463 464 /** 465 * Get the "{@literal Task Dependency}". 466 * 467 * <p> 468 * Used to indicate that a task is dependent on another task. 469 * 470 * @return the dependency value 471 */ 472 @NonNull 473 public List<Dependency> getDependencies() { 474 if (_dependencies == null) { 475 _dependencies = new LinkedList<>(); 476 } 477 return ObjectUtils.notNull(_dependencies); 478 } 479 480 /** 481 * Set the "{@literal Task Dependency}". 482 * 483 * <p> 484 * Used to indicate that a task is dependent on another task. 485 * 486 * @param value 487 * the dependency value to set 488 */ 489 public void setDependencies(@NonNull List<Dependency> value) { 490 _dependencies = value; 491 } 492 493 /** 494 * Add a new {@link Dependency} item to the underlying collection. 495 * @param item the item to add 496 * @return {@code true} 497 */ 498 public boolean addDependency(Dependency item) { 499 Dependency value = ObjectUtils.requireNonNull(item,"item cannot be null"); 500 if (_dependencies == null) { 501 _dependencies = new LinkedList<>(); 502 } 503 return _dependencies.add(value); 504 } 505 506 /** 507 * Remove the first matching {@link Dependency} item from the underlying collection. 508 * @param item the item to remove 509 * @return {@code true} if the item was removed or {@code false} otherwise 510 */ 511 public boolean removeDependency(Dependency item) { 512 Dependency value = ObjectUtils.requireNonNull(item,"item cannot be null"); 513 return _dependencies != null && _dependencies.remove(value); 514 } 515 516 /** 517 * Get the "{@literal Task}". 518 * 519 * <p> 520 * Represents a scheduled event or milestone, which may be associated with a series of assessment actions. 521 * 522 * @return the task value 523 */ 524 @NonNull 525 public List<Task> getTasks() { 526 if (_tasks == null) { 527 _tasks = new LinkedList<>(); 528 } 529 return ObjectUtils.notNull(_tasks); 530 } 531 532 /** 533 * Set the "{@literal Task}". 534 * 535 * <p> 536 * Represents a scheduled event or milestone, which may be associated with a series of assessment actions. 537 * 538 * @param value 539 * the task value to set 540 */ 541 public void setTasks(@NonNull List<Task> value) { 542 _tasks = value; 543 } 544 545 /** 546 * Add a new {@link Task} item to the underlying collection. 547 * @param item the item to add 548 * @return {@code true} 549 */ 550 public boolean addTask(Task item) { 551 Task value = ObjectUtils.requireNonNull(item,"item cannot be null"); 552 if (_tasks == null) { 553 _tasks = new LinkedList<>(); 554 } 555 return _tasks.add(value); 556 } 557 558 /** 559 * Remove the first matching {@link Task} item from the underlying collection. 560 * @param item the item to remove 561 * @return {@code true} if the item was removed or {@code false} otherwise 562 */ 563 public boolean removeTask(Task item) { 564 Task value = ObjectUtils.requireNonNull(item,"item cannot be null"); 565 return _tasks != null && _tasks.remove(value); 566 } 567 568 /** 569 * Get the "{@literal Associated Activity}". 570 * 571 * <p> 572 * Identifies an individual activity to be performed as part of a task. 573 * 574 * @return the associated-activity value 575 */ 576 @NonNull 577 public List<AssociatedActivity> getAssociatedActivities() { 578 if (_associatedActivities == null) { 579 _associatedActivities = new LinkedList<>(); 580 } 581 return ObjectUtils.notNull(_associatedActivities); 582 } 583 584 /** 585 * Set the "{@literal Associated Activity}". 586 * 587 * <p> 588 * Identifies an individual activity to be performed as part of a task. 589 * 590 * @param value 591 * the associated-activity value to set 592 */ 593 public void setAssociatedActivities(@NonNull List<AssociatedActivity> value) { 594 _associatedActivities = value; 595 } 596 597 /** 598 * Add a new {@link AssociatedActivity} item to the underlying collection. 599 * @param item the item to add 600 * @return {@code true} 601 */ 602 public boolean addAssociatedActivity(AssociatedActivity item) { 603 AssociatedActivity value = ObjectUtils.requireNonNull(item,"item cannot be null"); 604 if (_associatedActivities == null) { 605 _associatedActivities = new LinkedList<>(); 606 } 607 return _associatedActivities.add(value); 608 } 609 610 /** 611 * Remove the first matching {@link AssociatedActivity} item from the underlying collection. 612 * @param item the item to remove 613 * @return {@code true} if the item was removed or {@code false} otherwise 614 */ 615 public boolean removeAssociatedActivity(AssociatedActivity item) { 616 AssociatedActivity value = ObjectUtils.requireNonNull(item,"item cannot be null"); 617 return _associatedActivities != null && _associatedActivities.remove(value); 618 } 619 620 /** 621 * Get the "{@literal Subject of Assessment}". 622 * 623 * <p> 624 * Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope. 625 * 626 * @return the subject value 627 */ 628 @NonNull 629 public List<AssessmentSubject> getSubjects() { 630 if (_subjects == null) { 631 _subjects = new LinkedList<>(); 632 } 633 return ObjectUtils.notNull(_subjects); 634 } 635 636 /** 637 * Set the "{@literal Subject of Assessment}". 638 * 639 * <p> 640 * Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope. 641 * 642 * @param value 643 * the subject value to set 644 */ 645 public void setSubjects(@NonNull List<AssessmentSubject> value) { 646 _subjects = value; 647 } 648 649 /** 650 * Add a new {@link AssessmentSubject} item to the underlying collection. 651 * @param item the item to add 652 * @return {@code true} 653 */ 654 public boolean addSubject(AssessmentSubject item) { 655 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null"); 656 if (_subjects == null) { 657 _subjects = new LinkedList<>(); 658 } 659 return _subjects.add(value); 660 } 661 662 /** 663 * Remove the first matching {@link AssessmentSubject} item from the underlying collection. 664 * @param item the item to remove 665 * @return {@code true} if the item was removed or {@code false} otherwise 666 */ 667 public boolean removeSubject(AssessmentSubject item) { 668 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null"); 669 return _subjects != null && _subjects.remove(value); 670 } 671 672 /** 673 * Get the "{@literal Responsible Role}". 674 * 675 * <p> 676 * A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role. 677 * 678 * @return the responsible-role value 679 */ 680 @NonNull 681 public List<ResponsibleRole> getResponsibleRoles() { 682 if (_responsibleRoles == null) { 683 _responsibleRoles = new LinkedList<>(); 684 } 685 return ObjectUtils.notNull(_responsibleRoles); 686 } 687 688 /** 689 * Set the "{@literal Responsible Role}". 690 * 691 * <p> 692 * A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role. 693 * 694 * @param value 695 * the responsible-role value to set 696 */ 697 public void setResponsibleRoles(@NonNull List<ResponsibleRole> value) { 698 _responsibleRoles = value; 699 } 700 701 /** 702 * Add a new {@link ResponsibleRole} item to the underlying collection. 703 * @param item the item to add 704 * @return {@code true} 705 */ 706 public boolean addResponsibleRole(ResponsibleRole item) { 707 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null"); 708 if (_responsibleRoles == null) { 709 _responsibleRoles = new LinkedList<>(); 710 } 711 return _responsibleRoles.add(value); 712 } 713 714 /** 715 * Remove the first matching {@link ResponsibleRole} item from the underlying collection. 716 * @param item the item to remove 717 * @return {@code true} if the item was removed or {@code false} otherwise 718 */ 719 public boolean removeResponsibleRole(ResponsibleRole item) { 720 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null"); 721 return _responsibleRoles != null && _responsibleRoles.remove(value); 722 } 723 724 /** 725 * Get the "{@literal Remarks}". 726 * 727 * <p> 728 * Additional commentary about the containing object. 729 * 730 * @return the remarks value, or {@code null} if not set 731 */ 732 @Nullable 733 public MarkupMultiline getRemarks() { 734 return _remarks; 735 } 736 737 /** 738 * Set the "{@literal Remarks}". 739 * 740 * <p> 741 * Additional commentary about the containing object. 742 * 743 * @param value 744 * the remarks value to set, or {@code null} to clear 745 */ 746 public void setRemarks(@Nullable MarkupMultiline value) { 747 _remarks = value; 748 } 749 750 @Override 751 public String toString() { 752 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString()); 753 } 754 755 /** 756 * The timing under which the task is intended to occur. 757 */ 758 @MetaschemaAssembly( 759 formalName = "Event Timing", 760 description = "The timing under which the task is intended to occur.", 761 name = "timing", 762 moduleClass = OscalAssessmentCommonModule.class 763 ) 764 public static class Timing implements IBoundObject { 765 private final IMetaschemaData __metaschemaData; 766 767 /** 768 * The task is intended to occur on the specified date. 769 */ 770 @BoundAssembly( 771 formalName = "On Date Condition", 772 description = "The task is intended to occur on the specified date.", 773 useName = "on-date", 774 minOccurs = 1 775 ) 776 @BoundChoice( 777 choiceId = "choice-1" 778 ) 779 private OnDate _onDate; 780 781 /** 782 * The task is intended to occur within the specified date range. 783 */ 784 @BoundAssembly( 785 formalName = "On Date Range Condition", 786 description = "The task is intended to occur within the specified date range.", 787 useName = "within-date-range", 788 minOccurs = 1 789 ) 790 @BoundChoice( 791 choiceId = "choice-1" 792 ) 793 private WithinDateRange _withinDateRange; 794 795 /** 796 * The task is intended to occur at the specified frequency. 797 */ 798 @BoundAssembly( 799 formalName = "Frequency Condition", 800 description = "The task is intended to occur at the specified frequency.", 801 useName = "at-frequency", 802 minOccurs = 1 803 ) 804 @BoundChoice( 805 choiceId = "choice-1" 806 ) 807 private AtFrequency _atFrequency; 808 809 /** 810 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing} instance with no metadata. 811 */ 812 public Timing() { 813 this(null); 814 } 815 816 /** 817 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing} instance with the specified metadata. 818 * 819 * @param data 820 * the metaschema data, or {@code null} if none 821 */ 822 public Timing(IMetaschemaData data) { 823 this.__metaschemaData = data; 824 } 825 826 @Override 827 public IMetaschemaData getMetaschemaData() { 828 return __metaschemaData; 829 } 830 831 /** 832 * Get the "{@literal On Date Condition}". 833 * 834 * <p> 835 * The task is intended to occur on the specified date. 836 * 837 * @return the on-date value, or {@code null} if not set 838 */ 839 @Nullable 840 public OnDate getOnDate() { 841 return _onDate; 842 } 843 844 /** 845 * Set the "{@literal On Date Condition}". 846 * 847 * <p> 848 * The task is intended to occur on the specified date. 849 * 850 * @param value 851 * the on-date value to set, or {@code null} to clear 852 */ 853 public void setOnDate(@Nullable OnDate value) { 854 _onDate = value; 855 } 856 857 /** 858 * Get the "{@literal On Date Range Condition}". 859 * 860 * <p> 861 * The task is intended to occur within the specified date range. 862 * 863 * @return the within-date-range value, or {@code null} if not set 864 */ 865 @Nullable 866 public WithinDateRange getWithinDateRange() { 867 return _withinDateRange; 868 } 869 870 /** 871 * Set the "{@literal On Date Range Condition}". 872 * 873 * <p> 874 * The task is intended to occur within the specified date range. 875 * 876 * @param value 877 * the within-date-range value to set, or {@code null} to clear 878 */ 879 public void setWithinDateRange(@Nullable WithinDateRange value) { 880 _withinDateRange = value; 881 } 882 883 /** 884 * Get the "{@literal Frequency Condition}". 885 * 886 * <p> 887 * The task is intended to occur at the specified frequency. 888 * 889 * @return the at-frequency value, or {@code null} if not set 890 */ 891 @Nullable 892 public AtFrequency getAtFrequency() { 893 return _atFrequency; 894 } 895 896 /** 897 * Set the "{@literal Frequency Condition}". 898 * 899 * <p> 900 * The task is intended to occur at the specified frequency. 901 * 902 * @param value 903 * the at-frequency value to set, or {@code null} to clear 904 */ 905 public void setAtFrequency(@Nullable AtFrequency value) { 906 _atFrequency = value; 907 } 908 909 @Override 910 public String toString() { 911 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString()); 912 } 913 914 /** 915 * The task is intended to occur on the specified date. 916 */ 917 @MetaschemaAssembly( 918 formalName = "On Date Condition", 919 description = "The task is intended to occur on the specified date.", 920 name = "on-date", 921 moduleClass = OscalAssessmentCommonModule.class 922 ) 923 public static class OnDate implements IBoundObject { 924 private final IMetaschemaData __metaschemaData; 925 926 /** 927 * The task must occur on the specified date. 928 */ 929 @BoundFlag( 930 formalName = "On Date Condition", 931 description = "The task must occur on the specified date.", 932 name = "date", 933 required = true, 934 typeAdapter = DateTimeWithTZAdapter.class 935 ) 936 private ZonedDateTime _date; 937 938 /** 939 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing.OnDate} instance with no metadata. 940 */ 941 public OnDate() { 942 this(null); 943 } 944 945 /** 946 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing.OnDate} instance with the specified metadata. 947 * 948 * @param data 949 * the metaschema data, or {@code null} if none 950 */ 951 public OnDate(IMetaschemaData data) { 952 this.__metaschemaData = data; 953 } 954 955 @Override 956 public IMetaschemaData getMetaschemaData() { 957 return __metaschemaData; 958 } 959 960 /** 961 * Get the "{@literal On Date Condition}". 962 * 963 * <p> 964 * The task must occur on the specified date. 965 * 966 * @return the date value 967 */ 968 @NonNull 969 public ZonedDateTime getDate() { 970 return _date; 971 } 972 973 /** 974 * Set the "{@literal On Date Condition}". 975 * 976 * <p> 977 * The task must occur on the specified date. 978 * 979 * @param value 980 * the date value to set 981 */ 982 public void setDate(@NonNull ZonedDateTime value) { 983 _date = value; 984 } 985 986 @Override 987 public String toString() { 988 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString()); 989 } 990 } 991 992 /** 993 * The task is intended to occur within the specified date range. 994 */ 995 @MetaschemaAssembly( 996 formalName = "On Date Range Condition", 997 description = "The task is intended to occur within the specified date range.", 998 name = "within-date-range", 999 moduleClass = OscalAssessmentCommonModule.class 1000 ) 1001 public static class WithinDateRange implements IBoundObject { 1002 private final IMetaschemaData __metaschemaData; 1003 1004 /** 1005 * The task must occur on or after the specified date. 1006 */ 1007 @BoundFlag( 1008 formalName = "Start Date Condition", 1009 description = "The task must occur on or after the specified date.", 1010 name = "start", 1011 required = true, 1012 typeAdapter = DateTimeWithTZAdapter.class 1013 ) 1014 private ZonedDateTime _start; 1015 1016 /** 1017 * The task must occur on or before the specified date. 1018 */ 1019 @BoundFlag( 1020 formalName = "End Date Condition", 1021 description = "The task must occur on or before the specified date.", 1022 name = "end", 1023 required = true, 1024 typeAdapter = DateTimeWithTZAdapter.class 1025 ) 1026 private ZonedDateTime _end; 1027 1028 /** 1029 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing.WithinDateRange} instance with no metadata. 1030 */ 1031 public WithinDateRange() { 1032 this(null); 1033 } 1034 1035 /** 1036 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing.WithinDateRange} instance with the specified metadata. 1037 * 1038 * @param data 1039 * the metaschema data, or {@code null} if none 1040 */ 1041 public WithinDateRange(IMetaschemaData data) { 1042 this.__metaschemaData = data; 1043 } 1044 1045 @Override 1046 public IMetaschemaData getMetaschemaData() { 1047 return __metaschemaData; 1048 } 1049 1050 /** 1051 * Get the "{@literal Start Date Condition}". 1052 * 1053 * <p> 1054 * The task must occur on or after the specified date. 1055 * 1056 * @return the start value 1057 */ 1058 @NonNull 1059 public ZonedDateTime getStart() { 1060 return _start; 1061 } 1062 1063 /** 1064 * Set the "{@literal Start Date Condition}". 1065 * 1066 * <p> 1067 * The task must occur on or after the specified date. 1068 * 1069 * @param value 1070 * the start value to set 1071 */ 1072 public void setStart(@NonNull ZonedDateTime value) { 1073 _start = value; 1074 } 1075 1076 /** 1077 * Get the "{@literal End Date Condition}". 1078 * 1079 * <p> 1080 * The task must occur on or before the specified date. 1081 * 1082 * @return the end value 1083 */ 1084 @NonNull 1085 public ZonedDateTime getEnd() { 1086 return _end; 1087 } 1088 1089 /** 1090 * Set the "{@literal End Date Condition}". 1091 * 1092 * <p> 1093 * The task must occur on or before the specified date. 1094 * 1095 * @param value 1096 * the end value to set 1097 */ 1098 public void setEnd(@NonNull ZonedDateTime value) { 1099 _end = value; 1100 } 1101 1102 @Override 1103 public String toString() { 1104 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString()); 1105 } 1106 } 1107 1108 /** 1109 * The task is intended to occur at the specified frequency. 1110 */ 1111 @MetaschemaAssembly( 1112 formalName = "Frequency Condition", 1113 description = "The task is intended to occur at the specified frequency.", 1114 name = "at-frequency", 1115 moduleClass = OscalAssessmentCommonModule.class 1116 ) 1117 public static class AtFrequency implements IBoundObject { 1118 private final IMetaschemaData __metaschemaData; 1119 1120 /** 1121 * The task must occur after the specified period has elapsed. 1122 */ 1123 @BoundFlag( 1124 formalName = "Period", 1125 description = "The task must occur after the specified period has elapsed.", 1126 name = "period", 1127 required = true, 1128 typeAdapter = PositiveIntegerAdapter.class 1129 ) 1130 private BigInteger _period; 1131 1132 /** 1133 * The unit of time for the period. 1134 */ 1135 @BoundFlag( 1136 formalName = "Time Unit", 1137 description = "The unit of time for the period.", 1138 name = "unit", 1139 required = true, 1140 typeAdapter = StringAdapter.class, 1141 valueConstraints = @ValueConstraints(allowedValues = @AllowedValues(id = "oscal-timing-unit-values", level = IConstraint.Level.ERROR, values = {@AllowedValue(value = "seconds", description = "The period is specified in seconds."), @AllowedValue(value = "minutes", description = "The period is specified in minutes."), @AllowedValue(value = "hours", description = "The period is specified in hours."), @AllowedValue(value = "days", description = "The period is specified in days."), @AllowedValue(value = "months", description = "The period is specified in calendar months."), @AllowedValue(value = "years", description = "The period is specified in calendar years.")})) 1142 ) 1143 private String _unit; 1144 1145 /** 1146 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing.AtFrequency} instance with no metadata. 1147 */ 1148 public AtFrequency() { 1149 this(null); 1150 } 1151 1152 /** 1153 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Timing.AtFrequency} instance with the specified metadata. 1154 * 1155 * @param data 1156 * the metaschema data, or {@code null} if none 1157 */ 1158 public AtFrequency(IMetaschemaData data) { 1159 this.__metaschemaData = data; 1160 } 1161 1162 @Override 1163 public IMetaschemaData getMetaschemaData() { 1164 return __metaschemaData; 1165 } 1166 1167 /** 1168 * Get the "{@literal Period}". 1169 * 1170 * <p> 1171 * The task must occur after the specified period has elapsed. 1172 * 1173 * @return the period value 1174 */ 1175 @NonNull 1176 public BigInteger getPeriod() { 1177 return _period; 1178 } 1179 1180 /** 1181 * Set the "{@literal Period}". 1182 * 1183 * <p> 1184 * The task must occur after the specified period has elapsed. 1185 * 1186 * @param value 1187 * the period value to set 1188 */ 1189 public void setPeriod(@NonNull BigInteger value) { 1190 _period = value; 1191 } 1192 1193 /** 1194 * Get the "{@literal Time Unit}". 1195 * 1196 * <p> 1197 * The unit of time for the period. 1198 * 1199 * @return the unit value 1200 */ 1201 @NonNull 1202 public String getUnit() { 1203 return _unit; 1204 } 1205 1206 /** 1207 * Set the "{@literal Time Unit}". 1208 * 1209 * <p> 1210 * The unit of time for the period. 1211 * 1212 * @param value 1213 * the unit value to set 1214 */ 1215 public void setUnit(@NonNull String value) { 1216 _unit = value; 1217 } 1218 1219 @Override 1220 public String toString() { 1221 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString()); 1222 } 1223 } 1224 } 1225 1226 /** 1227 * Used to indicate that a task is dependent on another task. 1228 */ 1229 @MetaschemaAssembly( 1230 formalName = "Task Dependency", 1231 description = "Used to indicate that a task is dependent on another task.", 1232 name = "dependency", 1233 moduleClass = OscalAssessmentCommonModule.class 1234 ) 1235 public static class Dependency implements IBoundObject { 1236 private final IMetaschemaData __metaschemaData; 1237 1238 /** 1239 * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a> identifier reference to a unique task. 1240 */ 1241 @BoundFlag( 1242 formalName = "Task Universally Unique Identifier Reference", 1243 description = "A [machine-oriented](https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented) identifier reference to a unique task.", 1244 name = "task-uuid", 1245 required = true, 1246 typeAdapter = UuidAdapter.class 1247 ) 1248 private UUID _taskUuid; 1249 1250 /** 1251 * Additional commentary about the containing object. 1252 */ 1253 @BoundField( 1254 formalName = "Remarks", 1255 description = "Additional commentary about the containing object.", 1256 useName = "remarks", 1257 typeAdapter = MarkupMultilineAdapter.class 1258 ) 1259 private MarkupMultiline _remarks; 1260 1261 /** 1262 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Dependency} instance with no metadata. 1263 */ 1264 public Dependency() { 1265 this(null); 1266 } 1267 1268 /** 1269 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.Dependency} instance with the specified metadata. 1270 * 1271 * @param data 1272 * the metaschema data, or {@code null} if none 1273 */ 1274 public Dependency(IMetaschemaData data) { 1275 this.__metaschemaData = data; 1276 } 1277 1278 @Override 1279 public IMetaschemaData getMetaschemaData() { 1280 return __metaschemaData; 1281 } 1282 1283 /** 1284 * Get the "{@literal Task Universally Unique Identifier Reference}". 1285 * 1286 * <p> 1287 * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a> identifier reference to a unique task. 1288 * 1289 * @return the task-uuid value 1290 */ 1291 @NonNull 1292 public UUID getTaskUuid() { 1293 return _taskUuid; 1294 } 1295 1296 /** 1297 * Set the "{@literal Task Universally Unique Identifier Reference}". 1298 * 1299 * <p> 1300 * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a> identifier reference to a unique task. 1301 * 1302 * @param value 1303 * the task-uuid value to set 1304 */ 1305 public void setTaskUuid(@NonNull UUID value) { 1306 _taskUuid = value; 1307 } 1308 1309 /** 1310 * Get the "{@literal Remarks}". 1311 * 1312 * <p> 1313 * Additional commentary about the containing object. 1314 * 1315 * @return the remarks value, or {@code null} if not set 1316 */ 1317 @Nullable 1318 public MarkupMultiline getRemarks() { 1319 return _remarks; 1320 } 1321 1322 /** 1323 * Set the "{@literal Remarks}". 1324 * 1325 * <p> 1326 * Additional commentary about the containing object. 1327 * 1328 * @param value 1329 * the remarks value to set, or {@code null} to clear 1330 */ 1331 public void setRemarks(@Nullable MarkupMultiline value) { 1332 _remarks = value; 1333 } 1334 1335 @Override 1336 public String toString() { 1337 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString()); 1338 } 1339 } 1340 1341 /** 1342 * Identifies an individual activity to be performed as part of a task. 1343 */ 1344 @MetaschemaAssembly( 1345 formalName = "Associated Activity", 1346 description = "Identifies an individual activity to be performed as part of a task.", 1347 name = "associated-activity", 1348 moduleClass = OscalAssessmentCommonModule.class, 1349 modelConstraints = @AssemblyConstraints(unique = @IsUnique(id = "oscal-unique-associated-activity-responsible-role", level = IConstraint.Level.ERROR, target = "responsible-role", keyFields = @KeyField(target = "@role-id"), remarks = "Since `responsible-role` associates multiple `party-uuid` entries with a single `role-id`, each role-id must be referenced only once.")) 1350 ) 1351 public static class AssociatedActivity implements IBoundObject { 1352 private final IMetaschemaData __metaschemaData; 1353 1354 /** 1355 * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a> identifier reference to an activity defined in the list of activities. 1356 */ 1357 @BoundFlag( 1358 formalName = "Activity Universally Unique Identifier Reference", 1359 description = "A [machine-oriented](https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented) identifier reference to an activity defined in the list of activities.", 1360 name = "activity-uuid", 1361 required = true, 1362 typeAdapter = UuidAdapter.class 1363 ) 1364 private UUID _activityUuid; 1365 1366 /** 1367 * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair. 1368 */ 1369 @BoundAssembly( 1370 formalName = "Property", 1371 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 1372 useName = "prop", 1373 maxOccurs = -1, 1374 groupAs = @GroupAs(name = "props", inJson = JsonGroupAsBehavior.LIST) 1375 ) 1376 private List<Property> _props; 1377 1378 /** 1379 * A reference to a local or remote resource, that has a specific relation to the containing object. 1380 */ 1381 @BoundAssembly( 1382 formalName = "Link", 1383 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 1384 useName = "link", 1385 maxOccurs = -1, 1386 groupAs = @GroupAs(name = "links", inJson = JsonGroupAsBehavior.LIST) 1387 ) 1388 private List<Link> _links; 1389 1390 /** 1391 * A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role. 1392 */ 1393 @BoundAssembly( 1394 formalName = "Responsible Role", 1395 description = "A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.", 1396 useName = "responsible-role", 1397 remarks = "Identifies the person or organization responsible for performing a specific role defined by the activity.", 1398 maxOccurs = -1, 1399 groupAs = @GroupAs(name = "responsible-roles", inJson = JsonGroupAsBehavior.LIST) 1400 ) 1401 private List<ResponsibleRole> _responsibleRoles; 1402 1403 /** 1404 * Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope. 1405 */ 1406 @BoundAssembly( 1407 formalName = "Subject of Assessment", 1408 description = "Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope.", 1409 useName = "subject", 1410 minOccurs = 1, 1411 maxOccurs = -1, 1412 groupAs = @GroupAs(name = "subjects", inJson = JsonGroupAsBehavior.LIST) 1413 ) 1414 private List<AssessmentSubject> _subjects; 1415 1416 /** 1417 * Additional commentary about the containing object. 1418 */ 1419 @BoundField( 1420 formalName = "Remarks", 1421 description = "Additional commentary about the containing object.", 1422 useName = "remarks", 1423 typeAdapter = MarkupMultilineAdapter.class 1424 ) 1425 private MarkupMultiline _remarks; 1426 1427 /** 1428 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.AssociatedActivity} instance with no metadata. 1429 */ 1430 public AssociatedActivity() { 1431 this(null); 1432 } 1433 1434 /** 1435 * Constructs a new {@code dev.metaschema.oscal.lib.model.Task.AssociatedActivity} instance with the specified metadata. 1436 * 1437 * @param data 1438 * the metaschema data, or {@code null} if none 1439 */ 1440 public AssociatedActivity(IMetaschemaData data) { 1441 this.__metaschemaData = data; 1442 } 1443 1444 @Override 1445 public IMetaschemaData getMetaschemaData() { 1446 return __metaschemaData; 1447 } 1448 1449 /** 1450 * Get the "{@literal Activity Universally Unique Identifier Reference}". 1451 * 1452 * <p> 1453 * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a> identifier reference to an activity defined in the list of activities. 1454 * 1455 * @return the activity-uuid value 1456 */ 1457 @NonNull 1458 public UUID getActivityUuid() { 1459 return _activityUuid; 1460 } 1461 1462 /** 1463 * Set the "{@literal Activity Universally Unique Identifier Reference}". 1464 * 1465 * <p> 1466 * A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented">machine-oriented</a> identifier reference to an activity defined in the list of activities. 1467 * 1468 * @param value 1469 * the activity-uuid value to set 1470 */ 1471 public void setActivityUuid(@NonNull UUID value) { 1472 _activityUuid = value; 1473 } 1474 1475 /** 1476 * Get the "{@literal Property}". 1477 * 1478 * <p> 1479 * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair. 1480 * 1481 * @return the prop value 1482 */ 1483 @NonNull 1484 public List<Property> getProps() { 1485 if (_props == null) { 1486 _props = new LinkedList<>(); 1487 } 1488 return ObjectUtils.notNull(_props); 1489 } 1490 1491 /** 1492 * Set the "{@literal Property}". 1493 * 1494 * <p> 1495 * An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair. 1496 * 1497 * @param value 1498 * the prop value to set 1499 */ 1500 public void setProps(@NonNull List<Property> value) { 1501 _props = value; 1502 } 1503 1504 /** 1505 * Add a new {@link Property} item to the underlying collection. 1506 * @param item the item to add 1507 * @return {@code true} 1508 */ 1509 public boolean addProp(Property item) { 1510 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1511 if (_props == null) { 1512 _props = new LinkedList<>(); 1513 } 1514 return _props.add(value); 1515 } 1516 1517 /** 1518 * Remove the first matching {@link Property} item from the underlying collection. 1519 * @param item the item to remove 1520 * @return {@code true} if the item was removed or {@code false} otherwise 1521 */ 1522 public boolean removeProp(Property item) { 1523 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1524 return _props != null && _props.remove(value); 1525 } 1526 1527 /** 1528 * Get the "{@literal Link}". 1529 * 1530 * <p> 1531 * A reference to a local or remote resource, that has a specific relation to the containing object. 1532 * 1533 * @return the link value 1534 */ 1535 @NonNull 1536 public List<Link> getLinks() { 1537 if (_links == null) { 1538 _links = new LinkedList<>(); 1539 } 1540 return ObjectUtils.notNull(_links); 1541 } 1542 1543 /** 1544 * Set the "{@literal Link}". 1545 * 1546 * <p> 1547 * A reference to a local or remote resource, that has a specific relation to the containing object. 1548 * 1549 * @param value 1550 * the link value to set 1551 */ 1552 public void setLinks(@NonNull List<Link> value) { 1553 _links = value; 1554 } 1555 1556 /** 1557 * Add a new {@link Link} item to the underlying collection. 1558 * @param item the item to add 1559 * @return {@code true} 1560 */ 1561 public boolean addLink(Link item) { 1562 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1563 if (_links == null) { 1564 _links = new LinkedList<>(); 1565 } 1566 return _links.add(value); 1567 } 1568 1569 /** 1570 * Remove the first matching {@link Link} item from the underlying collection. 1571 * @param item the item to remove 1572 * @return {@code true} if the item was removed or {@code false} otherwise 1573 */ 1574 public boolean removeLink(Link item) { 1575 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1576 return _links != null && _links.remove(value); 1577 } 1578 1579 /** 1580 * Get the "{@literal Responsible Role}". 1581 * 1582 * <p> 1583 * A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role. 1584 * 1585 * @return the responsible-role value 1586 */ 1587 @NonNull 1588 public List<ResponsibleRole> getResponsibleRoles() { 1589 if (_responsibleRoles == null) { 1590 _responsibleRoles = new LinkedList<>(); 1591 } 1592 return ObjectUtils.notNull(_responsibleRoles); 1593 } 1594 1595 /** 1596 * Set the "{@literal Responsible Role}". 1597 * 1598 * <p> 1599 * A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role. 1600 * 1601 * @param value 1602 * the responsible-role value to set 1603 */ 1604 public void setResponsibleRoles(@NonNull List<ResponsibleRole> value) { 1605 _responsibleRoles = value; 1606 } 1607 1608 /** 1609 * Add a new {@link ResponsibleRole} item to the underlying collection. 1610 * @param item the item to add 1611 * @return {@code true} 1612 */ 1613 public boolean addResponsibleRole(ResponsibleRole item) { 1614 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1615 if (_responsibleRoles == null) { 1616 _responsibleRoles = new LinkedList<>(); 1617 } 1618 return _responsibleRoles.add(value); 1619 } 1620 1621 /** 1622 * Remove the first matching {@link ResponsibleRole} item from the underlying collection. 1623 * @param item the item to remove 1624 * @return {@code true} if the item was removed or {@code false} otherwise 1625 */ 1626 public boolean removeResponsibleRole(ResponsibleRole item) { 1627 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1628 return _responsibleRoles != null && _responsibleRoles.remove(value); 1629 } 1630 1631 /** 1632 * Get the "{@literal Subject of Assessment}". 1633 * 1634 * <p> 1635 * Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope. 1636 * 1637 * @return the subject value 1638 */ 1639 @NonNull 1640 public List<AssessmentSubject> getSubjects() { 1641 if (_subjects == null) { 1642 _subjects = new LinkedList<>(); 1643 } 1644 return ObjectUtils.notNull(_subjects); 1645 } 1646 1647 /** 1648 * Set the "{@literal Subject of Assessment}". 1649 * 1650 * <p> 1651 * Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope. 1652 * 1653 * @param value 1654 * the subject value to set 1655 */ 1656 public void setSubjects(@NonNull List<AssessmentSubject> value) { 1657 _subjects = value; 1658 } 1659 1660 /** 1661 * Add a new {@link AssessmentSubject} item to the underlying collection. 1662 * @param item the item to add 1663 * @return {@code true} 1664 */ 1665 public boolean addSubject(AssessmentSubject item) { 1666 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1667 if (_subjects == null) { 1668 _subjects = new LinkedList<>(); 1669 } 1670 return _subjects.add(value); 1671 } 1672 1673 /** 1674 * Remove the first matching {@link AssessmentSubject} item from the underlying collection. 1675 * @param item the item to remove 1676 * @return {@code true} if the item was removed or {@code false} otherwise 1677 */ 1678 public boolean removeSubject(AssessmentSubject item) { 1679 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null"); 1680 return _subjects != null && _subjects.remove(value); 1681 } 1682 1683 /** 1684 * Get the "{@literal Remarks}". 1685 * 1686 * <p> 1687 * Additional commentary about the containing object. 1688 * 1689 * @return the remarks value, or {@code null} if not set 1690 */ 1691 @Nullable 1692 public MarkupMultiline getRemarks() { 1693 return _remarks; 1694 } 1695 1696 /** 1697 * Set the "{@literal Remarks}". 1698 * 1699 * <p> 1700 * Additional commentary about the containing object. 1701 * 1702 * @param value 1703 * the remarks value to set, or {@code null} to clear 1704 */ 1705 public void setRemarks(@Nullable MarkupMultiline value) { 1706 _remarks = value; 1707 } 1708 1709 @Override 1710 public String toString() { 1711 return ObjectUtils.notNull(new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString()); 1712 } 1713 } 1714}