Package

Source Code of CountandraServer

/*Copyright 2012  Countandra

   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.
*/

import java.io.*;

import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.PosixParser;
import org.apache.commons.cli.CommandLine;

import org.apache.commons.cli.Options;

import org.countandra.netty.*;
import org.countandra.kafka.*;
import org.countandra.cassandra.*;
import org.countandra.unittests.CountandraTestCases;
import org.countandra.unittests.CountandraTestUtils;

import org.countandra.utils.*;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.runner.JUnitCore;

// CassandraServer is local (with CassandraYaml specify the data store and distributed servers) 
//    -local-cassandra -local-cassandra-thrift-port -local-cassandra-thrift-ip
//      Therefore start the CassandraServer and
//      Initialize the data structures associated with Countandra including some default values
//         on localhost and specified port 9160?
// CassandraServer is remote
//      Assume that the initialization is done seperately and the CassandraServer is started seperately
//      just need a pointer there to the host and port (could be localhost and default port)
//      -remote-cassandra -remote-cassandra-thrift-port -remote-cassandra-thrift-ip

// HttpServer is always assumed to be local and should  be started
// --http-server -http-server-port

public class CountandraServer {

  public static Options options = new Options();

  static {
    options.addOption("s", "server-mode", false, " Cassandra Server Mode");
    options.addOption("i", "init", false,
        " Initialize Cassandra with basic structures");
    options.addOption("t", "unit-test", false,
        "Test Countandar for sums, counts and squares");
    options.addOption("h", "httpserver", false,
        " Whether to include httserver");

    options.addOption("k", "kafkaconsumer", false,
        " Whether to include kafkaconsumer");

    options.addOption("httpserverport", "httpserverport", true,
        " httpserver port in case the default of 8080 does not work");
    options.addOption("cassandrahostip", "cassandrahostip", true,
        " cassandra host ip for  httpserverto communicate to");
    options.addOption("consistencylevel", "consistencylevel", true,
        " consistency levels of writes/reads");

    options.addOption("replicationfactor", "replicationfactor", true,
        " replicas of data");
    options.addOption("locatorstrategy", "locatorstrategy", true,
        "how the rows should be located");

  }

  private static int httpPort = 8080;
  private static String cassandraServerForClient = new String(
      "localhost:9160");

  public static void main(String args[]) {

    try {
      System.out.println(args[0]);

      CommandLineParser parser = new PosixParser();
      CommandLine line = parser.parse(options, args);

      if (line.hasOption("cassandrahostip")) {
        CountandraUtils.setCassandraHostIp(line
            .getOptionValue("cassandrahostip"));
        if (line.hasOption("consistencylevel")) {
          if (line.hasOption("replicationfactor")) {

            CassandraStorage.setGlobalParams(
                line.getOptionValue("cassandrahostip"),
                line.getOptionValue("consistencylevel"));
            CassandraDB.setGlobalParams(
                line.getOptionValue("cassandrahostip"),
                line.getOptionValue("replicationfactor"));

          } else {

            CassandraStorage.setGlobalParams(
                line.getOptionValue("cassandrahostip"),
                line.getOptionValue("consistencylevel"));
            CassandraDB.setGlobalParams(line
                .getOptionValue("cassandrahostip"));

          }
        }

        else { // no consistency level -- assumed to be ONE
          if (line.hasOption("replicationfactor")) {

            CassandraStorage.setGlobalParams(line
                .getOptionValue("cassandrahostip"));
            CassandraDB.setGlobalParams(
                line.getOptionValue("cassandrahostip"),
                line.getOptionValue("replicationfactor"));

          } else {

            CassandraStorage.setGlobalParams(line
                .getOptionValue("cassandrahostip"));
            CassandraDB.setGlobalParams(line
                .getOptionValue("cassandrahostip"));

          }
        }
      } else {
        CassandraStorage.setGlobalParams(cassandraServerForClient);
        CassandraDB.setGlobalParams(cassandraServerForClient);
      }

      if (line.hasOption("s")) {
        System.out.println("Starting Cassandra");
        // cassandra server
        CassandraUtils.startupCassandraServer();

      }
      if (line.hasOption("i")) {
        System.out.print("Checking if Cassandra is initialized");
        CassandraDB csdb = new CassandraDB();
        while (!csdb.isCassandraUp()) {
          System.out.print(".");
        }
        System.out.println(".");
        System.out.println("Initializing Basic structures");
        CountandraUtils.initBasicDataStructures();
        System.out.println("Initialized Basic structures");

      }

      if (line.hasOption("h")) {

        if (line.hasOption("httpserverport")) {
          httpPort = Integer.parseInt(line
              .getOptionValue("httpserverport"));
        }
        NettyUtils.startupNettyServer(httpPort);
        System.out.println("Started Http Server");
      }


      if (line.hasOption("k")) {

          KafkaUtils.startupKafkaConsumer();
          System.out.println("Started Kafka Consumer");
      }

      // Unit Tests
      if (line.hasOption("t")) {
        try {
          Thread.sleep(30000);
        } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        org.junit.runner.JUnitCore.main(CountandraTestCases.class
            .getName());
      }

    } catch (IOException ioe) {
      System.out.println(ioe);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}
TOP

Related Classes of CountandraServer

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.