Skip to content

prananchh/Real-Estate-Database-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iGlobal Real Estate Management System

Overview

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.

Technical Architecture

Core Technologies

  • 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

System Architecture

┌─────────────────────────────────────────────────────────────┐
│                    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)                   │
└─────────────────────────────────────────────────────────────┘

Key Features

🔐 Authentication & Authorization

  • 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 Management

  • 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

🖥️ User Interface

  • 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

Database Schema

UserAccount Table

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
);

Administrator Table

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)
);

PropertyType Table

CREATE TABLE PropertyType (
    typeCode VARCHAR(10) NOT NULL PRIMARY KEY,
    typeName VARCHAR(60) NOT NULL
);

Installation & Setup

Prerequisites

  • Java Development Kit (JDK) 21 or higher
  • Maven 3.6+ (optional, for dependency management)
  • JavaFX Runtime (included in JDK 17+)

Build Instructions

# 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

Maven Build (Alternative)

# Compile with Maven
mvn clean compile

# Run with JavaFX Maven plugin
mvn clean javafx:run

Usage

Initial Setup

  1. Launch the application
  2. Database tables are automatically created on first run
  3. Default administrator account is initialized:
    • Username: admin
    • Password: admin

Login Process

  1. Click File → Login from the main menu
  2. Enter credentials (default: admin/admin)
  3. Access appropriate portal based on account type

Property Type Management

  1. Login as administrator
  2. Navigate to Admin Portal → Manage Property Types
  3. Add, edit, or delete property type classifications
  4. Changes are automatically persisted to database

Security Features

Password Encryption

  • Algorithm: SHA-256 with random salt
  • Salt Generation: Cryptographically secure random integers
  • Storage: Encrypted passwords stored in database, salts never reused

Access Control

  • 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

Development Information

Project Structure

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

Design Patterns

  • 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

Technical Specifications

Performance Considerations

  • 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

Error Handling

  • 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

Contributing

Code Standards

  • 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

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is developed for educational purposes as part of SE2203b coursework. All rights reserved.

Author

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages