@Override
public RatioTapChanger add() {
if (tapPosition == null) {
throw new ValidationException(parent, "tap position is not set");
}
if (steps.isEmpty()) {
throw new ValidationException(parent, "ratio tap changer should have at least one step");
}
int highTapPosition = lowTapPosition + steps.size() - 1;
if (tapPosition < lowTapPosition || tapPosition > highTapPosition) {
throw new ValidationException(parent, "incorrect tap position "
+ tapPosition + " [" + lowTapPosition + ", "
+ highTapPosition + "]");
}
ValidationUtil.checkRatioTapChangerRegulation(parent, loadTapChangingCapabilities, regulating, regulationTerminal, targetV, getNetwork());
RatioTapChangerImpl tapChanger
= new RatioTapChangerImpl(parent, lowTapPosition, steps, regulationTerminal, loadTapChangingCapabilities,
tapPosition, regulating, targetV);
parent.setRatioTapChanger(tapChanger);
return tapChanger;
}