public static RequirementsList of(List<Requirement> requirements) { return new RequirementsList(requirements); }
private java.util.Optional<Requirement> uniqueRequirementWithName(String name) { return RequirementsList.of(getRequirements()).findByUniqueName(name); }
public List<Requirement> asFlattenedList() { List<Requirement> flattenedRequirements = new ArrayList<>(); for(Requirement requirement : requirements) { flattenedRequirements.add(requirement); if (requirement.hasChildren()) { flattenedRequirements.addAll(RequirementsList.of(requirement.getChildren()).asFlattenedList()); } } return flattenedRequirements; }
public java.util.Optional<Requirement> findByUniqueName(String name) { Requirement matchingRequirement = null; for(Requirement requirement : asFlattenedList()) { if (requirement.getName().equalsIgnoreCase(name)) { if (matchingRequirement != null) { return Optional.empty(); } matchingRequirement = requirement; } } return Optional.ofNullable(matchingRequirement); } }
public Optional<Requirement> getParentRequirementOf(Requirement requirement) { for (Requirement candidateParent : RequirementsList.of(getRequirements()).asFlattenedList()) { if (candidateParent.getChildren().contains(requirement)) { return Optional.of(candidateParent); } } return Optional.empty(); }