package net.thucydides.core.requirements.reports; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import net.thucydides.core.guice.Injectors; import net.thucydides.core.issues.IssueTracking; import net.thucydides.core.reports.TestOutcomes; import net.thucydides.core.requirements.RequirementsTagProvider; import net.thucydides.core.requirements.model.Requirement; import net.thucydides.core.util.EnvironmentVariables; import java.util.List; public class RequirmentsOutcomeFactory { private final List<RequirementsTagProvider> requirementsTagProviders; private final IssueTracking issueTracking; private final EnvironmentVariables environmentVariables; public RequirmentsOutcomeFactory(List<RequirementsTagProvider> requirementsTagProviders, IssueTracking issueTracking) { this(requirementsTagProviders, issueTracking, Injectors.getInjector().getProvider(EnvironmentVariables.class).get() ); } public RequirmentsOutcomeFactory(List<RequirementsTagProvider> requirementsTagProviders, IssueTracking issueTracking, EnvironmentVariables environmentVariables) { this.requirementsTagProviders = ImmutableList.copyOf(requirementsTagProviders); this.issueTracking = issueTracking; this.environmentVariables = environmentVariables; } public RequirementsOutcomes buildRequirementsOutcomesFrom(TestOutcomes testOutcomes) { List<Requirement> allRequirements = Lists.newArrayList(); for(RequirementsTagProvider tagProvider : requirementsTagProviders) { allRequirements.addAll(tagProvider.getRequirements()); } return new RequirementsOutcomes(allRequirements, testOutcomes, issueTracking, environmentVariables, requirementsTagProviders); } public RequirementsOutcomes buildRequirementsOutcomesFrom(Requirement parentRequirement, TestOutcomes testOutcomes) { List<Requirement> childRequirements = parentRequirement.getChildren(); return new RequirementsOutcomes(parentRequirement, childRequirements, testOutcomes, issueTracking, environmentVariables, requirementsTagProviders); } }