AbstractCgmesDLTest.java

/**
 * Copyright (c) 2019, 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.sld.cgmes.dl.conversion;

import java.util.Arrays;
import java.util.Collections;

import com.powsybl.triplestore.api.PropertyBag;
import com.powsybl.triplestore.api.PropertyBags;
import org.junit.jupiter.api.BeforeEach;

/**
 *
 * @author Massimo Ferraro {@literal <massimo.ferraro@techrain.eu>}
 */
abstract class AbstractCgmesDLTest {

    protected static String NAMESPACE = "http://network#";

    protected static String DEFAULT_DIAGRAM_NAME = "default";

    protected PropertyBags terminalsPropertyBags;
    protected PropertyBags busesPropertyBags;
    protected PropertyBags busbarsPropertyBags;
    protected PropertyBags linesPropertyBags;
    protected PropertyBags danglingLinesPropertyBags;
    protected PropertyBags generatorsPropertyBags;
    protected PropertyBags loadsPropertyBags;
    protected PropertyBags shuntsPropertyBags;
    protected PropertyBags switchesPropertyBags;
    protected PropertyBags tranformersPropertyBags;
    protected PropertyBags tranformers3wPropertyBags;
    protected PropertyBags hvdcLinesPropertyBags;
    protected PropertyBags svcsPropertyBags;
    protected PropertyBags terminals;
    protected PropertyBags busbarNodes;
    protected PropertyBags voltageLevels;

