org.modeshape.jcr.api.monitor.Window Maven / Gradle / Ivy
/*
* ModeShape (http://www.modeshape.org)
*
* 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.
*/
package org.modeshape.jcr.api.monitor;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* The specification of the window for obtaining the history and statistics for a given metric.
*
* @since 3.0
*/
public enum Window {
/**
* The window for accessing a metric's history and statistics for ten 5-second intervals during the last minute (60 seconds).
*/
PREVIOUS_60_SECONDS("previous-60-seconds"),
/**
* The window for accessing a metric's history and statistics for each minute during the last hour (60 minutes).
*/
PREVIOUS_60_MINUTES("previous-60-minutes"),
/**
* The window for accessing a metric's history and statistics for each hour during the last day (24 hours).
*/
PREVIOUS_24_HOURS("previous-24-hours"),
/**
* The window for accessing a metric's history and statistics for each day during the last week (7 days).
*/
PREVIOUS_7_DAYS("previous-7-days"),
/**
* The window for accessing a metric's history and statistics for each week during the last year (52 weeks).
*/
PREVIOUS_52_WEEKS("previous-52-weeks");
private static final Map BY_LITERAL;
private static final Map BY_NAME;
static {
Map byLiteral = new HashMap();
Map byName = new HashMap();
for (Window window : Window.values()) {
byLiteral.put(window.getLiteral().toLowerCase(), window);
byName.put(window.name().toLowerCase(), window);
}
BY_LITERAL = Collections.unmodifiableMap(byLiteral);
BY_NAME = Collections.unmodifiableMap(byName);
}
private final String literal;
private Window( String literal ) {
this.literal = literal;
}
/**
* The literal string form of the window.
*
* @return the literal string form; never null or empty
*/
public String getLiteral() {
return literal;
}
/**
* Get the {@link Window} that has the supplied literal.
*
* @param literal the literal (can be of any case); may not be null
* @return the window, or null if there is no Window enum value for the given literal string
*/
public static Window fromLiteral( String literal ) {
if (literal == null) return null;
literal = literal.toLowerCase();
Window window = BY_LITERAL.get(literal);
if (window == null) BY_NAME.get(literal);
return window;
}
}