@Override
public GeneratorImpl add() {
String id = checkAndGetUniqueId();
TerminalExt terminal = checkAndGetTerminal();
ValidationUtil.checkEnergySource(this, energySource);
ValidationUtil.checkMinP(this, minP);
ValidationUtil.checkMaxP(this, maxP);
ValidationUtil.checkRegulatingTerminal(this, regulatingTerminal, getNetwork());
ValidationUtil.checkActivePowerSetpoint(this, targetP);
ValidationUtil.checkVoltageControl(this, voltageRegulatorOn, targetV, targetQ);
ValidationUtil.checkActiveLimits(this, minP, maxP);
ValidationUtil.checkRatedS(this, ratedS);
GeneratorImpl generator
= new GeneratorImpl(getNetwork().getRef(),
id, getName(), energySource,
minP, maxP,
voltageRegulatorOn, regulatingTerminal != null ? regulatingTerminal : terminal,
targetP, targetQ, targetV,
ratedS);
generator.addTerminal(terminal);
voltageLevel.attach(terminal, false);
getNetwork().getObjectStore().checkAndAdd(generator);
getNetwork().getListeners().notifyCreation(generator);
return generator;
}