StatisticsFactory (Apache Geode 2.0.2)
Description: declaration: package: org.apache.geode, interface: StatisticsFactory

Package org.apache.geode

# Interface StatisticsFactory

All Superinterfaces:
  `StatisticsTypeFactory`

All Known Implementing Classes:
  `DistributedSystem`

public interface StatisticsFactory extends StatisticsTypeFactory
Instances of this interface provide methods that create instances of `Statistics`. It can also be used to create instances of `StatisticDescriptor` and `StatisticsType` because it implements `StatisticsTypeFactory`. `DistributedSystem` is the only instance of this interface.

A `StatisticsFactory` can create a `statistic` of two numeric types: `long`, and `double`. A statistic (`StatisticDescriptor`) can either be a gauge meaning that its value can increase and decrease or a counter meaning that its value is strictly increasing.

The following code is an example of how to create a type using the api. In this example the type has two stats whose values always increase:

        StatisticsFactory f = ...;
        StatisticsType t = f.createType(
            "StatSampler",
            "Stats on the statistic sampler.",
            new StatisticDescriptor[] {
                f.createLongCounter("sampleCount",
                                   "Total number of samples taken by this sampler.",
                                   "samples"),
                f.createLongCounter("sampleTime",
                                    "Total amount of time spent taking samples.",
                                    "milliseconds"),
            }
        );
        this.samplerStats = f.createStatistics(t, "statSampler");
        this.sampleCountId = this.samplerStats.nameToId("sampleCount");
        this.sampleTimeId = this.samplerStats.nameToId("sampleTime");

Later on the stat ids can be used to increment the stats:

     this.samplerStats.incLong(this.sampleCountId, 1);
     this.samplerStats.incLong(this.sampleTimeId, nanosSpentWorking / 1000000);

The following is an example of how to create the same type using XML. The XML data:

        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE statistics PUBLIC
          "-//GemStone Systems, Inc.//GemFire Statistics Type//EN"
          "http://www.gemstone.com/dtd/statisticsType.dtd">
        <statistics>
          <type name="StatSampler">
            <description>Stats on the statistic sampler.</description>
            <stat name="sampleCount" storage="long" counter="true">
              <description>Total number of samples taken by this sampler.</description>
              <unit>samples</unit>
            </stat>
            <stat name="sampleTime" storage="long" counter="true">
              <description>Total amount of time spent taking samples.</description>
              <unit>milliseconds</unit>
            </stat>
          </type>
        </statistics>

The code to create the type:

          StatisticsFactory f = ...;
          Reader r = new InputStreamReader("fileContainingXmlData"));
          StatisticsType type = f.createTypesFromXml(r)[0];

Since:
  GemFire 3.0
See Also:
  - Package introduction

