package pl.touk.sputnik.connector; import org.jetbrains.annotations.NotNull; import pl.touk.sputnik.configuration.Configuration; import pl.touk.sputnik.configuration.GeneralOptionNotSupportedException; import pl.touk.sputnik.connector.gerrit.GerritFacadeBuilder; import pl.touk.sputnik.connector.github.GithubFacadeBuilder; import pl.touk.sputnik.connector.saas.SaasFacadeBuilder; import pl.touk.sputnik.connector.stash.StashFacadeBuilder; public class ConnectorFacadeFactory { public static final ConnectorFacadeFactory INSTANCE = new ConnectorFacadeFactory(); GerritFacadeBuilder gerritFacadeBuilder = new GerritFacadeBuilder(); StashFacadeBuilder stashFacadeBuilder = new StashFacadeBuilder(); GithubFacadeBuilder githubFacadeBuilder = new GithubFacadeBuilder(); SaasFacadeBuilder saasFacadeBuilder = new SaasFacadeBuilder(); @NotNull public ConnectorFacade build(@NotNull ConnectorType type, Configuration configuration) { switch (type) { case STASH: return stashFacadeBuilder.build(configuration); case GERRIT: return gerritFacadeBuilder.build(configuration); case GITHUB: return githubFacadeBuilder.build(configuration); case SAAS: return saasFacadeBuilder.build(configuration); default: throw new GeneralOptionNotSupportedException("Connector " + type.getName() + " is not supported"); } } }