public boolean excludeUntestedChildrenOfRequirementOfType(String type) { if (excludedTypes == EXCLUDE_NONE) { return false; } int requirementLevel = requirementsConfiguration.getRequirementTypes().indexOf(type.toLowerCase()); String childRequirementType = requirementsConfiguration.getRequirementType(requirementLevel + 1); return excludedTypes.contains(childRequirementType); }
private Requirement requirementDefinedByNarrativeAt(String path, Collection<Requirement> knownRequirements) { List<String> pathElements = elementsOf(path, rootPackage); List<String> featurePathElements = allButLast(pathElements); String featureName = humanize(lastOf(featurePathElements)); String parent = null; if (featurePathElements.size() >= 2) { parent = humanize(secondLastOf(featurePathElements)); } int startFromRequirementLevel = requirementsConfiguration.startLevelForADepthOf(requirementsDepth); String typeByLevel = requirementsConfiguration.getRequirementType(startFromRequirementLevel + featurePathElements.size() - 1); String type = PackageInfoNarrative.type().definedInPath(path).orElse(typeByLevel); Optional<Requirement> knownMatchingRequirement = findMatchingRequirementWithName(knownRequirements, featureName, type); if (knownMatchingRequirement.isPresent()) { knownRequirements.remove(knownMatchingRequirement); } return knownMatchingRequirement.orElse(Requirement.named(featureName).withTypeOf(type)) .withNarrative(PackageInfoNarrative.text().definedInPath(path).orElse("")) .withParent(parent) .withPath(Joiner.on("/").join(featurePathElements)); }
public void to(Collection<Requirement> allRequirements) { List<String> parentElements = PackageInfoClass.isDefinedIn(path) ? allButLast(allButLast(elementsOf(path, rootPackage))) : allButLast(elementsOf(path, rootPackage)); int startFromRequirementLevel = getRequirementTypes().size() - requirementsDepth; int level = startFromRequirementLevel; Requirement parent = null; StringBuilder fullPath = new StringBuilder(rootPackage); for (String pathElement : parentElements) { String type = requirementsConfiguration.getRequirementType(level++); fullPath.append(".").append(pathElement); Requirement nextRequirement; String parentName = (parent != null) ? parent.getName() : null; if (requirementExistsCalled(humanize(pathElement), allRequirements)) { nextRequirement = requirementCalled(humanize(pathElement), allRequirements).withParent(parentName); } else { String narrativeText = PackageInfoNarrative.text().definedInPath(fullPath.toString()).orElse(NarrativeTitle.definedIn(fullPath.toString(), type)); String narrativeType = PackageInfoNarrative.type().definedInPath(fullPath.toString()).orElse(type); nextRequirement = (Requirement.named(humanize(pathElement)).withType(narrativeType).withNarrative(narrativeText)).withParent(parentName); allRequirements.add(nextRequirement); } if (parent != null) { addChild(nextRequirement).toParent(parent).in(allRequirements); } parent = nextRequirement; } addChild(leafRequirement).toParent(parent).in(allRequirements); }