- ## Field Summary

  ### Fields inherited from interface org.apache.geode.StatisticsTypeFactory

  `MAX_DESCRIPTORS_PER_TYPE`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Statistics`
  `createAtomicStatistics(StatisticsType type)`
  Creates and returns a `Statistics` instance of the given `type` with default ids.
  `Statistics`
  `createAtomicStatistics(StatisticsType type, String textId)`
  Creates and returns a `Statistics` instance of the given `type`, `textId`, and with a default numeric id.
  `Statistics`
  `createAtomicStatistics(StatisticsType type, String textId, long numericId)`
  Creates and returns a `Statistics` instance of the given `type`, `textId`, and `numericId`.
  `Statistics`
  `createStatistics(StatisticsType type)`
  Creates and returns a `Statistics` instance of the given `type` with default ids.
  `Statistics`
  `createStatistics(StatisticsType type, String textId)`
  Creates and returns a `Statistics` instance of the given `type`, `textId`, and with a default numeric id.
  `Statistics`
  `createStatistics(StatisticsType type, String textId, long numericId)`
  Creates and returns a `Statistics` instance of the given `type`, `textId`, and `numericId`.
  `Statistics[]`
  `findStatisticsByNumericId(long numericId)`
  Returns an array of all the existing statistics with the given numericId.
  `Statistics[]`
  `findStatisticsByTextId(String textId)`
  Returns an array of all the existing statistics with the given textId.
  `Statistics[]`
  `findStatisticsByType(StatisticsType type)`
  Returns an array of all the existing statistics of the given type.

  ### Methods inherited from interface org.apache.geode.StatisticsTypeFactory

  `createDoubleCounter, createDoubleCounter, createDoubleGauge, createDoubleGauge, createIntCounter, createIntCounter, createIntGauge, createIntGauge, createLongCounter, createLongCounter, createLongGauge, createLongGauge, createType, createTypesFromXml, findType`

- ## Method Details

  - ### createStatistics

    Statistics createStatistics(StatisticsType type)
    Creates and returns a `Statistics` instance of the given `type` with default ids.

    The created instance may not be `atomic`.

    Parameters:
      `type` - the `type` of `Statistics` instance
    Returns:
      a newly created `Statistics` instance

  - ### createStatistics

    Statistics createStatistics(StatisticsType type, String textId)
    Creates and returns a `Statistics` instance of the given `type`, `textId`, and with a default numeric id.

    The created instance may not be `atomic`.

    Parameters:
      `type` - the `type` of `Statistics` instance
      `textId` - the `textId` of the `Statistics` instance
    Returns:
      a newly created `Statistics` instance

  - ### createStatistics

    Statistics createStatistics(StatisticsType type, String textId, long numericId)
    Creates and returns a `Statistics` instance of the given `type`, `textId`, and `numericId`.

    The created instance may not be `atomic`.

    Parameters:
      `type` - the `type` of `Statistics` instance
      `textId` - the `textId` of the `Statistics` instance
      `numericId` - the `numericId` of the `Statistics` instance
    Returns:
      a newly created `Statistics` instance

  - ### createAtomicStatistics

    Statistics createAtomicStatistics(StatisticsType type)
    Creates and returns a `Statistics` instance of the given `type` with default ids.

    The created instance will be `atomic`.

    Parameters:
      `type` - the `type` of `Statistics` instance
    Returns:
      a newly created `Statistics` instance

  - ### createAtomicStatistics

    Statistics createAtomicStatistics(StatisticsType type, String textId)
    Creates and returns a `Statistics` instance of the given `type`, `textId`, and with a default numeric id.

    The created instance will be `atomic`.

    Parameters:
      `type` - the `type` of `Statistics` instance
      `textId` - the `textId` of the `Statistics` instance
    Returns:
      a newly created `Statistics` instance

  - ### createAtomicStatistics

    Statistics createAtomicStatistics(StatisticsType type, String textId, long numericId)
    Creates and returns a `Statistics` instance of the given `type`, `textId`, and `numericId`.

    The created instance will be `atomic`.

    Parameters:
      `type` - the `type` of `Statistics` instance
      `textId` - the `textId` of the `Statistics` instance
      `numericId` - the `numericId` of the `Statistics` instance
    Returns:
      a newly created `Statistics` instance

  - ### findStatisticsByType

    Statistics[] findStatisticsByType(StatisticsType type)
    Returns an array of all the existing statistics of the given type.
    Parameters:
      `type` - the `type` of statistics to find
    Returns:
      an array of all the existing statistics of the given type

  - ### findStatisticsByTextId

    Statistics[] findStatisticsByTextId(String textId)
    Returns an array of all the existing statistics with the given textId.
    Parameters:
      `textId` - the textId of statistics to find
    Returns:
      an array of all the existing statistics with the given textId

  - ### findStatisticsByNumericId

    Statistics[] findStatisticsByNumericId(long numericId)
    Returns an array of all the existing statistics with the given numericId.
    Parameters:
      `numericId` - the numericId of statistics to find
    Returns:
      an array of all the existing statistics with the given numericId