com.powsybl.contingency.json.AbstractEquipmentCriterionContingencyListDeserializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of powsybl-contingency-api Show documentation
Show all versions of powsybl-contingency-api Show documentation
An API to describe and trigger contingencies
/**
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.contingency.json;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.powsybl.commons.json.JsonUtil;
import com.powsybl.contingency.contingency.list.AbstractEquipmentCriterionContingencyList;
import com.powsybl.iidm.criteria.Criterion;
import com.powsybl.iidm.criteria.PropertyCriterion;
import com.powsybl.iidm.criteria.RegexCriterion;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
/**
@author Hugo Kulesza [email protected]
*/
public abstract class AbstractEquipmentCriterionContingencyListDeserializer extends StdDeserializer {
protected AbstractEquipmentCriterionContingencyListDeserializer(Class c) {
super(c);
}
protected static class ParsingContext {
String name;
Criterion countryCriterion = null;
Criterion nominalVoltageCriterion = null;
List propertyCriteria = Collections.emptyList();
RegexCriterion regexCriterion = null;
}
protected boolean deserializeCommonAttributes(JsonParser parser, DeserializationContext ctx,
ParsingContext parsingCtx, String name, String expectedType) throws IOException {
switch (name) {
case "name" -> {
parsingCtx.name = parser.nextTextValue();
return true;
}
case "countryCriterion" -> {
parser.nextToken();
parsingCtx.countryCriterion = JsonUtil.readValue(ctx, parser, Criterion.class);
return true;
}
case "nominalVoltageCriterion" -> {
parser.nextToken();
parsingCtx.nominalVoltageCriterion = JsonUtil.readValue(ctx, parser, Criterion.class);
return true;
}
case "propertyCriteria" -> {
parser.nextToken();
parsingCtx.propertyCriteria = JsonUtil.readList(ctx, parser, Criterion.class);
return true;
}
case "regexCriterion" -> {
parser.nextToken();
parsingCtx.regexCriterion = JsonUtil.readValue(ctx, parser, Criterion.class);
return true;
}
case "version" -> {
parser.nextToken();
return true;
}
case "type" -> {
if (!parser.nextTextValue().equals(expectedType)) {
throw new IllegalStateException("type should be: " + expectedType);
}
return true;
}
default -> {
return false;
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy