All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gemstone.gemfire.cache.operations.InterestType Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
 *
 * 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. See accompanying
 * LICENSE file.
 */

package com.gemstone.gemfire.cache.operations;

/**
 * Enumeration for various interest types supported by GemFire.
 * 
 * @author Sumedh Wale
 * @since 5.5
 */
public final class InterestType {

  public static final byte TP_KEY = 0;

  public static final byte TP_REGEX = 1;

  //public static final byte TP_FILTER_CLASS = 2;

  //public static final byte TP_OQL = 3;

  public static final byte TP_LIST = 4;

  private static byte nextOrdinal = 0;

  private static final InterestType[] VALUES = new InterestType[10];

  /**
   * For registering interest in a specific key.
   */
  public static final InterestType KEY = new InterestType("KEY", TP_KEY);

  /**
   * For registering interest in a list of keys.
   */
  public static final InterestType LIST = new InterestType("LIST", TP_LIST);

  /**
   * For registering interest in all keys matching a regular expression.
   */
  public static final InterestType REGULAR_EXPRESSION = new InterestType(
      "REGULAR_EXPRESSION", TP_REGEX);

  /**
   * For registering interest in all key/value pairs that satisfy a provided
   * filtering class.
   */
  //public static final InterestType FILTER_CLASS = new InterestType(
  //    "FILTER_CLASS", TP_FILTER_CLASS);

  /**
   * For registering interest in all key/value pairs that satisfy an OQL query.
   */
  //public static final InterestType OQL_QUERY = new InterestType("OQL_QUERY",
  //    TP_OQL);

  /** The name of this interest type. */
  private final String name;

  /** byte used as ordinal to represent this interest type */
  private final byte ordinal;

  /**
   * One of the following: TP_KEY, TP_LIST, TP_REGEX, TP_FILTER_CLASS, TP_OQL.
   * TP_FILTER_CLASS and TP_OQL are currently unimplemented.
   */
  private final byte interestType;

  /** Creates a new instance of InterestType. */
  private InterestType(String name, byte interestType) {
    this.name = name;
    this.interestType = interestType;
    this.ordinal = nextOrdinal++;
    VALUES[this.ordinal] = this;
  }

  /**
   * Returns true if this is a key interest type.
   */
  public boolean isKey() {
    return (this.interestType == TP_KEY);
  }

  /**
   * Returns true if this is a key list interest type.
   */
  public boolean isList() {
    return (this.interestType == TP_LIST);
  }

  /**
   * Returns true if this is a regular expression interest type.
   */
  public boolean isRegularExpression() {
    return (this.interestType == TP_REGEX);
  }

  /**
   * Returns true if this is a filter class interest type.
   */
  //public boolean isFilterClass() {
  //  return (this.interestType == TP_FILTER_CLASS);
  //}

  /**
   * Returns true if this is an OQL query interest type.
   */
  //public boolean isOQLQuery() {
  //  return (this.interestType == TP_OQL);
  //}

  /**
   * Returns the InterestType represented by specified ordinal.
   */
  public static InterestType fromOrdinal(byte ordinal) {
    return VALUES[ordinal];
  }

  /**
   * Returns the ordinal for this interest type.
   * 
   * @return the ordinal of this interest type.
   */
  public byte toOrdinal() {
    return this.ordinal;
  }

  /**
   * Returns a string representation for this interest type.
   * 
   * @return the name of this interest type.
   */
  @Override // GemStoneAddition
  public String toString() {
    return this.name;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy