package com.it_jaros.jscanner; import java.util.ArrayList; import java.util.List; public class ScanState { private final Counter counter; private final ProgressBar progressBar; private final List scanResult; public ScanState(Counter counter, ProgressBar progressBar) { this.counter = counter; this.progressBar = progressBar; // scanResult can not be given from outside because this class controls full access to it this.scanResult = new ArrayList<>(); } public Counter getCounter() { return counter; } public ProgressBar getProgressBar() { return progressBar; } public void addScanResult(ScanResult newResult) { synchronized (this.scanResult) { this.scanResult.add(newResult); } } public List getSnapshotOfScanResults() { synchronized (scanResult) { return List.copyOf(scanResult); } } }