Package org.kigalisim.engine.recalc.util
Class ServicingOffsetBuilder
java.lang.Object
org.kigalisim.engine.support.ValidatedBuilder<ServicingOffset>
org.kigalisim.engine.recalc.util.ServicingOffsetBuilder
Builder that calculates servicing (precharge/recharge) offsets for population changes.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected ServicingOffsetBuild the servicing offset for a population change.setImplicitPrechargeKg(BigDecimal implicitPrechargeKg) Set the implicit precharge volume in kilograms.setInitialChargeKgUnit(BigDecimal initialChargeKgUnit) Set the initial charge per unit in kg/unit.setPrechargeIntensityRaw(EngineNumber prechargeIntensityRaw) Set the raw precharge intensity value.setPrechargePopRaw(EngineNumber prechargePopRaw) Set the raw precharge population value.setRechargeKg(BigDecimal rechargeKg) Set the recharge volume in kilograms.setSalesKg(BigDecimal salesKg) Set the total substance sales volume in kilograms.setStateGetter(StateGetter stateGetter) Set the base state getter for unit conversions.setUseExplicitRechargeEffective(boolean useExplicitRechargeEffective) Set whether explicit (volume-based) recharge is in use.protected voidvalidate()Validate the fields required by every branch of servicing offset calculation.Methods inherited from class org.kigalisim.engine.support.ValidatedBuilder
build, requireField, requireField
-
Constructor Details
-
ServicingOffsetBuilder
public ServicingOffsetBuilder()Create a new ServicingOffsetBuilder.
-
-
Method Details
-
setSalesKg
Set the total substance sales volume in kilograms.- Parameters:
salesKg- The total substance sales volume in kilograms- Returns:
- This builder for chaining
-
setRechargeKg
Set the recharge volume in kilograms.- Parameters:
rechargeKg- The recharge volume in kilograms- Returns:
- This builder for chaining
-
setInitialChargeKgUnit
Set the initial charge per unit in kg/unit.- Parameters:
initialChargeKgUnit- The initial charge per unit in kg/unit- Returns:
- This builder for chaining
-
setPrechargePopRaw
Set the raw precharge population value.- Parameters:
prechargePopRaw- The raw precharge population value, or null if unspecified- Returns:
- This builder for chaining
-
setPrechargeIntensityRaw
Set the raw precharge intensity value.- Parameters:
prechargeIntensityRaw- The raw precharge intensity value- Returns:
- This builder for chaining
-
setUseExplicitRechargeEffective
Set whether explicit (volume-based) recharge is in use.- Parameters:
useExplicitRechargeEffective- Whether explicit (volume-based) recharge is in use- Returns:
- This builder for chaining
-
setImplicitPrechargeKg
Set the implicit precharge volume in kilograms.- Parameters:
implicitPrechargeKg- The implicit precharge volume in kilograms- Returns:
- This builder for chaining
-
setStateGetter
Set the base state getter for unit conversions.- Parameters:
stateGetter- The base state getter for unit conversions- Returns:
- This builder for chaining
-
buildInternal
Build the servicing offset for a population change.This method determines the precharge and recharge offsets and the resulting unit delta based on the tracking mode and precharge configuration. It dispatches to the appropriate branch: percentage precharge with volume-based sales (circular), explicit precharge with volume-based sales, or units-based tracking.
- Specified by:
buildInternalin classValidatedBuilder<ServicingOffset>- Returns:
- A ServicingOffset with deltaUnits, prechargeKg, and rechargeKg
-
validate
protected void validate()Validate the fields required by every branch of servicing offset calculation.Fields only needed by a specific branch (such as
stateGetterfor explicit precharge orimplicitPrechargeKgfor unit-based sales) are validated lazily by that branch instead, since which branch runs depends on the other fields set here.- Specified by:
validatein classValidatedBuilder<ServicingOffset>- Throws:
IllegalStateException- if a required field is missing or precharge population and intensity were not set together
-