package org.openmuc.framework.server.restws.servlets; import java.util.ArrayList; import java.util.List; import org.openmuc.framework.config.DeviceScanInfo; import org.openmuc.framework.config.DeviceScanListener; import org.openmuc.framework.lib.json.restObjects.RestScanProgressInfo; class DeviceScanListenerImplementation implements DeviceScanListener { private final RestScanProgressInfo restScanProgressInfo = new RestScanProgressInfo(); private final List<DeviceScanInfo> scannedDevicesList; DeviceScanListenerImplementation() { scannedDevicesList = new ArrayList<>(); } DeviceScanListenerImplementation(List<DeviceScanInfo> scannedDevicesList) { restScanProgressInfo.setScanFinished(false); this.scannedDevicesList = scannedDevicesList; } @Override public void deviceFound(DeviceScanInfo scanInfo) { scannedDevicesList.add(scanInfo); } @Override public void scanProgress(int scanProgress) { restScanProgressInfo.setScanProgress(scanProgress); } @Override synchronized public void scanFinished() { notify(); restScanProgressInfo.setScanFinished(true); } @Override synchronized public void scanInterrupted() { notify(); restScanProgressInfo.setScanInterrupted(true); } @Override synchronized public void scanError(String message) { notify(); restScanProgressInfo.setScanError(message); } RestScanProgressInfo getRestScanProgressInfo() { return restScanProgressInfo; } synchronized List<DeviceScanInfo> getScannedDevicesList() { while (!restScanProgressInfo.isScanFinished() && !restScanProgressInfo.isScanInterrupted() && restScanProgressInfo.getScanError() == null) { try { wait(); } catch (InterruptedException e) { } } return scannedDevicesList; } }