Search in sources :

Example 1 with CustomFieldOperation

use of com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation in project synopsys-detect by blackducksoftware.

the class UpdateCustomFieldsOperation method pairOperationFromViews.

private List<CustomFieldOperation> pairOperationFromViews(List<CustomFieldElement> elements, List<CustomFieldView> views, String targetName, BlackDuckApiClient blackDuckService) throws DetectUserFriendlyException {
    List<CustomFieldOperation> operations = new ArrayList<>();
    for (CustomFieldElement element : elements) {
        Optional<CustomFieldView> fieldView = views.stream().filter(view -> view.getLabel().equals(element.getLabel())).findFirst();
        if (!fieldView.isPresent()) {
            throw new DetectUserFriendlyException(String.format("Unable to find custom field view with label '%s' on the %s. Ensure it exists.", element.getLabel(), targetName), ExitCodeType.FAILURE_BLACKDUCK_FEATURE_ERROR);
        }
        List<String> values = new ArrayList<>();
        List<CustomFieldOptionView> options = retrieveCustomFieldOptions(fieldView.get(), blackDuckService);
        if (options.isEmpty()) {
            logger.debug("Did not find any associated options for this field, will use raw values.");
            values = element.getValue();
        } else {
            logger.debug("Found one or more options for this field. Will attempt to map given values to fields..");
            for (String value : element.getValue()) {
                Optional<CustomFieldOptionView> option = options.stream().filter(it -> it.getLabel().equals(value)).findFirst();
                if (option.isPresent()) {
                    values.add(option.get().getHref().string());
                } else {
                    throw new DetectUserFriendlyException(String.format("Unable to update custom field '%s', unable to find option for value '%s'", element.getLabel(), value), ExitCodeType.FAILURE_BLACKDUCK_FEATURE_ERROR);
                }
            }
        }
        operations.add(new CustomFieldOperation(fieldView.get(), values));
    }
    return operations;
}
Also used : DetectUserFriendlyException(com.synopsys.integration.detect.configuration.DetectUserFriendlyException) CustomFieldElement(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldElement) ExitCodeType(com.synopsys.integration.detect.configuration.enumeration.ExitCodeType) IntegrationException(com.synopsys.integration.exception.IntegrationException) Logger(org.slf4j.Logger) LoggerFactory(org.slf4j.LoggerFactory) CustomFieldOperation(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation) ProjectVersionWrapper(com.synopsys.integration.blackduck.service.model.ProjectVersionWrapper) ArrayList(java.util.ArrayList) LinkMultipleResponses(com.synopsys.integration.blackduck.api.core.response.LinkMultipleResponses) CustomFieldDocument(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldDocument) CustomFieldOptionView(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOptionView) List(java.util.List) CustomFieldView(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldView) BlackDuckView(com.synopsys.integration.blackduck.api.core.BlackDuckView) Optional(java.util.Optional) NoSuchElementException(java.util.NoSuchElementException) Collections(java.util.Collections) BlackDuckApiClient(com.synopsys.integration.blackduck.service.BlackDuckApiClient) CustomFieldView(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldView) ArrayList(java.util.ArrayList) CustomFieldOperation(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation) CustomFieldOptionView(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOptionView) CustomFieldElement(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldElement) DetectUserFriendlyException(com.synopsys.integration.detect.configuration.DetectUserFriendlyException)

Example 2 with CustomFieldOperation

use of com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation in project synopsys-detect by blackducksoftware.

the class UpdateCustomFieldsOperation method executeCustomFieldOperations.

// radio, multiselect, and dropdown
private void executeCustomFieldOperations(List<CustomFieldOperation> operations, BlackDuckApiClient blackDuckService) throws DetectUserFriendlyException {
    for (CustomFieldOperation operation : operations) {
        CustomFieldView fieldView = operation.customField;
        fieldView.setValues(operation.values);
        try {
            blackDuckService.put(fieldView);
        } catch (IntegrationException e) {
            throw new DetectUserFriendlyException(String.format("Unable to update custom field label with name '%s'", operation.customField.getLabel()), e, ExitCodeType.FAILURE_BLACKDUCK_FEATURE_ERROR);
        }
    }
}
Also used : CustomFieldView(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldView) DetectUserFriendlyException(com.synopsys.integration.detect.configuration.DetectUserFriendlyException) IntegrationException(com.synopsys.integration.exception.IntegrationException) CustomFieldOperation(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation)

Example 3 with CustomFieldOperation

use of com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation in project synopsys-detect by blackducksoftware.

the class UpdateCustomFieldsOperation method updateCustomFields.

public void updateCustomFields(ProjectVersionWrapper projectVersionWrapper, CustomFieldDocument customFieldDocument) throws DetectUserFriendlyException {
    logger.debug("Will update the following custom fields and values.");
    for (CustomFieldElement element : customFieldDocument.getProject()) {
        logger.debug(String.format("Project field '%s' will be set to '%s'.", element.getLabel(), String.join(",", element.getValue())));
    }
    for (CustomFieldElement element : customFieldDocument.getVersion()) {
        logger.debug(String.format("Version field '%s' will be set to '%s'.", element.getLabel(), String.join(",", element.getValue())));
    }
    List<CustomFieldOperation> customFieldOperations = determineOperations(customFieldDocument, projectVersionWrapper, blackDuckService);
    executeCustomFieldOperations(customFieldOperations, blackDuckService);
    logger.info("Successfully updated (" + (customFieldDocument.getVersion().size() + customFieldDocument.getProject().size()) + ") custom fields.");
}
Also used : CustomFieldElement(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldElement) CustomFieldOperation(com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation)

Aggregations

CustomFieldOperation (com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOperation)3 DetectUserFriendlyException (com.synopsys.integration.detect.configuration.DetectUserFriendlyException)2 CustomFieldElement (com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldElement)2 CustomFieldView (com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldView)2 IntegrationException (com.synopsys.integration.exception.IntegrationException)2 BlackDuckView (com.synopsys.integration.blackduck.api.core.BlackDuckView)1 LinkMultipleResponses (com.synopsys.integration.blackduck.api.core.response.LinkMultipleResponses)1 BlackDuckApiClient (com.synopsys.integration.blackduck.service.BlackDuckApiClient)1 ProjectVersionWrapper (com.synopsys.integration.blackduck.service.model.ProjectVersionWrapper)1 ExitCodeType (com.synopsys.integration.detect.configuration.enumeration.ExitCodeType)1 CustomFieldDocument (com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldDocument)1 CustomFieldOptionView (com.synopsys.integration.detect.workflow.blackduck.project.customfields.CustomFieldOptionView)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 List (java.util.List)1 NoSuchElementException (java.util.NoSuchElementException)1 Optional (java.util.Optional)1 Logger (org.slf4j.Logger)1 LoggerFactory (org.slf4j.LoggerFactory)1