J. POO Morgan is a comprehensive, Java-based simulation of a modern banking backend. It models the core operations of a financial institution, managing users, diverse account types, cards, and transaction histories. The system processes a stream of commands (represented as JSON objects) and outputs the results of those operations, ensuring strict adherence to banking rules (e.g., sufficient funds, card validity, account types).
This project highlights a solid understanding of Object-Oriented Programming (OOP), state management, and the processing of complex, sequential data flows.
- User & Account Management: Supports multiple users, each capable of holding various account types (e.g., standard, savings).
- Card Lifecycle Management: Simulates the creation, usage, and deletion of both standard and one-time-use virtual cards.
- Transaction Processing: Accurately handles internal transfers (send money), external payments (online/offline), and fund additions.
- Complex Scenarios: Manages intricate banking flows, including split payments among multiple users and continuous/recurring payment logic.
- Detailed Reporting: Generates comprehensive transaction histories and specific spending reports per user or account.
- Automated Validation: Driven by an internal checking mechanism that compares generated outputs against expected JSON references.
- Language: Java
- Build System: Maven
- Data Serialization: Jackson (for reading command inputs and structuring transaction outputs as JSON).
- Project Structure:
src/main/java/org/poo/: Contains the core logic.fileio/: Data Transfer Objects (DTOs) mapping to the input JSON schema.checker/: Internal tools for automated validation of transaction outcomes.main/: The application entry point and command processor.
input/: Contains the JSON files defining the sequence of banking commands.ref/: Expected output JSONs for validation.result/: The actual outputs generated by the engine during runtime.
The engine is designed to run automated banking simulations via the Main.java class.
When executed, the program:
- Reads the banking configurations and commands from the JSON files located in the
input/directory. - Processes the entire sequence of transactions, account creations, and card operations.
- Outputs the results to the
result/directory, which are then automatically compared against the expected outputs in theref/directory by the internalCheckerclass.
To run the simulations and the test suite, simply execute the Main class from your preferred Java IDE (like IntelliJ IDEA) or run the checker via Maven.
