How mihaita-catalin/bank-app works
This is a small in-memory banking application: clients use the Banking service to manage clients and accounts, perform deposits, withdrawals and transfers, then retrieve account or client views and bank reports. The domain includes client/active-account state, checking and savings balance rules, repository persistence, and aggregate reporting. The main workflow and service-to-repository/model calls are visible in excerpts; no README documents additional capabilities, and the XML configuration was not sampled, so its wiring is not represented.
Main entry points: BankingImpl.java Banking operations · BankReportServiceImpl.java Bank reports · Client.java Client accounts · ClientRepository.java Repository contract
Components 10
Application entry
- Demo workflow
src/main/java/BankApplication.java
Banking services
- Banking operations
src/main/java/com/luxoft/bankapp/service/BankingImpl.java - Bank reports
src/main/java/com/luxoft/bankapp/service/BankReportServiceImpl.java
Banking domain
- Client accounts
src/main/java/com/luxoft/bankapp/model/Client.java - Account balances
src/main/java/com/luxoft/bankapp/model/AbstractAccount.java - Checking rules
src/main/java/com/luxoft/bankapp/model/CheckingAccount.java - Savings rules
src/main/java/com/luxoft/bankapp/model/SavingAccount.java
Client storage
- Repository contract
src/main/java/com/luxoft/bankapp/service/storage/ClientRepository.java - In-memory clients
src/main/java/com/luxoft/bankapp/service/storage/MapClientRepository.java
Other components
- Bank user
Connections 15
- Bank user → Demo workflow: runs demo
src/main/java/BankApplication.java - Demo workflow → Banking operations: calls operations
src/main/java/BankApplication.java - Demo workflow → Bank reports: invokes reports
src/main/java/BankApplication.java - Banking operations → Repository contract: uses contract
src/main/java/com/luxoft/bankapp/service/BankingImpl.java - Bank reports → Repository contract: reads clients
src/main/java/com/luxoft/bankapp/service/BankReportServiceImpl.java - Repository contract → In-memory clients: implemented by
src/main/java/com/luxoft/bankapp/service/storage/MapClientRepository.java - Banking operations → Client accounts: manages clients
src/main/java/com/luxoft/bankapp/service/BankingImpl.java - Client accounts → Repository contract: updates state
src/main/java/com/luxoft/bankapp/model/Client.java - Client accounts → Account balances: delegates balance
src/main/java/com/luxoft/bankapp/model/Client.java - Checking rules → Account balances: extends balance
src/main/java/com/luxoft/bankapp/model/CheckingAccount.java - Savings rules → Account balances: extends balance
src/main/java/com/luxoft/bankapp/model/SavingAccount.java - Banking operations → Checking rules: creates accounts
src/main/java/com/luxoft/bankapp/service/BankingImpl.java - Banking operations → Savings rules: creates accounts
src/main/java/com/luxoft/bankapp/service/BankingImpl.java - Bank reports → Client accounts: aggregates clients
src/main/java/com/luxoft/bankapp/service/BankReportServiceImpl.java - Bank reports → Account balances: sums balances
src/main/java/com/luxoft/bankapp/service/BankReportServiceImpl.java