Search in sources :

Example 1 with BuildFilterProviderData

use of net.nemerosa.ontrack.model.buildfilter.BuildFilterProviderData in project ontrack by nemerosa.

the class GQLRootQueryBuilds method buildFetcher.

private DataFetcher buildFetcher() {
    return environment -> {
        Integer id = environment.getArgument("id");
        Optional<String> oProject = GraphqlUtils.getStringArgument(environment, PROJECT_ARGUMENT);
        Optional<String> oBranch = GraphqlUtils.getStringArgument(environment, BRANCH_ARGUMENT);
        Object branchFilter = environment.getArgument(BUILD_BRANCH_FILTER_ARGUMENT);
        Object projectFilter = environment.getArgument(BUILD_PROJECT_FILTER_ARGUMENT);
        // Per ID
        if (id != null) {
            checkArgList(environment, "id");
            return Collections.singletonList(structureService.getBuild(ID.of(id)));
        } else // Per project
        if (oProject.isPresent()) {
            // ... and branch
            if (oBranch.isPresent()) {
                // Gets the branch
                Branch branch = structureService.findBranchByName(oProject.get(), oBranch.get()).orElseThrow(() -> new BranchNotFoundException(oProject.get(), oBranch.get()));
                // Configurable branch filter
                BuildFilterProviderData<?> filter = inputBuildStandardFilter.convert(branchFilter);
                // Runs the filter
                return filter.filterBranchBuilds(branch);
            } else // Project only
            {
                // Gets the project
                Project project = structureService.findProjectByName(oProject.get()).orElseThrow(() -> new ProjectNotFoundException(oProject.get()));
                // Build search form as argument
                BuildSearchForm form = inputBuildSearchForm.convert(projectFilter);
                return structureService.buildSearch(project.getId(), form);
            }
        } else // Branch filter only - not accepted
        if (branchFilter != null) {
            throw new IllegalStateException(String.format("%s must be used together with %s", BUILD_BRANCH_FILTER_ARGUMENT, BRANCH_ARGUMENT));
        } else // Project filter only - not accepted
        if (projectFilter != null) {
            throw new IllegalStateException(String.format("%s must be used together with %s", BUILD_PROJECT_FILTER_ARGUMENT, PROJECT_ARGUMENT));
        } else // None
        {
            return Collections.emptyList();
        }
    };
}
Also used : GraphQLString(graphql.Scalars.GraphQLString) ProjectNotFoundException(net.nemerosa.ontrack.model.exceptions.ProjectNotFoundException) GraphQLFieldDefinition(graphql.schema.GraphQLFieldDefinition) BuildFilterProviderData(net.nemerosa.ontrack.model.buildfilter.BuildFilterProviderData) Autowired(org.springframework.beans.factory.annotation.Autowired) GraphQLArgument.newArgument(graphql.schema.GraphQLArgument.newArgument) GraphqlUtils.stdList(net.nemerosa.ontrack.graphql.support.GraphqlUtils.stdList) GraphQLFieldDefinition.newFieldDefinition(graphql.schema.GraphQLFieldDefinition.newFieldDefinition) GraphqlUtils.checkArgList(net.nemerosa.ontrack.graphql.support.GraphqlUtils.checkArgList) Component(org.springframework.stereotype.Component) net.nemerosa.ontrack.model.structure(net.nemerosa.ontrack.model.structure) DataFetcher(graphql.schema.DataFetcher) Optional(java.util.Optional) GraphQLInt(graphql.Scalars.GraphQLInt) Collections(java.util.Collections) GraphqlUtils(net.nemerosa.ontrack.graphql.support.GraphqlUtils) BranchNotFoundException(net.nemerosa.ontrack.model.exceptions.BranchNotFoundException) ProjectNotFoundException(net.nemerosa.ontrack.model.exceptions.ProjectNotFoundException) Optional(java.util.Optional) BranchNotFoundException(net.nemerosa.ontrack.model.exceptions.BranchNotFoundException)

Aggregations

GraphQLInt (graphql.Scalars.GraphQLInt)1 GraphQLString (graphql.Scalars.GraphQLString)1 DataFetcher (graphql.schema.DataFetcher)1 GraphQLArgument.newArgument (graphql.schema.GraphQLArgument.newArgument)1 GraphQLFieldDefinition (graphql.schema.GraphQLFieldDefinition)1 GraphQLFieldDefinition.newFieldDefinition (graphql.schema.GraphQLFieldDefinition.newFieldDefinition)1 Collections (java.util.Collections)1 Optional (java.util.Optional)1 GraphqlUtils (net.nemerosa.ontrack.graphql.support.GraphqlUtils)1 GraphqlUtils.checkArgList (net.nemerosa.ontrack.graphql.support.GraphqlUtils.checkArgList)1 GraphqlUtils.stdList (net.nemerosa.ontrack.graphql.support.GraphqlUtils.stdList)1 BuildFilterProviderData (net.nemerosa.ontrack.model.buildfilter.BuildFilterProviderData)1 BranchNotFoundException (net.nemerosa.ontrack.model.exceptions.BranchNotFoundException)1 ProjectNotFoundException (net.nemerosa.ontrack.model.exceptions.ProjectNotFoundException)1 net.nemerosa.ontrack.model.structure (net.nemerosa.ontrack.model.structure)1 Autowired (org.springframework.beans.factory.annotation.Autowired)1 Component (org.springframework.stereotype.Component)1