All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.nemerosa.ontrack.extension.issues.support.IssueServiceRegistryImpl Maven / Gradle / Ivy

There is a newer version: 4.4.5
Show newest version
package net.nemerosa.ontrack.extension.issues.support;

import net.nemerosa.ontrack.extension.api.ExtensionManager;
import net.nemerosa.ontrack.extension.issues.IssueServiceExtension;
import net.nemerosa.ontrack.extension.issues.IssueServiceRegistry;
import net.nemerosa.ontrack.extension.issues.model.ConfiguredIssueService;
import net.nemerosa.ontrack.extension.issues.model.IssueServiceConfiguration;
import net.nemerosa.ontrack.extension.issues.model.IssueServiceConfigurationIdentifier;
import net.nemerosa.ontrack.extension.issues.model.IssueServiceConfigurationRepresentation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;
import java.util.stream.Collectors;

@Service
public class IssueServiceRegistryImpl implements IssueServiceRegistry {

    private final ExtensionManager extensionManager;

    @Autowired
    public IssueServiceRegistryImpl(ExtensionManager extensionManager) {
        this.extensionManager = extensionManager;
    }

    protected Map getIssueServiceExtensionMap() {
        return extensionManager.getExtensions(IssueServiceExtension.class).stream()
                .collect(Collectors.toMap(
                                IssueServiceExtension::getId,
                                x -> x
                        )
                );
    }

    @Override
    public Collection getIssueServices() {
        return getIssueServiceExtensionMap().values();
    }

    @Override
    public IssueServiceExtension getIssueService(String id) {
        return getOptionalIssueService(id)
                .orElseThrow(() -> new IssueServiceNotAvailableException(id));
    }

    @Override
    public Optional getOptionalIssueService(String id) {
        return Optional.ofNullable(getIssueServiceExtensionMap().get(id));
    }

    @Override
    public List getAvailableIssueServiceConfigurations() {
        List issueServiceConfigurationRepresentations = new ArrayList<>();
        for (IssueServiceExtension issueServiceExtension : getIssueServiceExtensionMap().values()) {
            List configurationList = issueServiceExtension.getConfigurationList();
            for (IssueServiceConfiguration issueServiceConfiguration : configurationList) {
                issueServiceConfigurationRepresentations.add(
                        IssueServiceConfigurationRepresentation.of(
                                issueServiceExtension,
                                issueServiceConfiguration
                        )
                );
            }
        }
        return issueServiceConfigurationRepresentations;
    }

    @Override
    public IssueServiceConfiguration getIssueServiceConfigurationById(String id) {
        if (StringUtils.isBlank(id)) {
            return null;
        } else {
            return getIssueServiceConfigurationById(IssueServiceConfigurationIdentifier.parse(id));
        }
    }

    @Override
    public ConfiguredIssueService getConfiguredIssueService(String issueServiceConfigurationIdentifier) {
        // Parsing
        IssueServiceConfigurationIdentifier identifier = IssueServiceConfigurationIdentifier.parse(issueServiceConfigurationIdentifier);
        if (identifier != null) {
            Optional issueService = getOptionalIssueService(identifier.getServiceId());
            if (issueService.isPresent()) {
                return new ConfiguredIssueService(
                        issueService.get(),
                        issueService.get().getConfigurationByName(identifier.getName())
                );
            } else {
                return null;
            }
        } else {
            return null;
        }
    }

    private IssueServiceConfiguration getIssueServiceConfigurationById(IssueServiceConfigurationIdentifier identifier) {
        Optional issueService = getOptionalIssueService(identifier.getServiceId());
        if (issueService.isPresent()) {
            return issueService.get().getConfigurationByName(identifier.getName());
        } else {
            return null;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy