Package in.partake.app

Source Code of in.partake.app.PartakeConfiguration

package in.partake.app;

import in.partake.base.PartakeException;
import in.partake.model.IPartakeDAOs;
import in.partake.model.access.DBAccess;
import in.partake.model.dao.DAOException;
import in.partake.model.dao.PartakeConnection;
import in.partake.model.dao.access.IConfigurationItemAccess;
import in.partake.model.dto.ConfigurationItem;
import in.partake.resource.ConfigurationKeyConstants;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import play.Configuration;
import play.Logger;

public class PartakeConfiguration {
    private static Configuration configuration;

    private static String toppath;
    private static String daemonEnabled;
    private static String twitterBotId;
    private static String luceneIndexDir;
    private static String googleAnalyticsId;
    private static String twitter4jConsumerKey;
    private static String twitter4jConsumerSecret;
    private static String adminScreenNames;
    private static Set<String> adminScreenNamesParsed;

    public static void set(Configuration conf) {
        // NOTE: set() will be called after loadFromDB(). So configuration file will override the items from DB.
        configuration = conf;

        if (configuration.getString(ConfigurationKeyConstants.TOPPATH) != null)
            toppath = configuration.getString(ConfigurationKeyConstants.TOPPATH);
        if (configuration.getString(ConfigurationKeyConstants.DAEMON_ENABLED) != null)
            daemonEnabled = configuration.getString(ConfigurationKeyConstants.DAEMON_ENABLED);
        if (configuration.getString(ConfigurationKeyConstants.TWITTER_BOT_ID) != null)
            twitterBotId = configuration.getString(ConfigurationKeyConstants.TWITTER_BOT_ID);
        if (configuration.getString(ConfigurationKeyConstants.LUCENE_INDEX_DIX) != null)
            luceneIndexDir = configuration.getString(ConfigurationKeyConstants.LUCENE_INDEX_DIX);
        if (configuration.getString(ConfigurationKeyConstants.GOOGLE_ANALYTICS_ID) != null)
            googleAnalyticsId = configuration.getString(ConfigurationKeyConstants.GOOGLE_ANALYTICS_ID);
        if (configuration.getString(ConfigurationKeyConstants.TWITTER4J_CONSUMER_KEY) != null)
            twitter4jConsumerKey = configuration.getString(ConfigurationKeyConstants.TWITTER4J_CONSUMER_KEY);
        if (configuration.getString(ConfigurationKeyConstants.TWITTER4J_CONSUMER_SECRET) != null)
            twitter4jConsumerSecret = configuration.getString(ConfigurationKeyConstants.TWITTER4J_CONSUMER_SECRET);
        if (configuration.getString(ConfigurationKeyConstants.ADMIN_SCREEN_NAMES) != null)
            adminScreenNames = configuration.getString(ConfigurationKeyConstants.ADMIN_SCREEN_NAMES);

        if (adminScreenNames != null)
            adminScreenNamesParsed = parseAdministratorScreenNames(adminScreenNames);
    }

    public static void loadFromDB() throws DAOException, PartakeException {
        new DBAccess<Void>() {
            @Override
            protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                IConfigurationItemAccess dao = daos.getConfiguraitonItemAccess();

                toppath = getValue(dao.find(con, ConfigurationKeyConstants.TOPPATH));
                daemonEnabled = getValue(dao.find(con, ConfigurationKeyConstants.DAEMON_ENABLED));
                twitterBotId = getValue(dao.find(con, ConfigurationKeyConstants.TWITTER_BOT_ID));
                luceneIndexDir = getValue(dao.find(con, ConfigurationKeyConstants.LUCENE_INDEX_DIX));
                googleAnalyticsId = getValue(dao.find(con, ConfigurationKeyConstants.GOOGLE_ANALYTICS_ID));
                twitter4jConsumerKey = getValue(dao.find(con, ConfigurationKeyConstants.TWITTER4J_CONSUMER_KEY));
                twitter4jConsumerSecret = getValue(dao.find(con, ConfigurationKeyConstants.TWITTER4J_CONSUMER_SECRET));
                adminScreenNames = getValue(dao.find(con, ConfigurationKeyConstants.ADMIN_SCREEN_NAMES));

                return null;
            }
        }.execute();
    }

    private static String getValue(ConfigurationItem item) {
        if (item == null)
            return null;
        return item.value();
    }

    public static String toppath() {
        return toppath;
    }

    public static boolean isTwitterDaemonEnabled() {
        return "true".equals(daemonEnabled);
    }

    public static long twitterBotId() {
        try {
            return Long.parseLong(twitterBotId);
        } catch (NumberFormatException e) {
            return -1;
        }
    }

    public static String luneceIndexDir() {
        return luceneIndexDir;
    }

    public static Set<String> administratorScreenNames() {
        return adminScreenNamesParsed;
    }

    public static String googleAnalyticsId() {
        return googleAnalyticsId;
    }

    public static String twitter4jConsumerKey() {
        return twitter4jConsumerKey;
    }

    public static String twitter4jConsumerSecret() {
        return twitter4jConsumerSecret;
    }

    private static Set<String> parseAdministratorScreenNames(String adminNames) {
        if (adminNames == null)
            return Collections.emptySet();

        Set<String> result = new HashSet<String>();
        for (String name : adminNames.split(",")) {
            String adminName = name.trim().toLowerCase();
            if (!adminName.isEmpty())
                result.add(adminName);
        }

        if (result.isEmpty())
            Logger.warn("No administrator screen names");

        return result;
    }
}
TOP

Related Classes of in.partake.app.PartakeConfiguration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.