All Downloads are FREE. Search and download functionalities are using the official Maven repository.

estonlabs.cxtl.exchanges.mexc.spot.v3.domain.KlineInterval Maven / Gradle / Ivy

There is a newer version: 1.4.14
Show newest version
package estonlabs.cxtl.exchanges.mexc.spot.v3.domain;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public enum KlineInterval {
    ONE_MINUTE("1m", TimeUnit.MINUTES.toMillis(1)),
    FIVE_MINUTES("5m", TimeUnit.MINUTES.toMillis(5)),
    FIFTEEN_MINUTES("15m", TimeUnit.MINUTES.toMillis(15)),
    THIRTY_MINUTES("30m", TimeUnit.MINUTES.toMillis(30)),
    SIXTY_MINUTES("60m", TimeUnit.HOURS.toMillis(1)),
    FOUR_HOURS("4h", TimeUnit.HOURS.toMillis(4)),
    ONE_DAY("1d", TimeUnit.DAYS.toMillis(1)),
    ONE_WEEK("1W", TimeUnit.DAYS.toMillis(7)),
    ONE_MONTH("1M", TimeUnit.DAYS.toMillis(30)); // Approximation for a month

    private final String code;
    private final long millis;

    KlineInterval(String code, long millis) {
        this.code = code;
        this.millis = millis;
    }

    @JsonValue
    public String getCode() {
        return code;
    }

    public long getMillis() {
        return millis;
    }

    private static final Map CODE_MAP = Stream.of(values())
            .collect(Collectors.toMap(KlineInterval::getCode, Function.identity()));

    @JsonCreator
    public static KlineInterval fromCode(String code) {
        KlineInterval interval = CODE_MAP.get(code);
        if (interval == null) {
            throw new IllegalArgumentException("Unknown interval code: " + code);
        }
        return interval;
    }

    public static KlineInterval fromMillis(long millis) {
        return Stream.of(values())
                .filter(interval -> interval.getMillis() == millis)
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("Unknown interval for millis: " + millis));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy