AbstractTerminalTopologyVisitor.java

/**
 * Copyright (c) 2017, 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;

/**
 *
 * @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
 */
public abstract class AbstractTerminalTopologyVisitor extends DefaultTopologyVisitor {

    public abstract void visitTerminal(Terminal t);

    private void visitBranch(Branch branch, TwoSides side) {
        visitTerminal(branch.getTerminal(side));
    }

    @Override
    public void visitBusbarSection(BusbarSection busbarSection) {
        visitInjection(busbarSection);
    }

    @Override
    public void visitLine(Line line, TwoSides side) {
        visitBranch(line, side);
    }

    @Override
    public void visitTwoWindingsTransformer(TwoWindingsTransformer transformer, TwoSides side) {
        visitBranch(transformer, side);
    }

    @Override
    public void visitThreeWindingsTransformer(ThreeWindingsTransformer transformer, ThreeSides side) {
        visitTerminal(transformer.getTerminal(side));
    }

    private void visitInjection(Injection injection) {
        visitTerminal(injection.getTerminal());
    }

    @Override
    public void visitGenerator(Generator generator) {
        visitInjection(generator);
    }

    @Override
    public void visitBattery(Battery battery) {
        visitInjection(battery);
    }

    @Override
    public void visitLoad(Load load) {
        visitInjection(load);
    }

    @Override
    public void visitShuntCompensator(ShuntCompensator sc) {
        visitInjection(sc);
    }

    @Override
    public void visitDanglingLine(DanglingLine danglingLine) {
        visitInjection(danglingLine);
    }

    @Override
    public void visitStaticVarCompensator(StaticVarCompensator staticVarCompensator) {
        visitInjection(staticVarCompensator);
    }

    @Override
    public void visitHvdcConverterStation(HvdcConverterStation<?> converterStation) {
        visitInjection(converterStation);
    }

    @Override
    public void visitGround(Ground ground) {
        visitInjection(ground);
    }
}