    @BeforeEach
    public void setUp() {
        terminalsPropertyBags = new PropertyBags(Arrays.asList(createTerminalPropertyBag(NAMESPACE + "Generator", "1", 2, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Generator", "1", 6, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Load", "1", 2, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Load", "1", 6, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Shunt", "1", 2, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Shunt", "1", 6, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Switch", "1", 2, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Switch", "1", 6, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Switch", "2", 14, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Switch", "2", 18, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer", "1", 2, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer", "1", 6, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer", "2", 14, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer", "2", 18, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer3w", "1", 2, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer3w", "1", 6, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer3w", "2", 14, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer3w", "2", 18, 10, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer3w", "3", 10, 16, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Transformer3w", "3", 10, 20, 2),
                                                               createTerminalPropertyBag(NAMESPACE + "Svc", "1", 2, 10, 1),
                                                               createTerminalPropertyBag(NAMESPACE + "Svc", "1", 6, 10, 2)));
        busesPropertyBags = new PropertyBags(Arrays.asList(createBusPropertyBag(NAMESPACE + "Bus", "Bus", NAMESPACE + "VoltageLevel", "VoltageLevel", 20, 5, 1),
                                                           createBusPropertyBag(NAMESPACE + "Bus", "Bus", NAMESPACE + "VoltageLevel", "VoltageLevel", 20, 40, 2)));
        busbarsPropertyBags = new PropertyBags(Arrays.asList(createBusbarPropertyBag(NAMESPACE + "Busbar", "Busbar", 20, 5, 1),
                                                             createBusbarPropertyBag(NAMESPACE + "Busbar", "Busbar", 20, 40, 2)));
        linesPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "Line", "Line", 20, 5, 1),
                                                           createPropertyBag(NAMESPACE + "Line", "Line", 20, 40, 2)));
        danglingLinesPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "DanglingLine", "DanglingLine", 20, 5, 1),
                                                                   createPropertyBag(NAMESPACE + "DanglingLine", "DanglingLine", 20, 40, 2)));
        generatorsPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "Generator", "Generator", 10, 10, 0, 90)));
        loadsPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "Load", "Load", 10, 10, 0, 90)));
        shuntsPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "Shunt", "Shunt", 10, 10, 0, 90)));
        switchesPropertyBags = new PropertyBags(Arrays.asList(createSwitchPropertyBag(NAMESPACE + "Switch", "Switch", 10, 10, 90)));
        tranformersPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "Transformer", "Transformer", 10, 10, 0, 90)));
        tranformers3wPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "Transformer3w", "Transformer3w", 10, 13, 0, 90)));
        hvdcLinesPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "HvdcLine", "HvdcLine", 20, 5, 1),
                                                               createPropertyBag(NAMESPACE + "HvdcLine", "HvdcLine", 20, 40, 2)));
        svcsPropertyBags = new PropertyBags(Arrays.asList(createPropertyBag(NAMESPACE + "Svc", "Svc", 10, 10, 0, 90)));
        terminals = new PropertyBags(Arrays.asList(createTerminal(NAMESPACE + "Generator_0", 1, NAMESPACE + "Generator"),
                                                   createTerminal(NAMESPACE + "Load_0", 1, NAMESPACE + "Load"),
                                                   createTerminal(NAMESPACE + "Shunt_0", 1, NAMESPACE + "Shunt"),
                                                   createTerminal(NAMESPACE + "Svc_0", 1, NAMESPACE + "Svc"),
                                                   createTerminal(NAMESPACE + "Line_0", 1, NAMESPACE + "Line"),
                                                   createTerminal(NAMESPACE + "Line_1", 2, NAMESPACE + "Line"),
                                                   createTerminal(NAMESPACE + "DanglingLine_0", 1, NAMESPACE + "DanglingLine"),
                                                   createTerminal(NAMESPACE + "DanglingLine_1", 2, NAMESPACE + "DanglingLine"),
                                                   createTerminal(NAMESPACE + "Switch_0", 1, NAMESPACE + "Switch"),
                                                   createTerminal(NAMESPACE + "Switch_1", 2, NAMESPACE + "Switch"),
                                                   createTerminal(NAMESPACE + "Transformer_0", 1, NAMESPACE + "Transformer"),
                                                   createTerminal(NAMESPACE + "Transformer_1", 2, NAMESPACE + "Transformer"),
                                                   createTerminal(NAMESPACE + "Transformer3w_0", 1, NAMESPACE + "Transformer3w"),
                                                   createTerminal(NAMESPACE + "Transformer3w_1", 2, NAMESPACE + "Transformer3w"),
                                                   createTerminal(NAMESPACE + "Transformer3w_0", 3, NAMESPACE + "Transformer3w"),
                                                   createTerminal(NAMESPACE + "HvdcLine_0", 1, NAMESPACE + "HvdcLine"),
                                                   createTerminal(NAMESPACE + "HvdcLine_1", 2, NAMESPACE + "HvdcLine")));
        busbarNodes = new PropertyBags(Arrays.asList(createBusbarNode(NAMESPACE + "Busbar", NAMESPACE + "BusbarNode")));
        voltageLevels = new PropertyBags(Collections.emptyList());
    }

    protected PropertyBag createPropertyBag(String identifiedObject, String name, double x, double y, int seq, String diagramName) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("identifiedObject", "name", "x", "y", "seq"), true);
        propertyBag.put("identifiedObject", identifiedObject);
        propertyBag.put("name", name);
        propertyBag.put("x", Double.toString(x));
        propertyBag.put("y", Double.toString(y));
        propertyBag.put("seq", Integer.toString(seq));
        propertyBag.put("diagramName", diagramName);
        return propertyBag;
    }

    protected PropertyBag createPropertyBag(String identifiedObject, String name, double x, double y, int seq) {
        return createPropertyBag(identifiedObject, name, x, y, seq, DEFAULT_DIAGRAM_NAME);
    }

    protected PropertyBag createPropertyBag(String identifiedObject, String name, double x, double y, int seq, int rotation, String diagramName) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("identifiedObject", "name", "x", "y", "seq", "rotation"), true);
        propertyBag.put("identifiedObject", identifiedObject);
        propertyBag.put("name", name);
        propertyBag.put("x", Double.toString(x));
        propertyBag.put("y", Double.toString(y));
        propertyBag.put("seq", Integer.toString(seq));
        propertyBag.put("rotation", Integer.toString(rotation));
        propertyBag.put("diagramName", diagramName);
        return propertyBag;
    }

    protected PropertyBag createPropertyBag(String identifiedObject, String name, double x, double y, int seq, int rotation) {
        return createPropertyBag(identifiedObject, name, x, y, seq, rotation, DEFAULT_DIAGRAM_NAME);
    }

    protected PropertyBag createTerminalPropertyBag(String terminalEquipment, String terminalSide, double x, double y, int seq, String diagramName) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("terminalEquipment", "terminalSide", "x", "y", "seq"), true);
        propertyBag.put("terminalEquipment", terminalEquipment);
        propertyBag.put("terminalSide", terminalSide);
        propertyBag.put("x", Double.toString(x));
        propertyBag.put("y", Double.toString(y));
        propertyBag.put("seq", Integer.toString(seq));
        propertyBag.put("diagramName", diagramName);
        return propertyBag;
    }

    protected PropertyBag createTerminalPropertyBag(String terminalEquipment, String terminalSide, double x, double y, int seq) {
        return createTerminalPropertyBag(terminalEquipment, terminalSide, x, y, seq, DEFAULT_DIAGRAM_NAME);
    }

    protected PropertyBag createBusPropertyBag(String identifiedObject, String name, String voltageLevel, String vlName, double x, double y, int seq, String diagramName) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("identifiedObject", "name", "voltageLevel", "vlname", "x", "y", "seq"), true);
        propertyBag.put("identifiedObject", identifiedObject);
        propertyBag.put("name", name);
        propertyBag.put("voltageLevel", voltageLevel);
        propertyBag.put("vlname", vlName);
        propertyBag.put("x", Double.toString(x));
        propertyBag.put("y", Double.toString(y));
        propertyBag.put("seq", Integer.toString(seq));
        propertyBag.put("diagramName", diagramName);
        return propertyBag;
    }

    protected PropertyBag createBusPropertyBag(String identifiedObject, String name, String voltageLevel, String vlName, double x, double y, int seq) {
        return createBusPropertyBag(identifiedObject, name, voltageLevel, vlName, x, y, seq, DEFAULT_DIAGRAM_NAME);
    }

    protected PropertyBag createBusbarPropertyBag(String identifiedObject, String name, double x, double y, int seq, String diagramName) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("identifiedObject", "name", "x", "y", "seq"), true);
        propertyBag.put("busbarSection", identifiedObject);
        propertyBag.put("name", name);
        propertyBag.put("x", Double.toString(x));
        propertyBag.put("y", Double.toString(y));
        propertyBag.put("seq", Integer.toString(seq));
        propertyBag.put("diagramName", diagramName);
        return propertyBag;
    }

    protected PropertyBag createBusbarPropertyBag(String identifiedObject, String name, double x, double y, int seq) {
        return createBusbarPropertyBag(identifiedObject, name, x, y, seq, DEFAULT_DIAGRAM_NAME);
    }

    protected PropertyBag createSwitchPropertyBag(String identifiedObject, String name, double x, double y, int rotation, String diagramName) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("identifiedObject", "name", "x", "y", "rotation"), true);
        propertyBag.put("identifiedObject", identifiedObject);
        propertyBag.put("name", name);
        propertyBag.put("x", Double.toString(x));
        propertyBag.put("y", Double.toString(y));
        propertyBag.put("rotation", Integer.toString(rotation));
        propertyBag.put("diagramName", diagramName);
        return propertyBag;
    }

    protected PropertyBag createSwitchPropertyBag(String identifiedObject, String name, double x, double y, int rotation) {
        return createSwitchPropertyBag(identifiedObject, name, x, y, rotation, DEFAULT_DIAGRAM_NAME);
    }

    protected PropertyBag createTerminal(String terminal, int terminalSide, String equipment) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("terminal", "terminalSide", "equipment"), true);
        propertyBag.put("terminal", terminal);
        propertyBag.put("terminalSide", Integer.toString(terminalSide));
        propertyBag.put("equipment", equipment);
        return propertyBag;
    }

    protected PropertyBag createBusbarNode(String busbar, String busbarNode) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("busbarNode", "busbarSection"), true);
        propertyBag.put("busbarNode", busbarNode);
        propertyBag.put("busbarSection", busbar);
        return propertyBag;
    }

    protected PropertyBag createVoltageLevelPropertyBag(String connectivityNode, String name, String aSwitch, double x, double y, int seq, String diagramName) {
        PropertyBag propertyBag = new PropertyBag(Arrays.asList("connectivityNode", "switch", "name", "type", "x", "y", "seq"), true);
        propertyBag.put("connectivityNode", connectivityNode);
        propertyBag.put("switch", aSwitch);
        propertyBag.put("name", name);
        propertyBag.put("type", "");
        propertyBag.put("x", Double.toString(x));
        propertyBag.put("y", Double.toString(y));
        propertyBag.put("seq", Integer.toString(seq));
        propertyBag.put("diagramName", diagramName);
        return propertyBag;
    }

    protected PropertyBag createVoltageLevelPropertyBag(String connectivityNode, String name, String aSwitch, double x, double y, int seq) {
        return createVoltageLevelPropertyBag(connectivityNode, name, aSwitch, x, y, seq, DEFAULT_DIAGRAM_NAME);
    }
}