# mrunclejhay/javacw-question_2d architecture

> Architecture diagram of the GitHub repository mrunclejhay/javacw-question_2d, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mrunclejhay/javacw-question_2d
- Repository: https://github.com/mrunclejhay/javacw-question_2d

## Overview

The current product is the v3.0 Java Swing exhibition-registration app; v1.0 and v2.0 are archived predecessors. Its workflow is entering participant details, validating them, creating a participant record, and saving it to SQLite; users can also retrieve and view all registrations in a sortable table. The graph focuses on v3.0 and its documented registration, validation, listing, and auto-initialized database capabilities. UI and DAO interactions are supported by sampled source; configuration wiring follows the sampled connection class and repository tree.

Main entry points: [`exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/MainFrame.java`](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/MainFrame.java) (Registration Form), [`exhibition-registration_v3.0/src/main/java/vu/exhibition/dao/ParticipantDAO.java`](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/dao/ParticipantDAO.java) (Participant DAO), [`exhibition-registration_v3.0/src/main/java/vu/exhibition/database/DatabaseConnection.java`](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/database/DatabaseConnection.java) (Database Connection), [`exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ConfigLoader.java`](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ConfigLoader.java) (Config Loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop UI"]
  node_main["Registration Form<br/>[MainFrame.java]"]
  node_list_dialog["Participant List"]
end

subgraph group_domain["Participant Domain"]
  node_validation["Input Validation"]
  node_participant["Participant Record<br/>[Participant.java]"]
end

subgraph group_persistence["Persistence"]
  node_dao["Participant DAO"]
  node_connection["Database Connection"]
  node_sqlite[("SQLite Database")]
end

subgraph group_configuration["Configuration"]
  node_config_loader["Config Loader<br/>[ConfigLoader.java]"]
  node_config["DB Path Settings<br/>[config.properties]"]
end

node_user(("User"))

node_user -->|"enters details"| node_main
node_main -->|"validates input"| node_validation
node_main -->|"creates record"| node_participant
node_main -->|"inserts record"| node_dao
node_dao -->|"opens connection"| node_connection
node_dao -->|"reads and writes"| node_sqlite
node_main -->|"fetches participants"| node_dao
node_dao -->|"returns participants"| node_main
node_main -->|"shows results"| node_list_dialog
node_main -->|"initializes database"| node_connection
node_connection -->|"loads DB path"| node_config_loader
node_config_loader -->|"reads settings"| node_config
node_connection -->|"creates schema"| node_sqlite

click node_main "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/MainFrame.java"
click node_list_dialog "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/ViewParticipantsDialog.java"
click node_validation "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ValidationUtils.java"
click node_participant "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/model/Participant.java"
click node_dao "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/dao/ParticipantDAO.java"
click node_connection "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/database/DatabaseConnection.java"
click node_config_loader "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ConfigLoader.java"
click node_config "https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/resources/config.properties"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_list_dialog,node_user toneBlue
class node_validation,node_participant toneAmber
class node_dao,node_connection,node_sqlite toneMint
class node_config_loader,node_config toneRose
```

## Components

### Desktop UI

- [Registration Form](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/MainFrame.java): `exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/MainFrame.java`
- [Participant List](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/ViewParticipantsDialog.java): `exhibition-registration_v3.0/src/main/java/vu/exhibition/ui/ViewParticipantsDialog.java`

### Participant Domain

- [Input Validation](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ValidationUtils.java): `exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ValidationUtils.java`
- [Participant Record](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/model/Participant.java): `exhibition-registration_v3.0/src/main/java/vu/exhibition/model/Participant.java`

### Persistence

- [Participant DAO](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/dao/ParticipantDAO.java): `exhibition-registration_v3.0/src/main/java/vu/exhibition/dao/ParticipantDAO.java`
- [Database Connection](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/database/DatabaseConnection.java): `exhibition-registration_v3.0/src/main/java/vu/exhibition/database/DatabaseConnection.java`
- **SQLite Database**

### Configuration

- [Config Loader](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ConfigLoader.java): `exhibition-registration_v3.0/src/main/java/vu/exhibition/util/ConfigLoader.java`
- [DB Path Settings](https://github.com/mrunclejhay/javacw-question_2d/blob/main/exhibition-registration_v3.0/src/main/resources/config.properties): `exhibition-registration_v3.0/src/main/resources/config.properties`

### Other components

- **User**

## Connections

- User → Registration Form: enters details
- Registration Form → Input Validation: validates input
- Registration Form → Participant Record: creates record
- Registration Form → Participant DAO: inserts record
- Participant DAO → Database Connection: opens connection
- Participant DAO → SQLite Database: reads and writes
- Registration Form → Participant DAO: fetches participants
- Participant DAO → Registration Form: returns participants
- Registration Form → Participant List: shows results
- Registration Form → Database Connection: initializes database
- Database Connection → Config Loader: loads DB path
- Config Loader → DB Path Settings: reads settings
- Database Connection → SQLite Database: creates schema
