A Java/Swing desktop tool for registering cable labels on a supplier portal that has no API, then checking the result against the portal's CSV export.
The portal accepts keyboard and mouse input but provides no API. AutoFillSuite
uses java.awt.Robot to perform the repetitive input, but it never treats the
keystrokes as proof. After a run, it downloads a fresh CSV export and compares
the portal's records with the labels that were attempted.
The tool is used on a production-floor Windows PC and remains a standalone Java 8 JAR with no runtime dependencies.
Four modes: Intervallo (a range of labels), Scansione (scanned pairs), Da file (files from a second line) and Stampa (printing). A second line without a portal PC records its pairs with ScanLedger and exports them as CSV files for the Da file mode.
Scan the first label, enter a quantity and choose the timing. The application builds the serial range and sends one portal transaction per label.
Scan a label QR and a lot QR for each item. Valid pairs enter a queue and the fields clear immediately, so scanning can continue while the worker sends short bursts to the browser.
The queue supports continuous and block release. It rejects reversed scans,
malformed pairs, mismatches and unsafe duplicates before they are sent. In
block mode, queued rows can be selected, edited or removed before
REGISTRA TUTTO; once release starts, those rows become immutable.
Scanners configured with a TAB suffix are supported on QR 2 through the same acceptance path as ENTER. TAB on QR 1 and Shift+TAB keep normal focus traversal.
A line without a portal PC records its pairs with ScanLedger (Registro QR on
screen) and exports a CSV in the format of
docs/CSV-FORMAT.md. This mode reads that file, checks
its fingerprint, the order of the day's exports and the portal's current
state, then registers it in verified blocks and can resume where it stopped.
Some portal print forms ignore their quantity field and produce one label per click. This mode keeps the portal quantity at one and performs the required number of clicks with a configurable delay.
- Moving the mouse stops the current robot operation.
- One robot at a time: no mode starts while another one drives the mouse.
- A pair is returned to the queue only when the save action did not happen.
- The window checks that it is not covering one of its own click targets.
- Every attempted send is journaled before completion; the scan queue is written to disk before a pair shows in the table and comes back after a closed app or a power cut.
- An interrupted session can reopen with pending verification.
- Queued or uncovered rows cannot appear as verified.
- Retries request a new export instead of reusing a stale result.
The main cockpit and compact HUD use the same session state. Italian and English operator manuals are embedded in the JAR and available from the settings view.
| Mocha | Latte |
|---|---|
![]() |
![]() |
The screenshots and demo use the bundled offline test portal and synthetic
data. The compact HUD is shown in docs/screenshot-hud.png.
src/app/core/ robot tasks, CSV watcher, verifier, reports and scan guards
src/app/ui/ cockpit, HUD, themes, tables and manual renderer
src/app/config/ settings and manual loading
src/app/docs/ Italian and English manuals embedded in the JAR
test/ plain-JDK test programs
test-site/ offline portal used for end-to-end exercises
The core package does not import the UI package. Background tasks report through
listeners and deliver UI callbacks on the Swing event thread. More detail is in
docs/ARCHITECTURE.md.
Requirements: JDK 8 or newer, Ant and Xvfb for the display tests on Linux.
./verify.sh
ant jar
java -jar dist/AutoFillSuite.jarverify.sh compiles for Java 8, runs the unit and display suites, builds the
standalone JAR, checks its manifest and embedded manuals, and starts the package
under Xvfb for a controlled smoke test.
The offline test portal is
test-site/lifecycle-test.html. It keeps the
portal's interaction order and append-only CSV behavior but contains no portal
assets, production records or customer identifiers.
MIT


