@Override
public Void call() throws Exception {
String postContingencyStateId = OnlineUtils.getPostContingencyId(stateId, contingency.getId());
try {
boolean loadflowConverge = computePostContingencyState(network, stateId, contingency, postContingencyStateId);
if (loadflowConverge) {
logger.info(logHeader + "{}: computing post contingency violations for contingency {}", stateId, contingency.getId());
List<LimitViolation> violations = Security.checkLimits(network, parameters.getLimitReduction());
if (violations != null && !violations.isEmpty()) {
logger.info(logHeader + "{}: storing post contingency violations/loadflow results for contingency {} in online db", stateId, contingency.getId());
onlineDb.storePostContingencyViolations(context.getWorkflowId(), Integer.valueOf(stateId), contingency.getId(), loadflowConverge, violations);
} else {
logger.info(logHeader + "{}: no post contingency violations for contingency {}", stateId, contingency.getId());
}
} else {
logger.info("{}: post contingency loadflow does not converge for contingency {}, skipping computing post contingency violations", stateId, contingency.getId());
}
network.getStateManager().setWorkingState(stateId);
} finally {
if (network.getStateManager().getStateIds().contains(postContingencyStateId)) {
network.getStateManager().removeState(postContingencyStateId);
}
}
return null;
}
}