com.streamreduce.connections.ConnectionProviderFactory.java Source code

Java tutorial

Introduction

Here is the source code for com.streamreduce.connections.ConnectionProviderFactory.java

Source

/*
 * Copyright 2012 Nodeable Inc
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

package com.streamreduce.connections;

import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.streamreduce.core.service.OAuthTokenCacheService;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Nullable;

@Service("connectionProviderFactory")
public class ConnectionProviderFactory implements InitializingBean {

    //cached sets of references to different provider types
    private ImmutableSet<ConnectionProvider> allConnectionProviders;
    private ImmutableSet<OAuthEnabledConnectionProvider> allOauthEnabledConnectionProviders;
    private ImmutableSet<ExternalIntegrationConnectionProvider> allExternalIntegrationConnectionProviders;
    private ImmutableSet<PushConnectionProvider> allPushConnectionProviders;

    @Autowired
    OAuthTokenCacheService oAuthTokenCacheService;

    @Autowired
    private AWSCloudProvider awsCloudProvider;
    @Autowired
    private CustomProvider customProvider;
    @Autowired
    private GitHubProjectHostingProvider gitHubProjectHostingProvider;
    @Autowired
    private GoogleAnalyticsProvider googleAnalyticsProvider;
    @Autowired
    private JiraProjectHostingProvider jiraProjectHostingProvider;
    @Autowired
    private NagiosProvider nagiosProvider;
    @Autowired
    private PingdomProvider pingdomProvider;
    @Autowired
    private RssProvider rssProvider;
    @Autowired
    private TwitterProvider twitterProvider;
    @Autowired
    private WebHDFSProvider webHDFSProvider;

    @Override
    public void afterPropertiesSet() throws Exception {
        /*
           If new providers are introduced, add them to this Set, the rest of the constructor dynamically populates
           the other Sets.    Only include concrete providers here.
        */
        allConnectionProviders = new ImmutableSet.Builder<ConnectionProvider>().add(awsCloudProvider)
                .add(customProvider).add(gitHubProjectHostingProvider).add(googleAnalyticsProvider)
                .add(jiraProjectHostingProvider).add(nagiosProvider).add(pingdomProvider).add(rssProvider)
                .add(twitterProvider).add(webHDFSProvider).build();

        allOauthEnabledConnectionProviders = ImmutableSet
                .copyOf(Iterables.filter(allConnectionProviders, OAuthEnabledConnectionProvider.class));

        allExternalIntegrationConnectionProviders = ImmutableSet
                .copyOf(Iterables.filter(allConnectionProviders, ExternalIntegrationConnectionProvider.class));

        allPushConnectionProviders = ImmutableSet
                .copyOf(Iterables.filter(allConnectionProviders, PushConnectionProvider.class));
    }

    public ConnectionProvider connectionProviderFromId(final String providerId) {
        return Iterables.find(allConnectionProviders, new Predicate<ConnectionProvider>() {
            @Override
            public boolean apply(@Nullable ConnectionProvider connectionProvider) {
                return connectionProvider != null && connectionProvider.getId().equals(providerId);
            }
        });
    }

    public OAuthEnabledConnectionProvider oauthEnabledConnectionProviderFromId(final String providerId) {
        return Iterables.find(allOauthEnabledConnectionProviders, new Predicate<OAuthEnabledConnectionProvider>() {
            @Override
            public boolean apply(@Nullable OAuthEnabledConnectionProvider connectionProvider) {
                return connectionProvider != null && connectionProvider.getId().equals(providerId);
            }
        });
    }

    public ExternalIntegrationConnectionProvider externalIntegrationConnectionProviderFromId(
            final String providerId) {
        return Iterables.find(allExternalIntegrationConnectionProviders,
                new Predicate<ExternalIntegrationConnectionProvider>() {
                    @Override
                    public boolean apply(@Nullable ExternalIntegrationConnectionProvider connectionProvider) {
                        return connectionProvider != null && connectionProvider.getId().equals(providerId);
                    }
                });
    }

    public PushConnectionProvider pushConnectionProviderFromId(final String providerId) {
        return Iterables.tryFind(allPushConnectionProviders, new Predicate<PushConnectionProvider>() {
            @Override
            public boolean apply(@Nullable PushConnectionProvider connectionProvider) {
                return connectionProvider != null && connectionProvider.getId().equals(providerId);
            }
        }).orNull();
    }
}