# dtom-ass/project_mscaba architecture

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

- Interactive diagram: https://gitdiagram.com/dtom-ass/project_mscaba
- Repository: https://github.com/dtom-ass/project_mscaba

## Overview

MSCABA is a console simulator for an agro-industrial collection center. The operator registers trucks, which the controller queues by priority; processing removes the next truck, assigns warehouse capacity, records weighing in undo/history/audit structures, and advances the quality inspector. The CLI displays queue and warehouse state and provides history, audit, and undo options. The README documents these domain capabilities, and the excerpts show the controller’s calls. Undo currently removes the truck from its stack only; the controller notes that warehouse release is not implemented. The map reflects sampled source and README claims, not unsampled behavior.

Main entry points: [`src/controller/Main.java`](https://github.com/dtom-ass/project_mscaba/blob/main/src/controller/Main.java) (Main controller), [`src/model/TruckPriorityQueue.java`](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/TruckPriorityQueue.java) (Priority queue), [`src/view/ConsoleView.java`](https://github.com/dtom-ass/project_mscaba/blob/main/src/view/ConsoleView.java) (Console CLI), [`src/model/WarehouseMatrix.java`](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/WarehouseMatrix.java) (Warehouse grid)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Console interaction"]
  node_console["Console CLI<br/>[ConsoleView.java]"]
end

subgraph group_operations["Center operations"]
  node_main["Main controller<br/>[Main.java]"]
  node_truck["Truck model<br/>[Truck.java]"]
  node_priority["Priority queue"]
  node_warehouse[("Warehouse grid")]
  node_inspectors["Inspector rotation"]
end

subgraph group_records["Operational records"]
  node_undo[("Undo stack<br/>[UndoStack.java]")]
  node_history[("Processed history")]
  node_audit[("Scale audit")]
end

node_operator(("Operator"))

node_operator -->|"selects options"| node_console
node_console -->|"returns input"| node_main
node_main -->|"renders status"| node_console
node_main -->|"creates trucks"| node_truck
node_main -->|"enqueues trucks"| node_priority
node_main -->|"takes next truck"| node_priority
node_main -->|"assigns slot"| node_warehouse
node_main -->|"requeues on full"| node_priority
node_main -->|"pushes and pops"| node_undo
node_main -->|"records and reads"| node_history
node_main -->|"records and reads"| node_audit
node_main -->|"rotates and reads"| node_inspectors
node_main -->|"reads queue status"| node_priority
node_main -->|"reads grid"| node_warehouse

click node_main "https://github.com/dtom-ass/project_mscaba/blob/main/src/controller/Main.java"
click node_console "https://github.com/dtom-ass/project_mscaba/blob/main/src/view/ConsoleView.java"
click node_truck "https://github.com/dtom-ass/project_mscaba/blob/main/src/model/Truck.java"
click node_priority "https://github.com/dtom-ass/project_mscaba/blob/main/src/model/TruckPriorityQueue.java"
click node_warehouse "https://github.com/dtom-ass/project_mscaba/blob/main/src/model/WarehouseMatrix.java"
click node_inspectors "https://github.com/dtom-ass/project_mscaba/blob/main/src/model/InspectorCircularList.java"
click node_undo "https://github.com/dtom-ass/project_mscaba/blob/main/src/model/UndoStack.java"
click node_history "https://github.com/dtom-ass/project_mscaba/blob/main/src/model/ProcessedHistoryList.java"
click node_audit "https://github.com/dtom-ass/project_mscaba/blob/main/src/model/AuditDoubleList.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_console toneBlue
class node_main,node_truck,node_priority,node_warehouse,node_inspectors toneAmber
class node_undo,node_history,node_audit toneMint
class node_operator toneIndigo
```

## Components

### Console interaction

- [Console CLI](https://github.com/dtom-ass/project_mscaba/blob/main/src/view/ConsoleView.java): `src/view/ConsoleView.java`

### Center operations

- [Main controller](https://github.com/dtom-ass/project_mscaba/blob/main/src/controller/Main.java): `src/controller/Main.java`
- [Truck model](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/Truck.java): `src/model/Truck.java`
- [Priority queue](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/TruckPriorityQueue.java): `src/model/TruckPriorityQueue.java`
- [Warehouse grid](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/WarehouseMatrix.java): `src/model/WarehouseMatrix.java`
- [Inspector rotation](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/InspectorCircularList.java): `src/model/InspectorCircularList.java`

### Operational records

- [Undo stack](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/UndoStack.java): `src/model/UndoStack.java`
- [Processed history](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/ProcessedHistoryList.java): `src/model/ProcessedHistoryList.java`
- [Scale audit](https://github.com/dtom-ass/project_mscaba/blob/main/src/model/AuditDoubleList.java): `src/model/AuditDoubleList.java`

### Other components

- **Operator**

## Connections

- Operator → Console CLI: selects options (evidence: `src/view/ConsoleView.java`)
- Console CLI → Main controller: returns input (evidence: `src/controller/Main.java`)
- Main controller → Console CLI: renders status (evidence: `src/controller/Main.java`)
- Main controller → Truck model: creates trucks (evidence: `src/controller/Main.java`)
- Main controller → Priority queue: enqueues trucks (evidence: `src/controller/Main.java`)
- Main controller → Priority queue: takes next truck (evidence: `src/controller/Main.java`)
- Main controller → Warehouse grid: assigns slot (evidence: `src/controller/Main.java`)
- Main controller → Priority queue: requeues on full (evidence: `src/controller/Main.java`)
- Main controller → Undo stack: pushes and pops (evidence: `src/controller/Main.java`)
- Main controller → Processed history: records and reads (evidence: `src/controller/Main.java`)
- Main controller → Scale audit: records and reads (evidence: `src/controller/Main.java`)
- Main controller → Inspector rotation: rotates and reads (evidence: `src/controller/Main.java`)
- Main controller → Priority queue: reads queue status (evidence: `src/controller/Main.java`)
- Main controller → Warehouse grid: reads grid (evidence: `src/controller/Main.java`)
