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

io.github.imsejin.common.constant.OperatingSystem Maven / Gradle / Ivy

package io.github.imsejin.common.constant;

import io.github.imsejin.common.constant.interfaces.KeyValue;

import java.util.*;

public enum OperatingSystem implements KeyValue {

    /**
     * Microsoft Windows.
     */
    WINDOWS(Collections.singleton("win")),

    /**
     * Apple macOS.
     */
    MAC(Collections.singleton("mac")),

    /**
     * Unix including Linux and IBM AIX.
     */
    UNIX(new HashSet<>(Arrays.asList("nix", "nux", "aix"))),

    /**
     * Oracle Solaris.
     */
    SOLARIS(Collections.singleton("sunos"));

    /**
     * Keywords that distinguish operating systems.
     */
    private final Set keywords;

    OperatingSystem(Set keywords) {
        this.keywords = Collections.unmodifiableSet(keywords);
    }

    public static boolean contains(String keyword) {
        for (OperatingSystem os : OperatingSystem.values()) {
            if (os.keywords.contains(keyword)) return true;
        }

        return false;
    }

    public static Optional of(String keyword) {
        return Arrays.stream(OperatingSystem.values())
                .filter(os -> os.keywords.contains(keyword))
                .findFirst();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String key() {
        return name();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String value() {
        return new ArrayList<>(this.keywords).get(0);
    }

    public Set getKeywords() {
        return keywords;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy