StrategyName.java

package soen6441riskgame.enums;

import soen6441riskgame.models.strategies.AggressiveStrategy;
import soen6441riskgame.models.strategies.BenevolentStrategy;
import soen6441riskgame.models.strategies.CheaterStrategy;
import soen6441riskgame.models.strategies.HumanStrategy;
import soen6441riskgame.models.strategies.RandomStrategy;
import soen6441riskgame.models.strategies.Strategy;

/**
 * name of the strategy as enum for easy comparison and parse
 */
public enum StrategyName {
                          AGGRESSIVE("aggressive"),
                          BENEVOLENT("benevolent"),
                          RANDOM("random"),
                          CHEATER("cheater"),
                          HUMAN("human"),
                          INVALID("");

    /**
     * Strategy name
     */
    private String name;

    /**
     * constructor
     * 
     * @param name strategy name
     */
    StrategyName(final String name) {
        this.name = name;
    }

    /**
     * get name of the strategy enum
     * 
     * @return name of the strategy enum
     */
    public String getName() {
        return name;
    }

    /**
     * convert the string arg to enum
     *
     * @param argumentString the arg string
     * @return the arg converted to enum
     */
    public static Strategy fromString(String argumentString) {
        for (StrategyName argument : values()) {
            if (argument.getName().equalsIgnoreCase(argumentString)) {
                switch (argument) {
                    case AGGRESSIVE: {
                        return new AggressiveStrategy();
                    }
                    case BENEVOLENT: {
                        return new BenevolentStrategy();
                    }
                    case RANDOM: {
                        return new RandomStrategy();
                    }
                    case CHEATER: {
                        return new CheaterStrategy();
                    }
                    case HUMAN: {
                        return new HumanStrategy();
                    }
                    default: {
                        break;
                    }
                }
            }
        }

        return null;
    }
}