com.s2m.ludwig.conf.LudwigConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for com.s2m.ludwig.conf.LudwigConfiguration.java

Source

/**
 * Licensed to Cloudera, Inc. under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  Cloudera, Inc. licenses this file
 * to you 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.s2m.ludwig.conf;

import java.io.File;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/*************************************************************************
 * 
 *  Description
 *  -------
 *  This is the configuration file for OSS. It uses hadoop's xml schema 
 *  for properties. The default configuration is in $OSS_HOME/oss-conf.xml 
 *  and is a singleton.
 *
 *  Remarks
 *  -------
 *  The logging system gets configuration information from this file and
 *  thus depends on this being initialized. So no logging events are 
 *  allowed when this is being initialized. If logger is used, an infinite 
 *  recursion happens and causes a stack overflow.
 *
 *************************************************************************/
public class LudwigConfiguration extends Configuration {
    protected static final Logger LOG = LoggerFactory.getLogger(LudwigConfiguration.class);
    private static LudwigConfiguration singleton;

    /**
     * Returns the 'OSS_HOME' location. Taken in order of precedence:
     * 
     * - Java system property 'oss.home'
     * 
     * - $OSS_HOME in the environment.
     * 
     * - null if neither of these are set.
     */
    public static String getOSSHome() {
        String OSSHome = System.getProperty("oss.home");
        if (null == OSSHome) {
            OSSHome = System.getenv("OSS_HOME");
        }

        if (null == OSSHome) {
            LOG.warn("-Doss.home and $OSS_HOME both unset");
        }

        return OSSHome;
    }

    /**
     * Returns the 'OSS_CONF_DIR' location. Taken in order of precedence:
     * 
     * - Java system property 'oss.conf.dir'
     * 
     * - $OSS_CONF_DIR in the environment
     * 
     * - getOSSHome()/conf
     * 
     * - ./conf
     */
    public static String getOSSConfDir() {
        String OSSConfDir = System.getProperty("oss.conf.dir");
        if (null == OSSConfDir) {
            OSSConfDir = System.getenv("OSS_CONF_DIR");
        }

        if (null == OSSConfDir) {
            String ossHome = getOSSHome();
            if (null != ossHome) {
                OSSConfDir = new File(ossHome, "conf").toString();
            } else {
                OSSConfDir = "./conf";
            }
        }

        return OSSConfDir;
    }

    public synchronized static LudwigConfiguration get() {
        if (singleton == null)
            singleton = new LudwigConfiguration();
        return singleton;
    }

    protected LudwigConfiguration() {
        this(true);
    }

    protected LudwigConfiguration(boolean loadDefaults) {
        super();
        if (loadDefaults) {
            Path conf = new Path(getOSSConfDir());
            LOG.info("Loading configurations from " + conf);
            super.addResource(new Path(conf, "oss-conf.xml"));
            super.addResource(new Path(conf, "oss-site.xml"));
        }
    }

    // COOCCUR COMPUTATION SETTINGS
    public static final String WINDOW_SIZE = "oss.twitter.cooccur.window_size";
    public static final String STOPWORDS_PATH = "oss.twitter.coccur.stopwords_path";

    // AGENT SETTINGS
    public static final String NUMBER_OF_AGENTS = "oss.twitter.agent.number";
    public static final String NUMBER_OF_THREADS_PER_AGENT = "oss.twitter.agent.threads_number";

    // TP SETTINGS
    public static final String NUMBER_OF_TERM_TP = "oss.twitter.agent.partitions_number";
    public static final String TP_THRESHOLD = "oss.twitter.agent.tp_threshold";

    // COLLECTOR SETTINGS
    public static final String NUMBER_OF_SAME_COLLECTORS = "oss.twitter.collector.same_number";
    public static final String NUMBER_OF_DIFFERENT_COLLECTORS = "oss.twitter.collector.different_number";
    public static final String NUMBER_OF_THREADS_PER_COLLECTOR = "oss.twitter.collector.threads_number";

    // STREAM SETTINGS
    public static final String MESSAGE_SIZE = "oss.twitter.message_size";

    // TWITTER STREAM SETTINGS
    public static final String TWITTER_STREAM_URL = "oss.twitter.url";
    public static final String TWITTER_USER = "oss.twitter.username";
    public static final String TWITTER_PW = "oss.twitter.password";

    /**
     * The size of cooccur window, default = 1. 
     */
    public int getWindowSize() {
        return getInt(WINDOW_SIZE, 1);
    }

    public String getStopwordsPath() {
        return STOPWORDS_PATH;
    }

    /**
     * Number of Agents, default = 3. 
     */
    public int getNumberOfAgents() {
        return getInt(NUMBER_OF_AGENTS, 3);
    }

    /**
     * Number of threads per Agent, default = 3. 
     */
    public int getNumberOfThreadsPerAgent() {
        return getInt(NUMBER_OF_THREADS_PER_AGENT, 3);
    }

    /**
     * Number of TP for an agent, default = 10000. 
     */
    public int getNumberOfTP() {
        return getInt(NUMBER_OF_TERM_TP, 10000);
    }

    /**
     * This is the threshold after which a TP has to be emptied and its 
     * cooccur send to the broker, default = 100000.
     */
    public int getTPThreshold() {
        return getInt(TP_THRESHOLD, 100000);
    }

    /**
     * Number of collectors for each type, default = 3. 
     */
    public int getNumberOfSameCollectors() {
        return getInt(NUMBER_OF_SAME_COLLECTORS, 3);
    }

    /**
     * Number of different types of collectors, default = 3. 
     */
    public int getNumberOfDifferentCollectors() {
        return getInt(NUMBER_OF_SAME_COLLECTORS, 3);
    }

    /**
     * Number of threads per Agent, default = 3. 
     */
    public int getNumberOfThreadsPerCollector() {
        return getInt(NUMBER_OF_THREADS_PER_COLLECTOR, 3);
    }

    public String getTwitterName() {
        return get(TWITTER_USER);
    }

    public String getTwitterPW() {
        return get(TWITTER_PW);
    }

    public String getTwitterURL() {
        return get(TWITTER_STREAM_URL, "http://stream.twitter.com/1/statuses/sample.json");
    }

    public int getMessageSize() {
        return getInt(NUMBER_OF_THREADS_PER_COLLECTOR, 10);
    }

    public Object getStreamSource() {
        // TODO Auto-generated method stub
        return null;
    }

}