BusbarSectionPosition.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/.
 * SPDX-License-Identifier: MPL-2.0
 */
package com.powsybl.iidm.network.extensions;

import com.powsybl.commons.extensions.Extension;
import com.powsybl.iidm.network.BusbarSection;

/**
 * Position information about the BusbarSection
 * <ul>
 *   <li> within the corresponding busbar ({@link BusbarSectionPosition#getSectionIndex})</li>
 *   <li> relative to other busbars of the voltage level ({@link BusbarSectionPosition#getBusbarIndex})</li>
 * </ul><p>
 * Note that a busbar is a set of BusbarSections.
 * Hence, the BusbarSections of a same busbar should have the same busbar index.
 * The busbar indices induce an order of busbars within the voltage level, which usually reflects the busbars physical relative positions.
 * <p>
 * Similarly, the section indices induce an order of BusbarSections of a same busbar, which usually reflects their physical relative position.
 * <p>
 * Note that, when used in conjunction with {@link com.powsybl.iidm.network.extensions.ConnectablePosition}, the busbar
 * described by several BusBarSections having the same section index should have ascending connectable positions for
 * ascending section indices.
 * @author Jon Harper {@literal <jon.harper at rte-france.com>}
 */
public interface BusbarSectionPosition extends Extension<BusbarSection> {

    String NAME = "busbarSectionPosition";

    @Override
    default String getName() {
        return NAME;
    }

    /**
     * Return the index of the corresponding busbar among the busbars of the voltage level
     */
    int getBusbarIndex();

    BusbarSectionPosition setBusbarIndex(int busbarIndex);

    /**
     * Return the index of the busbar section within the corresponding busbar
     */
    int getSectionIndex();

    BusbarSectionPosition setSectionIndex(int sectionIndex);

}