NetworkEventRecorder.java
/**
* Copyright (c) 2024, 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;
import com.powsybl.commons.extensions.Extension;
import com.powsybl.iidm.network.events.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
public class NetworkEventRecorder implements NetworkListener {
private final List<NetworkEvent> events = new ArrayList<>();
public List<NetworkEvent> getEvents() {
return events;
}
public void reset() {
events.clear();
}
@Override
public void onCreation(Identifiable<?> identifiable) {
events.add(new CreationNetworkEvent(identifiable.getId()));
}
@Override
public void beforeRemoval(Identifiable<?> identifiable) {
events.add(new RemovalNetworkEvent(identifiable.getId(), false));
}
@Override
public void afterRemoval(String id) {
events.add(new RemovalNetworkEvent(id, true));
}
@Override
public void onUpdate(Identifiable<?> identifiable, String attribute, String variantId, Object oldValue, Object newValue) {
events.add(new UpdateNetworkEvent(identifiable.getId(), attribute, variantId, oldValue, newValue));
}
@Override
public void onExtensionCreation(Extension<?> extension) {
events.add(new ExtensionCreationNetworkEvent(((Identifiable<?>) extension.getExtendable()).getId(), extension.getName()));
}
@Override
public void onExtensionAfterRemoval(Identifiable<?> identifiable, String extensionName) {
events.add(new ExtensionRemovalNetworkEvent(identifiable.getId(), extensionName, true));
}
@Override
public void onExtensionBeforeRemoval(Extension<?> extension) {
events.add(new ExtensionRemovalNetworkEvent(((Identifiable<?>) extension.getExtendable()).getId(), extension.getName(), false));
}
@Override
public void onExtensionUpdate(Extension<?> extension, String attribute, String variantId, Object oldValue, Object newValue) {
events.add(new ExtensionUpdateNetworkEvent(((Identifiable<?>) extension.getExtendable()).getId(), extension.getName(), attribute, variantId, oldValue, newValue));
}
@Override
public void onPropertyAdded(Identifiable<?> identifiable, String key, Object newValue) {
events.add(new PropertiesUpdateNetworkEvent(identifiable.getId(), key, PropertiesUpdateNetworkEvent.PropertyUpdateType.ADDED, null, newValue));
}
@Override
public void onPropertyReplaced(Identifiable<?> identifiable, String key, Object oldValue, Object newValue) {
events.add(new PropertiesUpdateNetworkEvent(identifiable.getId(), key, PropertiesUpdateNetworkEvent.PropertyUpdateType.REPLACED, oldValue, newValue));
}
@Override
public void onPropertyRemoved(Identifiable<?> identifiable, String key, Object oldValue) {
events.add(new PropertiesUpdateNetworkEvent(identifiable.getId(), key, PropertiesUpdateNetworkEvent.PropertyUpdateType.REMOVED, oldValue, null));
}
@Override
public void onVariantCreated(String sourceVariantId, String targetVariantId) {
events.add(new VariantNetworkEvent(sourceVariantId, targetVariantId, VariantNetworkEvent.VariantEventType.CREATED));
}
@Override
public void onVariantOverwritten(String sourceVariantId, String targetVariantId) {
events.add(new VariantNetworkEvent(sourceVariantId, targetVariantId, VariantNetworkEvent.VariantEventType.OVERWRITTEN));
}
@Override
public void onVariantRemoved(String variantId) {
events.add(new VariantNetworkEvent(variantId, null, VariantNetworkEvent.VariantEventType.REMOVED));
}
}