InjectionObservabilityImpl.java
/**
* Copyright (c) 2020, 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.impl.extensions;
import com.powsybl.commons.extensions.AbstractExtension;
import com.powsybl.iidm.network.Injection;
import com.powsybl.iidm.network.extensions.InjectionObservability;
import com.powsybl.iidm.network.extensions.ObservabilityQuality;
/**
* @author Thomas Adam {@literal <tadam at silicom.fr>}
*/
public class InjectionObservabilityImpl<T extends Injection<T>> extends AbstractExtension<T>
implements InjectionObservability<T> {
private boolean observable;
private ObservabilityQuality<T> qualityP;
private ObservabilityQuality<T> qualityQ;
private ObservabilityQuality<T> qualityV;
public InjectionObservabilityImpl(T component, boolean observable) {
super(component);
this.observable = observable;
}
public InjectionObservabilityImpl(T component, boolean observable,
double standardDeviationP, Boolean redundantP,
double standardDeviationQ, Boolean redundantQ,
double standardDeviationV, Boolean redundantV) {
this(component, observable);
this.qualityP = new ObservabilityQualityImpl<>(standardDeviationP, redundantP);
this.qualityQ = new ObservabilityQualityImpl<>(standardDeviationQ, redundantQ);
this.qualityV = new ObservabilityQualityImpl<>(standardDeviationV, redundantV);
}
public boolean isObservable() {
return observable;
}
@Override
public InjectionObservability<T> setObservable(boolean observable) {
this.observable = observable;
return this;
}
@Override
public ObservabilityQuality<T> getQualityP() {
return qualityP;
}
@Override
public InjectionObservability<T> setQualityP(double standardDeviation, Boolean redundant) {
if (qualityP == null) {
qualityP = new ObservabilityQualityImpl<>(standardDeviation, redundant);
} else {
qualityP.setStandardDeviation(standardDeviation);
qualityP.setRedundant(redundant);
}
return this;
}
@Override
public InjectionObservability<T> setQualityP(double standardDeviation) {
if (qualityP == null) {
qualityP = new ObservabilityQualityImpl<>(standardDeviation);
} else {
qualityP.setStandardDeviation(standardDeviation);
}
return this;
}
@Override
public ObservabilityQuality<T> getQualityQ() {
return qualityQ;
}
@Override
public InjectionObservability<T> setQualityQ(double standardDeviation, Boolean redundant) {
if (qualityQ == null) {
qualityQ = new ObservabilityQualityImpl<>(standardDeviation, redundant);
} else {
qualityQ.setStandardDeviation(standardDeviation);
qualityQ.setRedundant(redundant);
}
return this;
}
@Override
public InjectionObservability<T> setQualityQ(double standardDeviation) {
if (qualityQ == null) {
qualityQ = new ObservabilityQualityImpl<>(standardDeviation);
} else {
qualityQ.setStandardDeviation(standardDeviation);
}
return this;
}
@Override
public ObservabilityQuality<T> getQualityV() {
return qualityV;
}
@Override
public InjectionObservability<T> setQualityV(double standardDeviation, Boolean redundant) {
if (qualityV == null) {
qualityV = new ObservabilityQualityImpl<>(standardDeviation, redundant);
} else {
qualityV.setStandardDeviation(standardDeviation);
qualityV.setRedundant(redundant);
}
return this;
}
@Override
public InjectionObservability<T> setQualityV(double standardDeviation) {
if (qualityV == null) {
qualityV = new ObservabilityQualityImpl<>(standardDeviation);
} else {
qualityV.setStandardDeviation(standardDeviation);
}
return this;
}
}