/*
 * Copyright 2010-2013 Coda Hale and Yammer, Inc., 2014-2017 Dropwizard Team
 *
 * 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 io.dropwizard.metrics.influxdb;

import java.util.EnumSet;
import java.util.concurrent.TimeUnit;

/**
 * Created by steve on 17/10/16.
 */
public class TimeUtils {
    /**
     * Convert from a TimeUnit to a influxDB timeunit String.
     *
     * @param t time unit
     * @return the String representation.
     */
    public static String toTimePrecision(final TimeUnit t) {
        switch (t) {
            case HOURS:
                return "h";
            case MINUTES:
                return "m";
            case SECONDS:
                return "s";
            case MILLISECONDS:
                return "ms";
            case MICROSECONDS:
                return "u";
            case NANOSECONDS:
                return "n";
            default:
                EnumSet<TimeUnit> allowedTimeunits = EnumSet.of(
                        TimeUnit.HOURS,
                        TimeUnit.MINUTES,
                        TimeUnit.SECONDS,
                        TimeUnit.MILLISECONDS,
                        TimeUnit.MICROSECONDS,
                        TimeUnit.NANOSECONDS);
                throw new IllegalArgumentException("time precision must be one of:" + allowedTimeunits);
        }
    }

}
