001package gov.nist.secauto.oscal.lib.model; 002 003import gov.nist.secauto.metaschema.binding.model.annotations.BoundAssembly; 004import gov.nist.secauto.metaschema.binding.model.annotations.BoundField; 005import gov.nist.secauto.metaschema.binding.model.annotations.BoundFieldValue; 006import gov.nist.secauto.metaschema.binding.model.annotations.GroupAs; 007import gov.nist.secauto.metaschema.binding.model.annotations.MetaschemaAssembly; 008import gov.nist.secauto.metaschema.model.common.JsonGroupAsBehavior; 009import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline; 010import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultilineAdapter; 011import gov.nist.secauto.metaschema.model.common.util.ObjectUtils; 012import java.lang.Override; 013import java.lang.String; 014import java.util.LinkedList; 015import java.util.List; 016import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle; 017import org.apache.commons.lang3.builder.ReflectionToStringBuilder; 018 019/** 020 * Identifies the controls being assessed and their control objectives. 021 */ 022@MetaschemaAssembly( 023 formalName = "Reviewed Controls and Control Objectives", 024 description = "Identifies the controls being assessed and their control objectives.", 025 name = "reviewed-controls", 026 metaschema = OscalAssessmentCommonMetaschema.class, 027 remarks = "In the context of an assessment plan, this construct is used to identify the controls and control objectives that are to be assessed. In the context of an assessment result, this construct is used to identify the actual controls and objectives that were assessed, reflecting any changes from the plan.\n" 028 + "\n" 029 + "When resolving the selection of controls and control objectives, the following processing will occur:\n" 030 + "\n" 031 + "1. Controls will be resolved by creating a set of controls based on the control-selections by first handling the includes, and then removing any excluded controls.\n" 032 + "\n" 033 + "2. The set of control objectives will be resolved from the set of controls that was generated in the previous step. The set of control objectives is based on the control-objective-selection by first handling the includes, and then removing any excluded control objectives." 034) 035public class ReviewedControls { 036 /** 037 * "A human-readable description of control objectives." 038 */ 039 @BoundField( 040 formalName = "Control Objective Description", 041 description = "A human-readable description of control objectives.", 042 useName = "description" 043 ) 044 @BoundFieldValue( 045 typeAdapter = MarkupMultilineAdapter.class 046 ) 047 private MarkupMultiline _description; 048 049 @BoundAssembly( 050 formalName = "Property", 051 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 052 useName = "prop", 053 maxOccurs = -1 054 ) 055 @GroupAs( 056 name = "props", 057 inJson = JsonGroupAsBehavior.LIST 058 ) 059 private List<Property> _props; 060 061 @BoundAssembly( 062 formalName = "Link", 063 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 064 useName = "link", 065 maxOccurs = -1 066 ) 067 @GroupAs( 068 name = "links", 069 inJson = JsonGroupAsBehavior.LIST 070 ) 071 private List<Link> _links; 072 073 /** 074 * "Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan." 075 */ 076 @BoundAssembly( 077 formalName = "Assessed Controls", 078 description = "Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan.", 079 useName = "control-selection", 080 minOccurs = 1, 081 maxOccurs = -1, 082 remarks = "The `include-all`, specifies all control identified in the **baseline** are included in the scope if this assessment, as specified by the `include-profile` statement within the linked SSP.\n" 083 + "\n" 084 + "Any control specified within `exclude-controls` must first be within a range of explicitly included controls, via `include-controls` or `include-all`." 085 ) 086 @GroupAs( 087 name = "control-selections", 088 inJson = JsonGroupAsBehavior.LIST 089 ) 090 private List<ControlSelection> _controlSelections; 091 092 /** 093 * "Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan." 094 */ 095 @BoundAssembly( 096 formalName = "Referenced Control Objectives", 097 description = "Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan.", 098 useName = "control-objective-selection", 099 maxOccurs = -1, 100 remarks = "The `include-all` field, specifies all control objectives for any in-scope control. In-scope controls are defined in the `control-selection`.\n" 101 + "\n" 102 + "Any control objective specified within `exclude-controls` must first be within a range of explicitly included control objectives, via `include-objectives` or `include-all`." 103 ) 104 @GroupAs( 105 name = "control-objective-selections", 106 inJson = JsonGroupAsBehavior.LIST 107 ) 108 private List<ControlObjectiveSelection> _controlObjectiveSelections; 109 110 @BoundField( 111 formalName = "Remarks", 112 description = "Additional commentary about the containing object.", 113 useName = "remarks" 114 ) 115 @BoundFieldValue( 116 typeAdapter = MarkupMultilineAdapter.class 117 ) 118 private MarkupMultiline _remarks; 119 120 public ReviewedControls() { 121 } 122 123 public MarkupMultiline getDescription() { 124 return _description; 125 } 126 127 public void setDescription(MarkupMultiline value) { 128 _description = value; 129 } 130 131 public List<Property> getProps() { 132 return _props; 133 } 134 135 public void setProps(List<Property> value) { 136 _props = value; 137 } 138 139 /** 140 * Add a new {@link Property} item to the underlying collection. 141 * @param item the item to add 142 * @return {@code true} 143 */ 144 public boolean addProp(Property item) { 145 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 146 if (_props == null) { 147 _props = new LinkedList<>(); 148 } 149 return _props.add(value); 150 } 151 152 /** 153 * Remove the first matching {@link Property} item from the underlying collection. 154 * @param item the item to remove 155 * @return {@code true} if the item was removed or {@code false} otherwise 156 */ 157 public boolean removeProp(Property item) { 158 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 159 return _props == null ? false : _props.remove(value); 160 } 161 162 public List<Link> getLinks() { 163 return _links; 164 } 165 166 public void setLinks(List<Link> value) { 167 _links = value; 168 } 169 170 /** 171 * Add a new {@link Link} item to the underlying collection. 172 * @param item the item to add 173 * @return {@code true} 174 */ 175 public boolean addLink(Link item) { 176 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 177 if (_links == null) { 178 _links = new LinkedList<>(); 179 } 180 return _links.add(value); 181 } 182 183 /** 184 * Remove the first matching {@link Link} item from the underlying collection. 185 * @param item the item to remove 186 * @return {@code true} if the item was removed or {@code false} otherwise 187 */ 188 public boolean removeLink(Link item) { 189 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 190 return _links == null ? false : _links.remove(value); 191 } 192 193 public List<ControlSelection> getControlSelections() { 194 return _controlSelections; 195 } 196 197 public void setControlSelections(List<ControlSelection> value) { 198 _controlSelections = value; 199 } 200 201 /** 202 * Add a new {@link ControlSelection} item to the underlying collection. 203 * @param item the item to add 204 * @return {@code true} 205 */ 206 public boolean addControlSelection(ControlSelection item) { 207 ControlSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 208 if (_controlSelections == null) { 209 _controlSelections = new LinkedList<>(); 210 } 211 return _controlSelections.add(value); 212 } 213 214 /** 215 * Remove the first matching {@link ControlSelection} item from the underlying collection. 216 * @param item the item to remove 217 * @return {@code true} if the item was removed or {@code false} otherwise 218 */ 219 public boolean removeControlSelection(ControlSelection item) { 220 ControlSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 221 return _controlSelections == null ? false : _controlSelections.remove(value); 222 } 223 224 public List<ControlObjectiveSelection> getControlObjectiveSelections() { 225 return _controlObjectiveSelections; 226 } 227 228 public void setControlObjectiveSelections(List<ControlObjectiveSelection> value) { 229 _controlObjectiveSelections = value; 230 } 231 232 /** 233 * Add a new {@link ControlObjectiveSelection} item to the underlying collection. 234 * @param item the item to add 235 * @return {@code true} 236 */ 237 public boolean addControlObjectiveSelection(ControlObjectiveSelection item) { 238 ControlObjectiveSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 239 if (_controlObjectiveSelections == null) { 240 _controlObjectiveSelections = new LinkedList<>(); 241 } 242 return _controlObjectiveSelections.add(value); 243 } 244 245 /** 246 * Remove the first matching {@link ControlObjectiveSelection} item from the underlying collection. 247 * @param item the item to remove 248 * @return {@code true} if the item was removed or {@code false} otherwise 249 */ 250 public boolean removeControlObjectiveSelection(ControlObjectiveSelection item) { 251 ControlObjectiveSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 252 return _controlObjectiveSelections == null ? false : _controlObjectiveSelections.remove(value); 253 } 254 255 public MarkupMultiline getRemarks() { 256 return _remarks; 257 } 258 259 public void setRemarks(MarkupMultiline value) { 260 _remarks = value; 261 } 262 263 @Override 264 public String toString() { 265 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString(); 266 } 267 268 /** 269 * Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan. 270 */ 271 @MetaschemaAssembly( 272 formalName = "Assessed Controls", 273 description = "Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan.", 274 name = "control-selection", 275 metaschema = OscalAssessmentCommonMetaschema.class, 276 remarks = "The `include-all`, specifies all control identified in the **baseline** are included in the scope if this assessment, as specified by the `include-profile` statement within the linked SSP.\n" 277 + "\n" 278 + "Any control specified within `exclude-controls` must first be within a range of explicitly included controls, via `include-controls` or `include-all`." 279 ) 280 public static class ControlSelection { 281 /** 282 * "A human-readable description of in-scope controls specified for assessment." 283 */ 284 @BoundField( 285 formalName = "Assessed Controls Description", 286 description = "A human-readable description of in-scope controls specified for assessment.", 287 useName = "description" 288 ) 289 @BoundFieldValue( 290 typeAdapter = MarkupMultilineAdapter.class 291 ) 292 private MarkupMultiline _description; 293 294 @BoundAssembly( 295 formalName = "Property", 296 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 297 useName = "prop", 298 maxOccurs = -1 299 ) 300 @GroupAs( 301 name = "props", 302 inJson = JsonGroupAsBehavior.LIST 303 ) 304 private List<Property> _props; 305 306 @BoundAssembly( 307 formalName = "Link", 308 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 309 useName = "link", 310 maxOccurs = -1 311 ) 312 @GroupAs( 313 name = "links", 314 inJson = JsonGroupAsBehavior.LIST 315 ) 316 private List<Link> _links; 317 318 @BoundAssembly( 319 formalName = "Include All", 320 description = "Include all controls from the imported catalog or profile resources.", 321 useName = "include-all", 322 minOccurs = 1 323 ) 324 private IncludeAll _includeAll; 325 326 @BoundAssembly( 327 formalName = "Select Control", 328 description = "Used to select a control for inclusion/exclusion based on one or more control identifiers. A set of statement identifiers can be used to target the inclusion/exclusion to only specific control statements providing more granularity over the specific statements that are within the asessment scope.", 329 useName = "include-control", 330 minOccurs = 1, 331 maxOccurs = -1, 332 remarks = "Used to select a control for inclusion by the control's identifier. Specific control statements can be selected by their statement identifier." 333 ) 334 @GroupAs( 335 name = "include-controls", 336 inJson = JsonGroupAsBehavior.LIST 337 ) 338 private List<SelectControlById> _includeControls; 339 340 @BoundAssembly( 341 formalName = "Select Control", 342 description = "Used to select a control for inclusion/exclusion based on one or more control identifiers. A set of statement identifiers can be used to target the inclusion/exclusion to only specific control statements providing more granularity over the specific statements that are within the asessment scope.", 343 useName = "exclude-control", 344 maxOccurs = -1, 345 remarks = "Used to select a control for exclusion by the control's identifier. Specific control statements can be excluded by their statement identifier." 346 ) 347 @GroupAs( 348 name = "exclude-controls", 349 inJson = JsonGroupAsBehavior.LIST 350 ) 351 private List<SelectControlById> _excludeControls; 352 353 @BoundField( 354 formalName = "Remarks", 355 description = "Additional commentary about the containing object.", 356 useName = "remarks" 357 ) 358 @BoundFieldValue( 359 typeAdapter = MarkupMultilineAdapter.class 360 ) 361 private MarkupMultiline _remarks; 362 363 public ControlSelection() { 364 } 365 366 public MarkupMultiline getDescription() { 367 return _description; 368 } 369 370 public void setDescription(MarkupMultiline value) { 371 _description = value; 372 } 373 374 public List<Property> getProps() { 375 return _props; 376 } 377 378 public void setProps(List<Property> value) { 379 _props = value; 380 } 381 382 /** 383 * Add a new {@link Property} item to the underlying collection. 384 * @param item the item to add 385 * @return {@code true} 386 */ 387 public boolean addProp(Property item) { 388 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 389 if (_props == null) { 390 _props = new LinkedList<>(); 391 } 392 return _props.add(value); 393 } 394 395 /** 396 * Remove the first matching {@link Property} item from the underlying collection. 397 * @param item the item to remove 398 * @return {@code true} if the item was removed or {@code false} otherwise 399 */ 400 public boolean removeProp(Property item) { 401 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 402 return _props == null ? false : _props.remove(value); 403 } 404 405 public List<Link> getLinks() { 406 return _links; 407 } 408 409 public void setLinks(List<Link> value) { 410 _links = value; 411 } 412 413 /** 414 * Add a new {@link Link} item to the underlying collection. 415 * @param item the item to add 416 * @return {@code true} 417 */ 418 public boolean addLink(Link item) { 419 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 420 if (_links == null) { 421 _links = new LinkedList<>(); 422 } 423 return _links.add(value); 424 } 425 426 /** 427 * Remove the first matching {@link Link} item from the underlying collection. 428 * @param item the item to remove 429 * @return {@code true} if the item was removed or {@code false} otherwise 430 */ 431 public boolean removeLink(Link item) { 432 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 433 return _links == null ? false : _links.remove(value); 434 } 435 436 public IncludeAll getIncludeAll() { 437 return _includeAll; 438 } 439 440 public void setIncludeAll(IncludeAll value) { 441 _includeAll = value; 442 } 443 444 public List<SelectControlById> getIncludeControls() { 445 return _includeControls; 446 } 447 448 public void setIncludeControls(List<SelectControlById> value) { 449 _includeControls = value; 450 } 451 452 /** 453 * Add a new {@link SelectControlById} item to the underlying collection. 454 * @param item the item to add 455 * @return {@code true} 456 */ 457 public boolean addIncludeControl(SelectControlById item) { 458 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 459 if (_includeControls == null) { 460 _includeControls = new LinkedList<>(); 461 } 462 return _includeControls.add(value); 463 } 464 465 /** 466 * Remove the first matching {@link SelectControlById} item from the underlying collection. 467 * @param item the item to remove 468 * @return {@code true} if the item was removed or {@code false} otherwise 469 */ 470 public boolean removeIncludeControl(SelectControlById item) { 471 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 472 return _includeControls == null ? false : _includeControls.remove(value); 473 } 474 475 public List<SelectControlById> getExcludeControls() { 476 return _excludeControls; 477 } 478 479 public void setExcludeControls(List<SelectControlById> value) { 480 _excludeControls = value; 481 } 482 483 /** 484 * Add a new {@link SelectControlById} item to the underlying collection. 485 * @param item the item to add 486 * @return {@code true} 487 */ 488 public boolean addExcludeControl(SelectControlById item) { 489 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 490 if (_excludeControls == null) { 491 _excludeControls = new LinkedList<>(); 492 } 493 return _excludeControls.add(value); 494 } 495 496 /** 497 * Remove the first matching {@link SelectControlById} item from the underlying collection. 498 * @param item the item to remove 499 * @return {@code true} if the item was removed or {@code false} otherwise 500 */ 501 public boolean removeExcludeControl(SelectControlById item) { 502 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 503 return _excludeControls == null ? false : _excludeControls.remove(value); 504 } 505 506 public MarkupMultiline getRemarks() { 507 return _remarks; 508 } 509 510 public void setRemarks(MarkupMultiline value) { 511 _remarks = value; 512 } 513 514 @Override 515 public String toString() { 516 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString(); 517 } 518 } 519 520 /** 521 * Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan. 522 */ 523 @MetaschemaAssembly( 524 formalName = "Referenced Control Objectives", 525 description = "Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan.", 526 name = "control-objective-selection", 527 metaschema = OscalAssessmentCommonMetaschema.class, 528 remarks = "The `include-all` field, specifies all control objectives for any in-scope control. In-scope controls are defined in the `control-selection`.\n" 529 + "\n" 530 + "Any control objective specified within `exclude-controls` must first be within a range of explicitly included control objectives, via `include-objectives` or `include-all`." 531 ) 532 public static class ControlObjectiveSelection { 533 /** 534 * "A human-readable description of this collection of control objectives." 535 */ 536 @BoundField( 537 formalName = "Control Objectives Description", 538 description = "A human-readable description of this collection of control objectives.", 539 useName = "description" 540 ) 541 @BoundFieldValue( 542 typeAdapter = MarkupMultilineAdapter.class 543 ) 544 private MarkupMultiline _description; 545 546 @BoundAssembly( 547 formalName = "Property", 548 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 549 useName = "prop", 550 maxOccurs = -1 551 ) 552 @GroupAs( 553 name = "props", 554 inJson = JsonGroupAsBehavior.LIST 555 ) 556 private List<Property> _props; 557 558 @BoundAssembly( 559 formalName = "Link", 560 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 561 useName = "link", 562 maxOccurs = -1 563 ) 564 @GroupAs( 565 name = "links", 566 inJson = JsonGroupAsBehavior.LIST 567 ) 568 private List<Link> _links; 569 570 @BoundAssembly( 571 formalName = "Include All", 572 description = "Include all controls from the imported catalog or profile resources.", 573 useName = "include-all", 574 minOccurs = 1 575 ) 576 private IncludeAll _includeAll; 577 578 @BoundAssembly( 579 formalName = "Select Objective", 580 description = "Used to select a control objective for inclusion/exclusion based on the control objective's identifier.", 581 useName = "include-objective", 582 minOccurs = 1, 583 maxOccurs = -1, 584 remarks = "Used to select a control objective for inclusion by the control objective's identifier." 585 ) 586 @GroupAs( 587 name = "include-objectives", 588 inJson = JsonGroupAsBehavior.LIST 589 ) 590 private List<SelectObjectiveById> _includeObjectives; 591 592 @BoundAssembly( 593 formalName = "Select Objective", 594 description = "Used to select a control objective for inclusion/exclusion based on the control objective's identifier.", 595 useName = "exclude-objective", 596 maxOccurs = -1, 597 remarks = "Used to select a control objective for exclusion by the control objective's identifier." 598 ) 599 @GroupAs( 600 name = "exclude-objectives", 601 inJson = JsonGroupAsBehavior.LIST 602 ) 603 private List<SelectObjectiveById> _excludeObjectives; 604 605 @BoundField( 606 formalName = "Remarks", 607 description = "Additional commentary about the containing object.", 608 useName = "remarks" 609 ) 610 @BoundFieldValue( 611 typeAdapter = MarkupMultilineAdapter.class 612 ) 613 private MarkupMultiline _remarks; 614 615 public ControlObjectiveSelection() { 616 } 617 618 public MarkupMultiline getDescription() { 619 return _description; 620 } 621 622 public void setDescription(MarkupMultiline value) { 623 _description = value; 624 } 625 626 public List<Property> getProps() { 627 return _props; 628 } 629 630 public void setProps(List<Property> value) { 631 _props = value; 632 } 633 634 /** 635 * Add a new {@link Property} item to the underlying collection. 636 * @param item the item to add 637 * @return {@code true} 638 */ 639 public boolean addProp(Property item) { 640 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 641 if (_props == null) { 642 _props = new LinkedList<>(); 643 } 644 return _props.add(value); 645 } 646 647 /** 648 * Remove the first matching {@link Property} item from the underlying collection. 649 * @param item the item to remove 650 * @return {@code true} if the item was removed or {@code false} otherwise 651 */ 652 public boolean removeProp(Property item) { 653 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 654 return _props == null ? false : _props.remove(value); 655 } 656 657 public List<Link> getLinks() { 658 return _links; 659 } 660 661 public void setLinks(List<Link> value) { 662 _links = value; 663 } 664 665 /** 666 * Add a new {@link Link} item to the underlying collection. 667 * @param item the item to add 668 * @return {@code true} 669 */ 670 public boolean addLink(Link item) { 671 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 672 if (_links == null) { 673 _links = new LinkedList<>(); 674 } 675 return _links.add(value); 676 } 677 678 /** 679 * Remove the first matching {@link Link} item from the underlying collection. 680 * @param item the item to remove 681 * @return {@code true} if the item was removed or {@code false} otherwise 682 */ 683 public boolean removeLink(Link item) { 684 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 685 return _links == null ? false : _links.remove(value); 686 } 687 688 public IncludeAll getIncludeAll() { 689 return _includeAll; 690 } 691 692 public void setIncludeAll(IncludeAll value) { 693 _includeAll = value; 694 } 695 696 public List<SelectObjectiveById> getIncludeObjectives() { 697 return _includeObjectives; 698 } 699 700 public void setIncludeObjectives(List<SelectObjectiveById> value) { 701 _includeObjectives = value; 702 } 703 704 /** 705 * Add a new {@link SelectObjectiveById} item to the underlying collection. 706 * @param item the item to add 707 * @return {@code true} 708 */ 709 public boolean addIncludeObjective(SelectObjectiveById item) { 710 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 711 if (_includeObjectives == null) { 712 _includeObjectives = new LinkedList<>(); 713 } 714 return _includeObjectives.add(value); 715 } 716 717 /** 718 * Remove the first matching {@link SelectObjectiveById} item from the underlying collection. 719 * @param item the item to remove 720 * @return {@code true} if the item was removed or {@code false} otherwise 721 */ 722 public boolean removeIncludeObjective(SelectObjectiveById item) { 723 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 724 return _includeObjectives == null ? false : _includeObjectives.remove(value); 725 } 726 727 public List<SelectObjectiveById> getExcludeObjectives() { 728 return _excludeObjectives; 729 } 730 731 public void setExcludeObjectives(List<SelectObjectiveById> value) { 732 _excludeObjectives = value; 733 } 734 735 /** 736 * Add a new {@link SelectObjectiveById} item to the underlying collection. 737 * @param item the item to add 738 * @return {@code true} 739 */ 740 public boolean addExcludeObjective(SelectObjectiveById item) { 741 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 742 if (_excludeObjectives == null) { 743 _excludeObjectives = new LinkedList<>(); 744 } 745 return _excludeObjectives.add(value); 746 } 747 748 /** 749 * Remove the first matching {@link SelectObjectiveById} item from the underlying collection. 750 * @param item the item to remove 751 * @return {@code true} if the item was removed or {@code false} otherwise 752 */ 753 public boolean removeExcludeObjective(SelectObjectiveById item) { 754 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 755 return _excludeObjectives == null ? false : _excludeObjectives.remove(value); 756 } 757 758 public MarkupMultiline getRemarks() { 759 return _remarks; 760 } 761 762 public void setRemarks(MarkupMultiline value) { 763 _remarks = value; 764 } 765 766 @Override 767 public String toString() { 768 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString(); 769 } 770 } 771}