ModelConfig.java
/**
* Copyright (c) 2023, 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.dynawo.builders;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* @author Laurent Issertial {@literal <laurent.issertial at rte-france.com>}
*/
public record ModelConfig(String lib, String alias, String internalModelPrefix, List<String> properties, String doc, VersionInterval version) implements ModelInfo {
private static final String CONTROLLABLE_PROPERTY = "CONTROLLABLE";
private static final String DANGLING_PROPERTY = "DANGLING";
private static final String SYNCHRONIZED_PROPERTY = "SYNCHRONIZED";
private static final String TRANSFORMER_PROPERTY = "TRANSFORMER";
private static final String AUXILIARY_PROPERTY = "AUXILIARY";
public ModelConfig(String lib, String alias, String internalModelPrefix, List<String> properties, String doc, VersionInterval version) {
this.lib = Objects.requireNonNull(lib);
this.alias = alias;
this.internalModelPrefix = internalModelPrefix;
this.properties = Objects.requireNonNull(properties);
this.doc = doc;
this.version = Objects.requireNonNull(version);
}
public ModelConfig(String lib, List<String> properties) {
this(lib, null, null, properties, null, VersionInterval.createDefaultVersion());
}
public ModelConfig(String lib) {
this(lib, null, null, Collections.emptyList(), null, VersionInterval.createDefaultVersion());
}
public boolean isControllable() {
return properties.contains(CONTROLLABLE_PROPERTY);
}
public boolean isDangling() {
return properties.contains(DANGLING_PROPERTY);
}
public boolean isSynchronized() {
return properties.contains(SYNCHRONIZED_PROPERTY);
}
public boolean hasTransformer() {
return properties.contains(TRANSFORMER_PROPERTY);
}
public boolean hasAuxiliary() {
return properties.contains(AUXILIARY_PROPERTY);
}
public boolean hasProperty(String property) {
return properties.contains(property);
}
@Override
public String name() {
return alias == null ? lib : alias;
}
@Override
public String formattedInfo() {
return name() + (alias != null ? " (" + lib + ")" : "")
+ (doc != null ? ": " + doc : "")
+ " (" + version.formattedInfo() + ")";
}
}