# diwakar157/file-organizer architecture

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

- Interactive diagram: https://gitdiagram.com/diwakar157/file-organizer
- Repository: https://github.com/diwakar157/file-organizer

## Overview

Smart File Organizer is a Swing desktop app for selecting a folder, reviewing file categories, organizing files into category subfolders, and detecting duplicates. The main workflow runs from the UI through the organizer service, which scans files, applies XML-configured extension mappings, and moves files; duplicate detection is a separate service operation. Utilities support file operations and logging. The service, parser, and UI relationships are supported by excerpts or the README; unsampled details are not expanded.

Main entry points: [`Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java`](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java) (Organizer service), [`Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java`](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java) (XML parser), [`Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/LoggerUtil.java`](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/LoggerUtil.java) (Logger utility), [`Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/ui/MainUI.java`](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/ui/MainUI.java) (Organizer UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop app"]
  node_main["Application entry<br/>[Main.java]"]
  node_ui["Organizer UI<br/>[MainUI.java]"]
end

subgraph group_domain["Organization"]
  node_service["Organizer service"]
  node_category["File category<br/>[FileCategory.java]"]
end

subgraph group_support["Configuration and utilities"]
  node_xml["XML parser<br/>[XMLParser.java]"]
  node_config["File type config<br/>[filetypes.xml]"]
  node_fileutils["File utilities<br/>[FileUtils.java]"]
  node_logger["Logger utility<br/>[LoggerUtil.java]"]
end

node_user(("User"))
node_filesystem["Selected directory"]

node_user -->|"selects folder"| node_ui
node_main -->|"launches"| node_ui
node_main -->|"gets logger"| node_logger
node_ui -->|"organizes or detects"| node_service
node_service -->|"scans and moves"| node_filesystem
node_service -->|"loads mappings"| node_xml
node_xml -->|"reads"| node_config
node_xml -->|"creates categories"| node_category
node_service -->|"uses categories"| node_category
node_service -->|"uses file operations"| node_fileutils
node_service -->|"gets logger"| node_logger
node_xml -->|"gets logger"| node_logger
node_fileutils -->|"gets logger"| node_logger

click node_main "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/Main.java"
click node_ui "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/ui/MainUI.java"
click node_service "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java"
click node_category "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/model/FileCategory.java"
click node_xml "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java"
click node_config "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/resources/filetypes.xml"
click node_fileutils "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/FileUtils.java"
click node_logger "https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/LoggerUtil.java"

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_ui,node_user toneBlue
class node_service,node_category toneAmber
class node_xml,node_config,node_fileutils,node_logger toneMint
class node_filesystem toneIndigo
```

## Components

### Desktop app

- [Application entry](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/Main.java): `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/Main.java`
- [Organizer UI](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/ui/MainUI.java): `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/ui/MainUI.java`

### Organization

- [Organizer service](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java): `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java`
- [File category](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/model/FileCategory.java): `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/model/FileCategory.java`

### Configuration and utilities

- [XML parser](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java): `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java`
- [File type config](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/resources/filetypes.xml): `Java1/SmartFileOrganizer/src/main/resources/filetypes.xml`
- [File utilities](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/FileUtils.java): `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/FileUtils.java`
- [Logger utility](https://github.com/diwakar157/file-organizer/blob/main/Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/LoggerUtil.java): `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/LoggerUtil.java`

### Other components

- **User**
- **Selected directory**

## Connections

- User → Organizer UI: selects folder (evidence: `README.md`)
- Application entry → Organizer UI: launches (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/Main.java`)
- Application entry → Logger utility: gets logger (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/Main.java`)
- Organizer UI → Organizer service: organizes or detects (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/ui/MainUI.java`)
- Organizer service → Selected directory: scans and moves (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java`)
- Organizer service → XML parser: loads mappings (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java`)
- XML parser → File type config: reads (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java`)
- XML parser → File category: creates categories (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java`)
- Organizer service → File category: uses categories (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java`)
- Organizer service → File utilities: uses file operations (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java`)
- Organizer service → Logger utility: gets logger (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/service/FileOrganizerService.java`)
- XML parser → Logger utility: gets logger (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/XMLParser.java`)
- File utilities → Logger utility: gets logger (evidence: `Java1/SmartFileOrganizer/src/main/java/com/smartfileorganizer/util/FileUtils.java`)
