@Override
public PhaseTapChanger add() {
if (tapPosition == null) {
throw new ValidationException(transformer, "tap position is not set");
}
if (steps.isEmpty()) {
throw new ValidationException(transformer, "a phase tap changer shall have at least one step");
}
int highTapPosition = lowTapPosition + steps.size() - 1;
if (tapPosition < lowTapPosition || tapPosition > highTapPosition) {
throw new ValidationException(transformer, "incorrect tap position "
+ tapPosition + " [" + lowTapPosition + ", "
+ highTapPosition + "]");
}
ValidationUtil.checkPhaseTapChangerRegulation(transformer, regulationMode, regulationValue, regulating, regulationTerminal, getNetwork());
PhaseTapChangerImpl tapChanger
= new PhaseTapChangerImpl(transformer, lowTapPosition, steps, regulationTerminal, tapPosition, regulating, regulationMode, regulationValue);
transformer.setPhaseTapChanger(tapChanger);
return tapChanger;
}