From bfc0b97b75f5d8ab397a0d7fd5bc2577d087e305 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Fri, 9 Feb 2024 16:22:17 +0100 Subject: [PATCH 01/12] Introducing scaling function in copy builders Implementing a bunch of missing copy builders --- .../models/input/AssetTypeInput.java | 31 +++++ .../models/input/system/BmInput.java | 6 + .../models/input/system/ChpInput.java | 6 + .../models/input/system/EvInput.java | 16 ++- .../models/input/system/EvcsInput.java | 6 + .../models/input/system/FixedFeedInInput.java | 26 ++-- .../models/input/system/HpInput.java | 26 ++-- .../models/input/system/LoadInput.java | 7 + .../models/input/system/PvInput.java | 6 + .../models/input/system/StorageInput.java | 16 ++- .../input/system/SystemParticipantInput.java | 2 + .../models/input/system/WecInput.java | 6 + .../models/input/system/type/BmTypeInput.java | 63 +++++++++ .../input/system/type/ChpTypeInput.java | 88 ++++++++++++ .../models/input/system/type/EvTypeInput.java | 64 +++++++++ .../models/input/system/type/HpTypeInput.java | 45 +++++++ .../input/system/type/StorageTypeInput.java | 126 ++++++++++++++++++ .../type/SystemParticipantTypeInput.java | 68 ++++++++++ .../input/system/type/WecTypeInput.java | 87 ++++++++++++ .../type/chargingpoint/ChargingPointType.java | 70 ++++++++++ .../InvalidSystemParticipantTypeInput.groovy | 5 + 21 files changed, 740 insertions(+), 30 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/models/input/AssetTypeInput.java b/src/main/java/edu/ie3/datamodel/models/input/AssetTypeInput.java index 907280676..6e3a558e4 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/AssetTypeInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/AssetTypeInput.java @@ -43,4 +43,35 @@ public int hashCode() { public String toString() { return "AssetTypeInput{" + "uuid=" + getUuid() + ", id=" + id + "}"; } + + /** + * Abstract class for all builder that build child entities of abstract class {@link + * AssetTypeInput} + */ + public abstract static class AssetTypeInputCopyBuilder< + B extends AssetTypeInput.AssetTypeInputCopyBuilder> + extends UniqueEntityCopyBuilder { + + private String id; + + protected AssetTypeInputCopyBuilder(AssetTypeInput entity) { + super(entity); + this.id = entity.getId(); + } + + public B id(String id) { + this.id = id; + return thisInstance(); + } + + protected String getId() { + return id; + } + + @Override + public abstract AssetTypeInput build(); + + @Override + protected abstract B thisInstance(); + } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/BmInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/BmInput.java index 5ebb38e9d..9ddb9533d 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/BmInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/BmInput.java @@ -205,6 +205,12 @@ public BmInputCopyBuilder feedInTariff(ComparableQuantity feedInTar return this; } + @Override + public BmInputCopyBuilder scale(Double factor) { + this.type = this.type.copy().scale(factor).build(); + return this; + } + @Override public BmInput build() { return new BmInput( diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/ChpInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/ChpInput.java index 1478c949b..f68d842a1 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/ChpInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/ChpInput.java @@ -222,6 +222,12 @@ public ChpInputCopyBuilder marketReaction(boolean marketReaction) { return this; } + @Override + public ChpInputCopyBuilder scale(Double factor) { + this.type = this.type.copy().scale(factor).build(); + return this; + } + @Override protected ChpInputCopyBuilder thisInstance() { return this; diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/EvInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/EvInput.java index b4796b844..0ddb4b21c 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/EvInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/EvInput.java @@ -127,6 +127,17 @@ private EvInputCopyBuilder(EvInput entity) { this.type = entity.getType(); } + public EvInputCopyBuilder type(EvTypeInput type) { + this.type = type; + return this; + } + + @Override + public EvInputCopyBuilder scale(Double factor) { + type(type.copy().scale(factor).build()); + return this; + } + @Override public EvInput build() { return new EvInput( @@ -140,11 +151,6 @@ public EvInput build() { type); } - public EvInputCopyBuilder type(EvTypeInput type) { - this.type = type; - return this; - } - @Override protected EvInputCopyBuilder thisInstance() { return this; diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java index 8513edd5c..6bc40adfb 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java @@ -283,6 +283,12 @@ public EvcsInputCopyBuilder v2gSupport(boolean v2gSupport) { return this; } + @Override + public EvcsInputCopyBuilder scale(Double factor) { + type(type.copy().scale(factor).build()); + return this; + } + @Override public EvcsInput build() { return new EvcsInput( diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/FixedFeedInInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/FixedFeedInInput.java index b765ca695..d0580202f 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/FixedFeedInInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/FixedFeedInInput.java @@ -144,6 +144,22 @@ private FixedFeedInInputCopyBuilder(FixedFeedInInput entity) { this.cosPhiRated = entity.getCosPhiRated(); } + public FixedFeedInInputCopyBuilder sRated(ComparableQuantity sRated) { + this.sRated = sRated; + return this; + } + + public FixedFeedInInputCopyBuilder cosPhiRated(double cosPhiRated) { + this.cosPhiRated = cosPhiRated; + return this; + } + + @Override + public FixedFeedInInputCopyBuilder scale(Double factor) { + sRated(sRated.multiply(factor)); + return this; + } + @Override public FixedFeedInInput build() { return new FixedFeedInInput( @@ -158,16 +174,6 @@ public FixedFeedInInput build() { cosPhiRated); } - public FixedFeedInInputCopyBuilder sRated(ComparableQuantity sRated) { - this.sRated = sRated; - return this; - } - - public FixedFeedInInputCopyBuilder cosPhiRated(double cosPhiRated) { - this.cosPhiRated = cosPhiRated; - return this; - } - @Override protected FixedFeedInInputCopyBuilder thisInstance() { return this; diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java index 89771ae58..bd1aff3e2 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/HpInput.java @@ -146,6 +146,22 @@ private HpInputCopyBuilder(HpInput entity) { this.thermalBus = entity.getThermalBus(); } + public HpInputCopyBuilder type(HpTypeInput type) { + this.type = type; + return this; + } + + public HpInputCopyBuilder thermalBus(ThermalBusInput thermalBus) { + this.thermalBus = thermalBus; + return this; + } + + @Override + public HpInputCopyBuilder scale(Double factor) { + type(type.copy().scale(factor).build()); + return this; + } + @Override public HpInput build() { return new HpInput( @@ -160,16 +176,6 @@ public HpInput build() { type); } - public HpInputCopyBuilder type(HpTypeInput type) { - this.type = type; - return this; - } - - public HpInputCopyBuilder thermalBus(ThermalBusInput thermalBus) { - this.thermalBus = thermalBus; - return this; - } - @Override protected HpInputCopyBuilder thisInstance() { return this; diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java index 196952d65..924af0c89 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/LoadInput.java @@ -317,6 +317,13 @@ public LoadInputCopyBuilder cosPhiRated(double cosPhiRated) { return this; } + @Override + public LoadInputCopyBuilder scale(Double factor) { + eConsAnnual(eConsAnnual.multiply(factor)); + sRated(sRated.multiply(factor)); + return this; + } + @Override public LoadInput build() { return new LoadInput( diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java index 2117ef313..47812390f 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/PvInput.java @@ -321,6 +321,12 @@ public PvInputCopyBuilder cosPhiRated(double cosPhiRated) { return this; } + @Override + public PvInputCopyBuilder scale(Double factor) { + this.sRated = this.sRated.multiply(factor); + return this; + } + @Override public PvInput build() { return new PvInput( diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java index ed37c1448..ec4cc3ddc 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/StorageInput.java @@ -127,6 +127,17 @@ private StorageInputCopyBuilder(StorageInput entity) { this.type = entity.getType(); } + public StorageInputCopyBuilder type(StorageTypeInput type) { + this.type = type; + return this; + } + + @Override + public StorageInputCopyBuilder scale(Double factor) { + type(type.copy().scale(factor).build()); + return this; + } + @Override public StorageInput build() { return new StorageInput( @@ -140,11 +151,6 @@ public StorageInput build() { type); } - public StorageInputCopyBuilder type(StorageTypeInput type) { - this.type = type; - return this; - } - @Override protected StorageInputCopyBuilder thisInstance() { return this; diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java index eea7df273..0a676fe2e 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/SystemParticipantInput.java @@ -181,6 +181,8 @@ public EmInput getEm() { return em; } + public abstract B scale(Double factor); + @Override public abstract SystemParticipantInput build(); diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/WecInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/WecInput.java index 05d170e59..949708f66 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/WecInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/WecInput.java @@ -145,6 +145,12 @@ private WecInputCopyBuilder(WecInput entity) { this.marketReaction = entity.isMarketReaction(); } + @Override + public WecInputCopyBuilder scale(Double factor) { + type(type.copy().scale(factor).build()); + return this; + } + @Override public WecInput build() { return new WecInput( diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/type/BmTypeInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/type/BmTypeInput.java index ad150174a..99bc7d113 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/type/BmTypeInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/type/BmTypeInput.java @@ -55,6 +55,11 @@ public ComparableQuantity getEtaConv() { return etaConv; } + @Override + public BmTypeInputCopyBuilder copy() { + return new BmTypeInputCopyBuilder(this); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -89,4 +94,62 @@ public String toString() { + etaConv + '}'; } + + /** + * Abstract class for all builder that build child entities of abstract class {@link BmTypeInput} + */ + public static class BmTypeInputCopyBuilder + extends SystemParticipantTypeInputCopyBuilder { + + private ComparableQuantity activePowerGradient; + private ComparableQuantity etaConv; + + private BmTypeInputCopyBuilder(BmTypeInput entity) { + super(entity); + this.activePowerGradient = entity.getActivePowerGradient(); + this.etaConv = entity.getEtaConv(); + } + + public BmTypeInputCopyBuilder setActivePowerGradient( + ComparableQuantity activePowerGradient) { + this.activePowerGradient = activePowerGradient; + return this; + } + + public BmTypeInputCopyBuilder setEtaConv(ComparableQuantity etaConv) { + this.etaConv = etaConv; + return this; + } + + public ComparableQuantity getActivePowerGradient() { + return activePowerGradient; + } + + public ComparableQuantity getEtaConv() { + return etaConv; + } + + public BmTypeInputCopyBuilder scale(Double factor) { + setsRated(getsRated().multiply(factor)); + return this; + } + + @Override + public BmTypeInput build() { + return new BmTypeInput( + getUuid(), + getId(), + getCapex(), + getOpex(), + activePowerGradient, + getsRated(), + getCosPhiRated(), + etaConv); + } + + @Override + protected BmTypeInputCopyBuilder thisInstance() { + return this; + } + } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/type/ChpTypeInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/type/ChpTypeInput.java index d4d1f6abe..ff1d030f0 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/type/ChpTypeInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/type/ChpTypeInput.java @@ -71,6 +71,11 @@ public ComparableQuantity getpOwn() { return pOwn; } + @Override + public ChpTypeInputCopyBuilder copy() { + return new ChpTypeInputCopyBuilder(this); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -112,4 +117,87 @@ public String toString() { + pOwn + '}'; } + + /** + * Abstract class for all builder that build child entities of abstract class {@link ChpTypeInput} + */ + public static class ChpTypeInputCopyBuilder + extends SystemParticipantTypeInputCopyBuilder { + + private ComparableQuantity etaEl; + private ComparableQuantity etaThermal; + private ComparableQuantity pThermal; + private ComparableQuantity pOwn; + + private ChpTypeInputCopyBuilder(ChpTypeInput entity) { + super(entity); + this.etaEl = entity.getEtaEl(); + this.etaThermal = entity.getEtaThermal(); + this.pThermal = entity.getpThermal(); + this.pOwn = entity.getpOwn(); + } + + public ChpTypeInputCopyBuilder setEtaEl(ComparableQuantity etaEl) { + this.etaEl = etaEl; + return this; + } + + public ChpTypeInputCopyBuilder setEtaThermal(ComparableQuantity etaThermal) { + this.etaThermal = etaThermal; + return this; + } + + public ChpTypeInputCopyBuilder setpThermal(ComparableQuantity pThermal) { + this.pThermal = pThermal; + return this; + } + + public ChpTypeInputCopyBuilder setpOwn(ComparableQuantity pOwn) { + this.pOwn = pOwn; + return this; + } + + public ComparableQuantity getEtaEl() { + return etaEl; + } + + public ComparableQuantity getEtaThermal() { + return etaThermal; + } + + public ComparableQuantity getpThermal() { + return pThermal; + } + + public ComparableQuantity getpOwn() { + return pOwn; + } + + public ChpTypeInput.ChpTypeInputCopyBuilder scale(Double factor) { + setsRated(getsRated().multiply(factor)); + setpThermal(getpThermal().multiply(factor)); + setpOwn(getpOwn().multiply(factor)); + return this; + } + + @Override + public ChpTypeInput build() { + return new ChpTypeInput( + getUuid(), + getId(), + getCapex(), + getOpex(), + etaEl, + etaThermal, + getsRated(), + getCosPhiRated(), + pThermal, + pOwn); + } + + @Override + protected ChpTypeInput.ChpTypeInputCopyBuilder thisInstance() { + return this; + } + } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/type/EvTypeInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/type/EvTypeInput.java index 465a1ae90..e5455d657 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/type/EvTypeInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/type/EvTypeInput.java @@ -54,6 +54,11 @@ public ComparableQuantity geteCons() { return eCons; } + @Override + public EvTypeInputCopyBuilder copy() { + return new EvTypeInputCopyBuilder(this); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -88,4 +93,63 @@ public String toString() { + eCons + '}'; } + + /** + * Abstract class for all builder that build child entities of abstract class {@link EvTypeInput} + */ + public static class EvTypeInputCopyBuilder + extends SystemParticipantTypeInputCopyBuilder { + + private ComparableQuantity eStorage; + private ComparableQuantity eCons; + + private EvTypeInputCopyBuilder(EvTypeInput entity) { + super(entity); + this.eStorage = entity.geteStorage(); + this.eCons = entity.geteCons(); + } + + public EvTypeInputCopyBuilder seteStorage(ComparableQuantity eStorage) { + this.eStorage = eStorage; + return this; + } + + public EvTypeInputCopyBuilder seteCons(ComparableQuantity eCons) { + this.eCons = eCons; + return this; + } + + public ComparableQuantity geteStorage() { + return eStorage; + } + + public ComparableQuantity geteCons() { + return eCons; + } + + public EvTypeInput.EvTypeInputCopyBuilder scale(Double factor) { + setsRated(getsRated().multiply(factor)); + seteStorage(geteStorage().multiply(factor)); + seteCons(geteCons().multiply(factor)); + return this; + } + + @Override + public EvTypeInput build() { + return new EvTypeInput( + getUuid(), + getId(), + getCapex(), + getOpex(), + eStorage, + eCons, + getsRated(), + getCosPhiRated()); + } + + @Override + protected EvTypeInput.EvTypeInputCopyBuilder thisInstance() { + return this; + } + } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/type/HpTypeInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/type/HpTypeInput.java index fb2532413..f8dc0da27 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/type/HpTypeInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/type/HpTypeInput.java @@ -44,6 +44,11 @@ public ComparableQuantity getpThermal() { return pThermal; } + @Override + public HpTypeInputCopyBuilder copy() { + return new HpTypeInputCopyBuilder(this); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -76,4 +81,44 @@ public String toString() { + pThermal + '}'; } + + /** + * Abstract class for all builder that build child entities of abstract class {@link HpTypeInput} + */ + public static class HpTypeInputCopyBuilder + extends SystemParticipantTypeInputCopyBuilder { + + private ComparableQuantity pThermal; + + private HpTypeInputCopyBuilder(HpTypeInput entity) { + super(entity); + this.pThermal = entity.getpThermal(); + } + + public HpTypeInputCopyBuilder setpThermal(ComparableQuantity pThermal) { + this.pThermal = pThermal; + return this; + } + + public ComparableQuantity getpThermal() { + return pThermal; + } + + public HpTypeInput.HpTypeInputCopyBuilder scale(Double factor) { + setsRated(getsRated().multiply(factor)); + setpThermal(getpThermal().multiply(factor)); + return this; + } + + @Override + public HpTypeInput build() { + return new HpTypeInput( + getUuid(), getId(), getCapex(), getOpex(), getsRated(), getCosPhiRated(), pThermal); + } + + @Override + protected HpTypeInput.HpTypeInputCopyBuilder thisInstance() { + return this; + } + } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/type/StorageTypeInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/type/StorageTypeInput.java index 4358631b9..4619a4d51 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/type/StorageTypeInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/type/StorageTypeInput.java @@ -101,6 +101,11 @@ public ComparableQuantity getActivePowerGradient() { return activePowerGradient; } + @Override + public StorageTypeInputCopyBuilder copy() { + return new StorageTypeInputCopyBuilder(this); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -152,4 +157,125 @@ public String toString() { + lifeCycle + '}'; } + + /** + * Abstract class for all builder that build child entities of abstract class {@link + * StorageTypeInput} + */ + public static class StorageTypeInputCopyBuilder + extends SystemParticipantTypeInputCopyBuilder { + + private ComparableQuantity eStorage; + private ComparableQuantity pMax; + private ComparableQuantity activePowerGradient; + private ComparableQuantity eta; + private ComparableQuantity dod; + private ComparableQuantity