TsoEICode.java

/*
 * Copyright (c) 2022, RTE (http://www.rte-france.com)
 * 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/.
 */

package com.powsybl.openrao.commons;

import java.util.Arrays;

/**
 * @author Peter Mitri {@literal <peter.mitri at rte-france.com>}
 */
public enum TsoEICode {
    AL("AL", "10XAL-KESH-----J", "OST_ALBANIA"),
    AT("AT", "10XAT-APG------Z", "APG"),
    BA("BA", "10XBA-JPCCZEKC-K", "NOSBIH"),
    BE("BE", "10X1001A1001A094", "ELIA"),
    CH("CH", "10XCH-SWISSGRIDC", "SWISSGRID"),
    CY("CY", "10X1001A1001A523", "CYPRUS_TSO"),
    CZ("CZ", "10XCZ-CEPS-GRIDE", "CEPS"),
    D2("D2", "10XDE-EON-NETZ-C", "TTG_DE"),
    D4("D4", "10XDE-ENBW--TNGX", "DE-TRANSNETBWTSO"),
    D7("D7", "10XDE-RWENET---W", "DE-AMPRION-TSO"),
    D8("D8", "10XDE-VE-TRANSMK", "50HERTZ_DE_TSO"),
    DK("DK", "10X1001A1001A248", "ENERGINET-DK"),
    ES("ES", "10XES-REE------E", "REE"),
    FR("FR", "10XFR-RTE------Q", "RTE"),
    FI("FI", "10X1001A1001A264", "FINGRID"),
    GB("GB", "10X1001A1001A515", "NGESO"),
    GR("GR", "10XGR-HTSO-----B", "ADMIE"),
    HR("HR", "10XHR-HEP-OPS--A", "HOPS"),
    HU("HU", "10X1001A1001A329", "MAVIR"),
    IE("IE", "10X1001A1001A531", "EIRGRID"),
    IT("IT", "10X1001A1001A345", "TERNA"),
    LT("LT", "10X1001A1001A55Y", "LITGRID"),
    LV("LV", "10X1001A1001B54W", "LV-AST"),
    ME("ME", "10XCS-CG-TSO---5", "CGES"),
    MK("MK", "10XMK-MEPSO----M", "AD_MEPSO"),
    NL("NL", "10X1001A1001A361", "TENNET_TSO"),
    NO("NO", "10X1001A1001A38Y", "STATNETT_SF"),
    PL("PL", "10XPL-TSO------P", "PSE"),
    PT("PT", "10XPT-REN------9", "REN"),
    RO("RO", "10XRO-TEL------2", "TEL"),
    SE("SE", "10X1001A1001A418", "SVK"),
    SI("SI", "10XSI-ELES-----1", "ELES"),
    SK("SK", "10XSK-SEPS-GRIDB", "SEPS"),
    TR("TR", "10XTR-TEIAS----9", "TEIAS"),
    UA("UA", "10XUA-WPS------K", "UA_WPS"),
    UN("UN", "10XRKS-KOSTT-007", "KOSOVA-TSMO");

    private String shortId;
    private String eiCode;
    private String displayName;

    TsoEICode(String shortId, String eiCode, String displayName) {
        this.shortId = shortId;
        this.eiCode = eiCode;
        this.displayName = displayName;
    }

    public String getShortId() {
        return shortId;
    }

    public String getEICode() {
        return eiCode;
    }

    public String getDisplayName() {
        return displayName;
    }

    public static TsoEICode fromShortId(String shortId) {
        return Arrays.stream(TsoEICode.values()).filter(tsoEICode -> tsoEICode.shortId.equals(shortId)).findAny().orElseThrow();
    }

    public static TsoEICode fromEICode(String eiCode) {
        return Arrays.stream(TsoEICode.values()).filter(tsoEICode -> tsoEICode.eiCode.equals(eiCode)).findAny().orElseThrow();
    }
}