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

com.undefinedlabs.scope.settings.ScopeSettingsFactoryResolver Maven / Gradle / Ivy

package com.undefinedlabs.scope.settings;

import org.apache.commons.lang3.StringUtils;
import com.undefinedlabs.scope.settings.factory.AppVeyorScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.BitBucketScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.BuildkiteScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.CircleCiScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.GitHubScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.GitLabScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.JenkinsScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.LocalScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.TeamCityScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.TfsScopeSettingsFactory;
import com.undefinedlabs.scope.settings.factory.TravisScopeSettingsFactory;
import java.util.HashMap;
import java.util.Map;

public class ScopeSettingsFactoryResolver {

  private final ScopeSettingsFactory selectedFactory;

  public ScopeSettingsFactoryResolver(final ScopeSettingsFactoryResolverOpts opts) {
    final Map factories = new HashMap<>();
    factories.put(TravisScopeSettingsFactory.CI_PROVIDER, new TravisScopeSettingsFactory(opts));
    factories.put(CircleCiScopeSettingsFactory.CI_PROVIDER, new CircleCiScopeSettingsFactory(opts));
    factories.put(JenkinsScopeSettingsFactory.CI_PROVIDER, new JenkinsScopeSettingsFactory(opts));
    factories.put(GitLabScopeSettingsFactory.CI_PROVIDER, new GitLabScopeSettingsFactory(opts));
    factories.put(
        BitBucketScopeSettingsFactory.CI_PROVIDER, new BitBucketScopeSettingsFactory(opts));
    factories.put(TfsScopeSettingsFactory.CI_PROVIDER, new TfsScopeSettingsFactory(opts));
    factories.put(AppVeyorScopeSettingsFactory.CI_PROVIDER, new AppVeyorScopeSettingsFactory(opts));
    factories.put(GitHubScopeSettingsFactory.CI_PROVIDER, new GitHubScopeSettingsFactory(opts));
    factories.put(TeamCityScopeSettingsFactory.CI_PROVIDER, new TeamCityScopeSettingsFactory(opts));
    factories.put(
        BuildkiteScopeSettingsFactory.CI_PROVIDER, new BuildkiteScopeSettingsFactory(opts));

    final String selector = getSelector(opts.getExtProperties());
    selectedFactory =
        selector != null && factories.get(selector) != null
            ? factories.get(selector)
            : new LocalScopeSettingsFactory(opts);
  }

  public ScopeSettingsFactory get() {
    return selectedFactory;
  }

  private String getSelector(final ScopeExtProperties properties) {
    String selector;
    selector =
        StringUtils.isNotEmpty(properties.get(TravisScopeSettingsFactory.ENV_PROP_SELECTOR))
            ? TravisScopeSettingsFactory.CI_PROVIDER
            : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(
                    properties.get(CircleCiScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? CircleCiScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(
                    properties.get(JenkinsScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? JenkinsScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(properties.get(GitLabScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? GitLabScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(
                    properties.get(BitBucketScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? BitBucketScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(properties.get(TfsScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? TfsScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(
                    properties.get(AppVeyorScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? AppVeyorScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(properties.get(GitHubScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? GitHubScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(
                    properties.get(TeamCityScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? TeamCityScopeSettingsFactory.CI_PROVIDER
                : null;
    selector =
        (selector != null)
            ? selector
            : (StringUtils.isNotEmpty(
                    properties.get(BuildkiteScopeSettingsFactory.ENV_PROP_SELECTOR)))
                ? BuildkiteScopeSettingsFactory.CI_PROVIDER
                : null;
    return selector;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy