# onelphil/warehouse-simulation architecture

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

- Interactive diagram: https://gitdiagram.com/onelphil/warehouse-simulation
- Repository: https://github.com/onelphil/warehouse-simulation

## Overview

This Java application simulates warehouse fulfillment from configured orders through picking, marshaling, sequencing, and truck loading, while managing stock and replenishment. The principal workflow starts with Simulator configuring each Warehouse; Warehouse processes order and worker events, OrderHandler translates orders and creates pick requests, and workers move requests through Marshalling to trucks. The README also describes initial-stock resume/export, warehouse layout and SKU translation, and worker commands. Source excerpts support the key dispatch and stock interactions; some worker-stage wiring is documented but unsampled, so it is not inferred.

Main entry points: [`project/src/Simulator.java`](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Simulator.java) (Simulator), [`project/src/StockRoom.java`](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/StockRoom.java) (Stock Room), [`project/src/Warehouse.java`](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Warehouse.java) (Warehouse), [`project/src/OrderHandler.java`](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/OrderHandler.java) (Order Handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Simulation Setup"]
  node_simulator["Simulator<br/>[Simulator.java]"]
  node_filemanager["File Manager<br/>[FileManager.java]"]
  node_settings["Warehouse Inputs<br/>[settings.txt]"]
  node_events["Order Events<br/>[TestFile1.txt]"]
end

subgraph group_fulfillment["Order Fulfillment"]
  node_warehouse["Warehouse<br/>[Warehouse.java]"]
  node_order["Order<br/>[Order.java]"]
  node_orderhandler["Order Handler<br/>[OrderHandler.java]"]
  node_pickrequest["Pick Request<br/>[PickRequest.java]"]
  node_optimizer["Route Optimizer<br/>[Optimizer.java]"]
  node_picker["Picker<br/>[Picker.java]"]
  node_workerfactory["Worker Factory<br/>[WorkerFactory.java]"]
end

subgraph group_warehouse["Warehouse Operations"]
  node_stockroom[("Stock Room<br/>[StockRoom.java]")]
  node_layout["Warehouse Layout"]
  node_initial["Initial Stock<br/>[initial.csv]"]
  node_translation["SKU Translation<br/>[translation.csv]"]
  node_replenisher["Replenisher<br/>[Replenisher.java]"]
end

subgraph group_dispatch["Marshaling &amp; Dispatch"]
  node_sequencer["Sequencer<br/>[Sequencer.java]"]
  node_marshalling["Marshalling<br/>[Marshalling.java]"]
  node_loader["Loader<br/>[Loader.java]"]
  node_truck[("Truck<br/>[Truck.java]")]
end

node_operator(("Operator"))

node_operator -->|"starts simulation"| node_simulator
node_simulator -->|"reads inputs"| node_filemanager
node_simulator -->|"reads settings"| node_settings
node_simulator -->|"creates warehouses"| node_warehouse
node_simulator -->|"loads events"| node_events
node_simulator -->|"logs activity"| node_filemanager
node_warehouse -->|"creates orders"| node_order
node_warehouse -->|"submits orders"| node_orderhandler
node_warehouse -->|"creates workers"| node_workerfactory
node_warehouse -->|"replenishes stock"| node_stockroom
node_orderhandler -->|"uses mapping"| node_translation
node_orderhandler -->|"checks stock"| node_stockroom
node_orderhandler -->|"optimizes picks"| node_optimizer
node_orderhandler -->|"creates request"| node_pickrequest
node_orderhandler -->|"assigns request"| node_picker
node_optimizer -->|"reads locations"| node_stockroom
node_picker -->|"decrements stock"| node_stockroom
node_picker -->|"drops off request"| node_marshalling
node_sequencer -->|"gets requests"| node_marshalling
node_sequencer -->|"queues for loading"| node_marshalling
node_loader -->|"gets load request"| node_marshalling
node_loader -->|"loads pallets"| node_truck
node_stockroom -->|"loads initial stock"| node_initial
node_stockroom -->|"exports final stock"| node_simulator
node_stockroom -.->|"requests restock"| node_replenisher
node_warehouse -->|"loads layout"| node_layout

click node_simulator "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Simulator.java"
click node_filemanager "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/FileManager.java"
click node_settings "https://github.com/onelphil/warehouse-simulation/blob/master/project/settings.txt"
click node_events "https://github.com/onelphil/warehouse-simulation/blob/master/project/TestFile1.txt"
click node_warehouse "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Warehouse.java"
click node_order "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Order.java"
click node_orderhandler "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/OrderHandler.java"
click node_pickrequest "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/PickRequest.java"
click node_optimizer "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Optimizer.java"
click node_picker "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Picker.java"
click node_workerfactory "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/WorkerFactory.java"
click node_stockroom "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/StockRoom.java"
click node_layout "https://github.com/onelphil/warehouse-simulation/blob/master/project/traversal_table.csv"
click node_initial "https://github.com/onelphil/warehouse-simulation/blob/master/project/initial.csv"
click node_translation "https://github.com/onelphil/warehouse-simulation/blob/master/project/translation.csv"
click node_replenisher "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Replenisher.java"
click node_sequencer "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Sequencer.java"
click node_marshalling "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Marshalling.java"
click node_loader "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Loader.java"
click node_truck "https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Truck.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_simulator,node_filemanager,node_settings,node_events toneBlue
class node_warehouse,node_order,node_orderhandler,node_pickrequest,node_optimizer,node_picker,node_workerfactory toneAmber
class node_stockroom,node_layout,node_initial,node_translation,node_replenisher toneMint
class node_sequencer,node_marshalling,node_loader,node_truck toneRose
class node_operator toneIndigo
```

## Components

### Simulation Setup

- [Simulator](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Simulator.java): `project/src/Simulator.java`
- [File Manager](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/FileManager.java): `project/src/FileManager.java`
- [Warehouse Inputs](https://github.com/onelphil/warehouse-simulation/blob/master/project/settings.txt): `project/settings.txt`
- [Order Events](https://github.com/onelphil/warehouse-simulation/blob/master/project/TestFile1.txt): `project/TestFile1.txt`

### Order Fulfillment

- [Warehouse](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Warehouse.java): `project/src/Warehouse.java`
- [Order](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Order.java): `project/src/Order.java`
- [Order Handler](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/OrderHandler.java): `project/src/OrderHandler.java`
- [Pick Request](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/PickRequest.java): `project/src/PickRequest.java`
- [Route Optimizer](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Optimizer.java): `project/src/Optimizer.java`
- [Picker](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Picker.java): `project/src/Picker.java`
- [Worker Factory](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/WorkerFactory.java): `project/src/WorkerFactory.java`

### Warehouse Operations

- [Stock Room](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/StockRoom.java): `project/src/StockRoom.java`
- [Warehouse Layout](https://github.com/onelphil/warehouse-simulation/blob/master/project/traversal_table.csv): `project/traversal_table.csv`
- [Initial Stock](https://github.com/onelphil/warehouse-simulation/blob/master/project/initial.csv): `project/initial.csv`
- [SKU Translation](https://github.com/onelphil/warehouse-simulation/blob/master/project/translation.csv): `project/translation.csv`
- [Replenisher](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Replenisher.java): `project/src/Replenisher.java`

### Marshaling & Dispatch

- [Sequencer](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Sequencer.java): `project/src/Sequencer.java`
- [Marshalling](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Marshalling.java): `project/src/Marshalling.java`
- [Loader](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Loader.java): `project/src/Loader.java`
- [Truck](https://github.com/onelphil/warehouse-simulation/blob/master/project/src/Truck.java): `project/src/Truck.java`

### Other components

- **Operator**

## Connections

- Operator → Simulator: starts simulation
- Simulator → File Manager: reads inputs
- Simulator → Warehouse Inputs: reads settings
- Simulator → Warehouse: creates warehouses
- Simulator → Order Events: loads events
- Simulator → File Manager: logs activity
- Warehouse → Order: creates orders
- Warehouse → Order Handler: submits orders
- Warehouse → Worker Factory: creates workers
- Warehouse → Stock Room: replenishes stock
- Order Handler → SKU Translation: uses mapping
- Order Handler → Stock Room: checks stock
- Order Handler → Route Optimizer: optimizes picks
- Order Handler → Pick Request: creates request
- Order Handler → Picker: assigns request
- Route Optimizer → Stock Room: reads locations
- Picker → Stock Room: decrements stock
- Picker → Marshalling: drops off request
- Sequencer → Marshalling: gets requests
- Sequencer → Marshalling: queues for loading
- Loader → Marshalling: gets load request
- Loader → Truck: loads pallets
- Stock Room → Initial Stock: loads initial stock
- Stock Room → Simulator: exports final stock
- Stock Room → Replenisher: requests restock
- Warehouse → Warehouse Layout: loads layout
