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

io.github.portlek.sfs.ReplicationStrategy Maven / Gradle / Ivy

There is a newer version: 5.7
Show newest version
/*
 * (C) Copyright 2013 Scoop IT SAS (http://scoop.it/) and others.
 *
 * 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.
 *
 * Contributors:
 *     Philippe GASSMANN
 *     Jean-Baptiste BELLET
 */
package io.github.portlek.sfs;

public enum ReplicationStrategy {
    /**
     * no replication
     */
    None("000"),
    /**
     * replicate once on the same rack
     */
    OnceOnSameRack("001"),
    /**
     * replicate once on a different rack, but same data center
     */
    OnceOnDifferentRack("010"),
    /**
     * replicate once on a different data center
     */
    OnceOnDifferentDC("100"),
    /**
     * replicate twice on two different data center
     */
    TwiceOnDifferentDC("200"),
    /**
     * replicate once on a different rack, and once on a different data center
     */
    OnceOnDifferentRackAndOnceOnDifferentDC("110");

    final String parameterValue;

    ReplicationStrategy(final String parameterValue) {
        this.parameterValue = parameterValue;
    }

    public static ReplicationStrategy fromParameterValue(final String parameterValue) {
        // yes this is ugly
        switch (parameterValue) {
            case "000":
                return ReplicationStrategy.None;
            case "001":
                return ReplicationStrategy.OnceOnSameRack;
            case "010":
                return ReplicationStrategy.OnceOnDifferentRack;
            case "100":
                return ReplicationStrategy.OnceOnDifferentDC;
            case "200":
                return ReplicationStrategy.TwiceOnDifferentDC;
            case "110":
                return ReplicationStrategy.OnceOnDifferentRackAndOnceOnDifferentDC;
            default:
                throw new IllegalArgumentException("Unknown Replication Strategy: " + parameterValue);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy