Provide reference implementation for custom DukePoints (DKP) currency
including local ExchangeRateProvider and bidirectional conversion
between CHF and DKP.
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
Introduce optional bonus tasks in part4 covering:
- CSV-based exchange rate provider
- historical exchange rate provider with date handling
- custom currency (DKP) with bidirectional conversion
Provide exercise scaffolding and tests for all scenarios.
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>
Introduce hands-on exercises with tests covering:
* part1: MoneyExercises, ArithmeticExercises, RoundingExercises,
FormattingExercises, ParsingExercises, IntegrationExercises
* part2: CurrencyConversionExercises, MonetaryOperatorExercises,
MonetaryQueryExercises, MonetaryContextExercises,
RoundingStrategyExercises
* part3: OrderExercises (end-to-end order workflow)
Use incomplete production methods with TODOs and complete JUnit 5 tests
(AssertJ only). Tests focus on observable behavior and avoid fragile
assertions (e.g., no fixed FX rates). Ensure clear progression from
basics to advanced concepts and final integration task.
Introduce complete slide deck covering:
- problem statement and limitations of double, BigDecimal, and Currency
- fundamentals of MonetaryAmount, CurrencyUnit, and Money
- arithmetic operations, rounding, formatting, and parsing
- advanced concepts: currency conversion, MonetaryOperator, MonetaryQuery, MonetaryContext
- architecture and integration topics
- hands-on exercises for all sections
Add informational slide about JSR-354, its origins, and key contributors.
Include exercise guidance, pause slide, and workshop wrap-up.
Signed-off-by: Marcus Fihlon <marcus@fihlon.swiss>