
package org.apache.nifi.redis;

/**
 * Possible types of Redis instances.
 */
public enum RedisType {

    STANDALONE("Standalone", "A single standalone Redis instance."),

    SENTINEL("Sentinel", "Redis Sentinel which provides high-availability. Described further at https://redis.io/topics/sentinel"),

    CLUSTER("Cluster", "Clustered Redis which provides sharding and replication. Described further at https://redis.io/topics/cluster-spec");

    private final String displayName;
    private final String description;

    RedisType(final String displayName, final String description) {
        this.displayName = displayName;
        this.description = description;
    }

    public String getDisplayName() {
        return displayName;
    }

    public String getDescription() {
        return description;
    }

    public static RedisType fromDisplayName(final String displayName) {
        for (RedisType redisType : values()) {
            if (redisType.getDisplayName().equals(displayName)) {
                return redisType;
            }
        }

        throw new IllegalArgumentException("Unknown RedisType: " + displayName);
    }

}
