com.gemstone.gemfire.internal.StatisticsTypeFactoryImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gemfire-core Show documentation
Show all versions of gemfire-core Show documentation
SnappyData store based off Pivotal GemFireXD
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.internal;
import com.gemstone.gemfire.*;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import java.io.*;
import java.util.*;
/**
* The implementation of {@link StatisticsTypeFactory}.
* Each VM can any have a single instance of this class which can
* be accessed by calling {@link #singleton()}.
*
* @see Package introduction
*
* @author Darrel Schneider
*
* @since 3.0
*
*/
public class StatisticsTypeFactoryImpl implements StatisticsTypeFactory {
// static fields
private final static StatisticsTypeFactoryImpl singleton = new StatisticsTypeFactoryImpl();
// static methods
/**
* Returns the single instance of this class.
*/
public final static StatisticsTypeFactory singleton() {
return singleton;
}
protected final static void clear() {
singleton.statTypes.clear();
}
// constructors
private StatisticsTypeFactoryImpl() {
}
// instance fields
private final HashMap statTypes = new HashMap();
// instance methods
/**
* Adds an already created type. If the type has already been
* added and is equal to the new one then the new one is dropped and the existing one returned.
* @throws IllegalArgumentException if the type already exists and is not equal to the new type
*/
public StatisticsType addType(StatisticsType t) {
StatisticsType result = t;
synchronized (this.statTypes) {
StatisticsType currentValue = findType(result.getName());
if (currentValue == null) {
this.statTypes.put(result.getName(), result);
} else if (result.equals(currentValue)) {
result = currentValue;
} else {
throw new IllegalArgumentException(LocalizedStrings.StatisticsTypeFactoryImpl_STATISTICS_TYPE_NAMED_0_ALREADY_EXISTS.toLocalizedString(result.getName()));
}
}
return result;
}
public StatisticsType createType(String name, String description,
StatisticDescriptor[] stats) {
return addType(new StatisticsTypeImpl(name, description, stats));
}
public StatisticsType findType(String name) {
return (StatisticsType)this.statTypes.get(name);
}
public StatisticsType[] createTypesFromXml(Reader reader)
throws IOException {
return StatisticsTypeImpl.fromXml(reader, this);
}
public StatisticDescriptor createIntCounter(String name, String description,
String units) {
return StatisticDescriptorImpl.createIntCounter(name, description, units, true);
}
public StatisticDescriptor createLongCounter(String name, String description,
String units) {
return StatisticDescriptorImpl.createLongCounter(name, description, units, true);
}
public StatisticDescriptor createDoubleCounter(String name, String description,
String units) {
return StatisticDescriptorImpl.createDoubleCounter(name, description, units, true);
}
public StatisticDescriptor createIntGauge(String name, String description,
String units) {
return StatisticDescriptorImpl.createIntGauge(name, description, units, false);
}
public StatisticDescriptor createLongGauge(String name, String description,
String units) {
return StatisticDescriptorImpl.createLongGauge(name, description, units, false);
}
public StatisticDescriptor createDoubleGauge(String name, String description,
String units) {
return StatisticDescriptorImpl.createDoubleGauge(name, description, units, false);
}
public StatisticDescriptor createIntCounter(String name, String description,
String units, boolean largerBetter) {
return StatisticDescriptorImpl.createIntCounter(name, description, units, largerBetter);
}
public StatisticDescriptor createLongCounter(String name, String description,
String units, boolean largerBetter) {
return StatisticDescriptorImpl.createLongCounter(name, description, units, largerBetter);
}
public StatisticDescriptor createDoubleCounter(String name, String description,
String units, boolean largerBetter) {
return StatisticDescriptorImpl.createDoubleCounter(name, description, units, largerBetter);
}
public StatisticDescriptor createIntGauge(String name, String description,
String units, boolean largerBetter) {
return StatisticDescriptorImpl.createIntGauge(name, description, units, largerBetter);
}
public StatisticDescriptor createLongGauge(String name, String description,
String units, boolean largerBetter) {
return StatisticDescriptorImpl.createLongGauge(name, description, units, largerBetter);
}
public StatisticDescriptor createDoubleGauge(String name, String description,
String units, boolean largerBetter) {
return StatisticDescriptorImpl.createDoubleGauge(name, description, units, largerBetter);
}
}