/**
 * Autogenerated by Thrift Compiler (0.9.2)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package backtype.storm.generated;


import java.util.Map;
import java.util.HashMap;
import org.apache.thrift.TEnum;

public enum TopologyInitialStatus implements TEnum {
  ACTIVE(1),
  INACTIVE(2);

  private final int value;

  private TopologyInitialStatus(int value) {
    this.value = value;
  }

  /**
   * Get the integer value of this enum value, as defined in the Thrift IDL.
   */
  public int getValue() {
    return value;
  }

  /**
   * Find a the enum type by its integer value, as defined in the Thrift IDL.
   * @return null if the value is not found.
   */
  public static TopologyInitialStatus findByValue(int value) { 
    switch (value) {
      case 1:
        return ACTIVE;
      case 2:
        return INACTIVE;
      default:
        return null;
    }
  }
}
