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

com.powsybl.ucte.network.UcteCountryCode Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (c) 2016, All partners of the iTesla project (http://www.itesla-project.eu/consortium)
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 * SPDX-License-Identifier: MPL-2.0
 */
package com.powsybl.ucte.network;

import java.util.Objects;

/**
 *
 * @author Geoffroy Jamgotchian {@literal }
 */
public enum UcteCountryCode {
    AT('O', "Austria"),
    AL('A', "Albania"),
    BE('B', "Belgium"),
    BG('V', "Bulgaria"),
    BA('W', "Bosnia and Herzegovina"),
    BY('3', "Belarus"),
    CH('S', "Switzerland"),
    CZ('C', "Czech Republic"),
    DE('D', "Germany"),
    DK('K', "Denmark"),
    ES('E', "Spain"),
    FR('F', "France"),
    GB('5', "Great Britain"),
    GR('G', "Greece"),
    HU('M', "Hungary"),
    HR('H', "Croatia"),
    IT('I', "Italy"),
    LU('1', "Luxemburg"),
    LT('6', "Lithuania"),
    MA('2', "Morocco"),
    MD('7', "Moldavia"),
    MK('Y', "FYROM"),
    NO('9', "Norway"),
    NL('N', "Netherlands"),
    PT('P', "Portugal"),
    PL('Z', "Poland"),
    RO('R', "Romania"),
    RU('4', "Russia"),
    SE('8', "Sweden"),
    SK('Q', "Slovakia"),
    SI('L', "Slovenia"),
    TR('T', "Turkey"),
    UA('U', "Ukraine"),
    ME('0', "Montenegro"),
    RS('J', "Serbia"),
    KS('_', "Kosovo"),
    XX('X', "Fictitious border node");

    private final char ucteCode;

    private final String prettyName;

    UcteCountryCode(char ucteCode, String prettyName) {
        this.ucteCode = ucteCode;
        this.prettyName = Objects.requireNonNull(prettyName);
    }

    public char getUcteCode() {
        return ucteCode;
    }

    public String getPrettyName() {
        return prettyName;
    }

    public static UcteCountryCode fromUcteCode(char ucteCode) {
        return switch (ucteCode) {
            case 'O' -> AT;
            case 'A' -> AL;
            case 'B' -> BE;
            case 'V' -> BG;
            case 'W' -> BA;
            case '3' -> BY;
            case 'S' -> CH;
            case 'C' -> CZ;
            case 'D' -> DE;
            case 'K' -> DK;
            case 'E' -> ES;
            case 'F' -> FR;
            case '5' -> GB;
            case 'G' -> GR;
            case 'M' -> HU;
            case 'H' -> HR;
            case 'I' -> IT;
            case '1' -> LU;
            case '6' -> LT;
            case '2' -> MA;
            case '7' -> MD;
            case 'Y' -> MK;
            case '9' -> NO;
            case 'N' -> NL;
            case 'P' -> PT;
            case 'Z' -> PL;
            case 'R' -> RO;
            case '4' -> RU;
            case '8' -> SE;
            case 'Q' -> SK;
            case 'L' -> SI;
            case 'T' -> TR;
            case 'U' -> UA;
            case '0' -> ME;
            case 'J' -> RS;
            case '_' -> KS;
            case 'X' -> XX;
            default -> throw new IllegalArgumentException("Unknown UCTE country code " + ucteCode);
        };
    }

    public static boolean isUcteCountryCode(char character) {
        try {
            UcteCountryCode.fromUcteCode(character);
            return true;
        } catch (IllegalArgumentException e) {
            return false;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy