iGlobal is a comprehensive JavaFX-based real estate management system designed for SE2203b coursework. The application provides a robust, multi-tier architecture supporting administrative, executive, and agent portals with integrated database management and secure user authentication.
- Java 21 - Modern Java runtime with enhanced performance and security features
- JavaFX 23.0.1 - Rich client application framework for cross-platform desktop applications
- Apache Derby - Embedded relational database for local data persistence
- Maven 3.x - Dependency management and build automation
- SHA-256 Encryption - Secure password hashing with salt-based encryption
┌─────────────────────────────────────────────────────────────┐
│ Presentation Layer (JavaFX) │
├─────────────────────────────────────────────────────────────┤
│ Controllers: IGlobalController, LoginController, etc. │
├─────────────────────────────────────────────────────────────┤
│ Business Logic Layer │
├─────────────────────────────────────────────────────────────┤
│ Data Models: UserAccount, Administrator, PropertyType │
├─────────────────────────────────────────────────────────────┤
│ Data Access Layer │
├─────────────────────────────────────────────────────────────┤
│ Table Adapters: UserAccountTableAdapter, etc. │
├─────────────────────────────────────────────────────────────┤
│ Database Layer (Derby) │
└─────────────────────────────────────────────────────────────┘
- Multi-tier User System: Admin, Executive, and Agent portal access levels
- Secure Password Management: SHA-256 hashing with random salt generation
- Session Management: Automatic login state persistence and logout functionality
- Property Type Administration: CRUD operations for property classifications
- Database Integration: Real-time synchronization with embedded Derby database
- Data Validation: Input validation and error handling throughout the system
- Modern JavaFX GUI: Responsive, cross-platform desktop interface
- Modal Dialog System: Secure popup windows for sensitive operations
- Table Management: Editable data grids with real-time updates
- Error Handling: Comprehensive alert system for user feedback
CREATE TABLE UserAccount (
userAccountName VARCHAR(30) NOT NULL PRIMARY KEY,
encryptedPassword VARCHAR(100) NOT NULL,
passwordSalt VARCHAR(50) NOT NULL,
accountType VARCHAR(10) NOT NULL
);CREATE TABLE Administrator (
id VARCHAR(9) NOT NULL PRIMARY KEY,
firstName VARCHAR(60) NOT NULL,
lastName VARCHAR(60) NOT NULL,
email VARCHAR(60),
phone VARCHAR(60),
dateCreated DATE,
userAccount VARCHAR(30) REFERENCES UserAccount(userAccountName)
);CREATE TABLE PropertyType (
typeCode VARCHAR(10) NOT NULL PRIMARY KEY,
typeName VARCHAR(60) NOT NULL
);- Java Development Kit (JDK) 21 or higher
- Maven 3.6+ (optional, for dependency management)
- JavaFX Runtime (included in JDK 17+)
# Clone the repository
git clone <repository-url>
cd iGlobal
# Compile the application
javac --module-path <javafx-lib-path> --add-modules javafx.controls,javafx.fxml -d target/classes src/main/java/se2203b/iGlobal/*.java
# Run the application
java --module-path <javafx-lib-path> --add-modules javafx.controls,javafx.fxml -cp target/classes se2203b.iGlobal.IGlobalApplication# Compile with Maven
mvn clean compile
# Run with JavaFX Maven plugin
mvn clean javafx:run- Launch the application
- Database tables are automatically created on first run
- Default administrator account is initialized:
- Username:
admin - Password:
admin
- Username:
- Click File → Login from the main menu
- Enter credentials (default: admin/admin)
- Access appropriate portal based on account type
- Login as administrator
- Navigate to Admin Portal → Manage Property Types
- Add, edit, or delete property type classifications
- Changes are automatically persisted to database
- Algorithm: SHA-256 with random salt
- Salt Generation: Cryptographically secure random integers
- Storage: Encrypted passwords stored in database, salts never reused
- Role-based Authorization: Different UI elements based on user privileges
- Session Management: Automatic logout and session cleanup
- Input Validation: SQL injection prevention and data sanitization
src/
├── main/
│ ├── java/
│ │ ├── module-info.java # Java module configuration
│ │ └── se2203b/iGlobal/
│ │ ├── IGlobalApplication.java # Main application entry point
│ │ ├── IGlobalController.java # Primary application controller
│ │ ├── LoginController.java # Authentication controller
│ │ ├── DataStore.java # Data access interface
│ │ ├── UserAccount.java # User account model
│ │ ├── Administrator.java # Administrator model
│ │ ├── PropertyType.java # Property type model
│ │ └── *TableAdapter.java # Database access objects
│ └── resources/
│ └── se2203b/iGlobal/
│ ├── *.fxml # JavaFX UI layouts
│ └── *.png # Application icons
├── lib/ # Apache Derby JAR files
└── iGlobalDB/ # Embedded database files
- Model-View-Controller (MVC): Separation of concerns between UI, business logic, and data
- Data Access Object (DAO): TableAdapter classes for database operations
- Factory Pattern: Database connection management
- Observer Pattern: JavaFX property bindings for real-time UI updates
- Embedded Database: Zero-configuration setup with automatic initialization
- Connection Pooling: Efficient database connection management
- Memory Management: Proper resource cleanup and garbage collection
- UI Responsiveness: Non-blocking operations with progress indicators
- Exception Management: Comprehensive try-catch blocks with user-friendly messages
- Validation: Input validation at both UI and business logic levels
- Logging: Console-based error logging for debugging
- Recovery: Graceful degradation and error recovery mechanisms
- Java Coding Conventions: Oracle Java Code Conventions compliance
- Documentation: Javadoc comments for all public methods
- Error Handling: Consistent exception handling patterns
- Testing: Unit tests for critical business logic components
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is developed for educational purposes as part of SE2203b coursework. All rights reserved.
Abdelkader Ouda
SE2203b Coursework Project
For technical support or questions regarding implementation details, please refer to the source code documentation or contact the development team.