Package org.kigalisim.engine.recalc
Class SalesStreamDistributionBuilder
java.lang.Object
org.kigalisim.engine.support.ValidatedBuilder<SalesStreamDistribution>
org.kigalisim.engine.recalc.SalesStreamDistributionBuilder
Builder for creating sales stream distribution percentages.
This class implements the logic for determining the appropriate percentage split between import, domestic, and export based on which streams have been explicitly enabled and their current values.
-
Constructor Summary
ConstructorsConstructorDescriptionCreate builder without any values initialized. -
Method Summary
Modifier and TypeMethodDescriptionprotected SalesStreamDistributionBuild a sales stream distribution based on provided values.setDomesticEnabled(boolean domesticEnabled) Set whether domestic stream is enabled.setDomesticSales(EngineNumber domesticSales) Set the domestic sales value.setExportEnabled(boolean exportEnabled) Set whether export stream is enabled.setExportSales(EngineNumber exportSales) Set the export sales value.setImportEnabled(boolean importEnabled) Set whether import stream is enabled.setImportSales(EngineNumber importSales) Set the import sales value.setIncludeExports(boolean includeExports) Set whether exports should be included in the distribution.protected voidvalidate()Check that all required fields are set before construction.Methods inherited from class org.kigalisim.engine.support.ValidatedBuilder
build, requireField, requireField
-
Constructor Details
-
SalesStreamDistributionBuilder
public SalesStreamDistributionBuilder()Create builder without any values initialized.
-
-
Method Details
-
setDomesticSales
Set the domestic sales value.- Parameters:
domesticSales- Current domestic sales value- Returns:
- This builder for method chaining
-
setImportSales
Set the import sales value.- Parameters:
importSales- Current import sales value- Returns:
- This builder for method chaining
-
setDomesticEnabled
Set whether domestic stream is enabled.- Parameters:
domesticEnabled- true if domestic stream has ever been enabled- Returns:
- This builder for method chaining
-
setImportEnabled
Set whether import stream is enabled.- Parameters:
importEnabled- true if import stream has ever been enabled- Returns:
- This builder for method chaining
-
setExportSales
Set the export sales value.- Parameters:
exportSales- Current export sales value- Returns:
- This builder for method chaining
-
setExportEnabled
Set whether export stream is enabled.- Parameters:
exportEnabled- true if export stream has ever been enabled- Returns:
- This builder for method chaining
-
setIncludeExports
Set whether exports should be included in the distribution.- Parameters:
includeExports- true if exports should be included in distribution calculations- Returns:
- This builder for method chaining
-
buildInternal
Build a sales stream distribution based on provided values.Distribution logic:- If exports are excluded: 100% split between import and domestic only
- If exports are included: proportional split between import, domestic, and export
- Proportional split based on current values if streams have sales
- Equal split among enabled streams if no current sales
- Specified by:
buildInternalin classValidatedBuilder<SalesStreamDistribution>- Returns:
- A SalesStreamDistribution with appropriate percentages
-
validate
protected void validate()Check that all required fields are set before construction.- Specified by:
validatein classValidatedBuilder<SalesStreamDistribution>- Throws:
IllegalStateException- if any required field is missing
-