package com.tinkerpop.rexster.server.metrics; import com.codahale.metrics.MetricRegistry; import com.tinkerpop.rexster.Tokens; import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.commons.configuration.SubnodeConfiguration; import java.util.concurrent.TimeUnit; /** * Base class for reporter configurations. * * @author Stephen Mallette (http://stephen.genoprime.com) */ public abstract class AbstractReporterConfig { public static final long DEFAULT_PERIOD = 60l; public static final String DEFAULT_TIME_UNIT = TimeUnit.SECONDS.toString(); protected final MetricRegistry metricRegistry; protected SubnodeConfiguration registryConfiguration; protected long period; protected String timeUnit; protected String rateTimeUnitConversion; protected String durationTimeUnitConversion; protected String inclusion; protected String exclusion; public AbstractReporterConfig(final HierarchicalConfiguration config, final MetricRegistry metricRegistry) { this.metricRegistry = metricRegistry; try { this.registryConfiguration = config.configurationAt(Tokens.REXSTER_GRAPH_PROPERTIES); } catch (IllegalArgumentException iae) { this.registryConfiguration = null; } readCommonConfiguration(); } public TimeUnit getRealTimeUnit() { return TimeUnit.valueOf(timeUnit); } public TimeUnit getRealRateTimeUnitConversion() { return TimeUnit.valueOf(rateTimeUnitConversion); } public TimeUnit getRealDurationTimeUnitConversion() { return TimeUnit.valueOf(durationTimeUnitConversion); } /** * Enable (start) a reporter configuration. * @return */ public abstract boolean enable(); public abstract void disable(); private void readCommonConfiguration() { this.timeUnit = this.registryConfiguration == null ? DEFAULT_TIME_UNIT : this.registryConfiguration.getString(Tokens.REXSTER_REPORTER_TIME_UNIT, DEFAULT_TIME_UNIT); this.period = this.registryConfiguration == null ? DEFAULT_PERIOD : this.registryConfiguration.getLong(Tokens.REXSTER_REPORTER_PERIOD, DEFAULT_PERIOD); this.rateTimeUnitConversion = this.registryConfiguration == null ? DEFAULT_TIME_UNIT : this.registryConfiguration.getString(Tokens.REXSTER_REPORTER_RATES_TIME_UNIT, DEFAULT_TIME_UNIT); this.durationTimeUnitConversion = this.registryConfiguration == null ? DEFAULT_TIME_UNIT : this.registryConfiguration.getString(Tokens.REXSTER_REPORTER_DURATION_TIME_UNIT, DEFAULT_TIME_UNIT); this.inclusion = this.registryConfiguration == null ? null : this.registryConfiguration.getString(Tokens.REXSTER_REPORTER_INCLUDES, null); this.exclusion = this.registryConfiguration == null ? null : this.registryConfiguration.getString(Tokens.REXSTER_REPORTER_EXCLUDES, null); } }