public string GenerateResult(ScanOptions scanOptions, DiscoveredScanner scanner) { try { string result = ""; foreach (IFileNamingBlock block in Blocks) { result += block.ToString(scanOptions, scanner); } return(result + ConvertImageScannerFormatToString(scanOptions.Format.TargetFormat)); } catch (Exception exc) { ILogService logService = Ioc.Default.GetService <ILogService>(); IAppCenterService appCenterService = Ioc.Default.GetService <IAppCenterService>(); logService.Log.Error(exc, "Generating file name from {pattern} failed", GetSerialized(true)); appCenterService.TrackError(exc); // fallback to rudimentary legacy file naming return("SCN" + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00") + DateTime.Now.Second.ToString("00"));; } }
/// <summary> /// Deletes the saved <see cref="PersistentScanOptions"/> for the given <paramref name="scanner"/>, if any /// exist. /// </summary> public void DeletePersistentScanOptionsForScanner(DiscoveredScanner scanner) { try { string id; if (scanner.Debug) { id = "DEBUG"; } else { id = scanner.Id; } // prepare command Connection.Open(); SqliteCommand deleteCommand = new SqliteCommand ($"DELETE FROM {TableName.ToUpper()} WHERE id = \"{id}\"", Connection); // execute deleteCommand.ExecuteReader(); Connection.Close(); LogService?.Log.Information("DeletePersistentScanOptionsForScanner: Deleted scan options"); } catch (Exception exc) { LogService.Log.Warning(exc, "Deleting persistent scan options for scanner failed."); return; } }
public void TestGenerateBrightnessConfigInvalid() { var _mockSourceConfig = new Mock <IImageScannerSourceConfiguration>(); _mockSourceConfig.Setup(x => x.BrightnessStep).Returns(0); BrightnessConfig brightnessConfig = DiscoveredScanner.GenerateBrightnessConfig(_mockSourceConfig.Object); Assert.IsNull(brightnessConfig); }
public void TestGenerateContrastConfigInvalid() { var _mockSourceConfig = new Mock <IImageScannerSourceConfiguration>(); _mockSourceConfig.Setup(x => x.ContrastStep).Returns(0); ContrastConfig contrastConfig = DiscoveredScanner.GenerateContrastConfig(_mockSourceConfig.Object); Assert.IsNull(contrastConfig); }
public void TestGenerateBrightnessConfigVirtualDefaultUp() { var _mockSourceConfig = new Mock <IImageScannerSourceConfiguration>(); _mockSourceConfig.Setup(x => x.MinBrightness).Returns(-999); _mockSourceConfig.Setup(x => x.DefaultBrightness).Returns(0); _mockSourceConfig.Setup(x => x.MaxBrightness).Returns(1000); _mockSourceConfig.Setup(x => x.BrightnessStep).Returns(1); BrightnessConfig brightnessConfig = DiscoveredScanner.GenerateBrightnessConfig(_mockSourceConfig.Object); Assert.IsNotNull(brightnessConfig); Assert.AreEqual(brightnessConfig.MinBrightness, -999); Assert.AreEqual(brightnessConfig.DefaultBrightness, 0); Assert.AreEqual(brightnessConfig.VirtualDefaultBrightness, 1); Assert.AreEqual(brightnessConfig.MaxBrightness, 1000); Assert.AreEqual(brightnessConfig.BrightnessStep, 1); }
public void TestGenerateContrastConfigVirtualDefaultUp() { var _mockSourceConfig = new Mock <IImageScannerSourceConfiguration>(); _mockSourceConfig.Setup(x => x.MinContrast).Returns(-999); _mockSourceConfig.Setup(x => x.DefaultContrast).Returns(0); _mockSourceConfig.Setup(x => x.MaxContrast).Returns(1000); _mockSourceConfig.Setup(x => x.ContrastStep).Returns(1); ContrastConfig contrastConfig = DiscoveredScanner.GenerateContrastConfig(_mockSourceConfig.Object); Assert.IsNotNull(contrastConfig); Assert.AreEqual(contrastConfig.MinContrast, -999); Assert.AreEqual(contrastConfig.DefaultContrast, 0); Assert.AreEqual(contrastConfig.VirtualDefaultContrast, 1); Assert.AreEqual(contrastConfig.MaxContrast, 1000); Assert.AreEqual(contrastConfig.ContrastStep, 1); }
/// <summary> /// Saves the <paramref name="scanOptions"/> for the given <paramref name="scanner"/>. /// </summary> public void SavePersistentScanOptionsForScanner(DiscoveredScanner scanner, PersistentScanOptions scanOptions) { try { string id; if (scanner.Debug) { id = "DEBUG"; } else { id = scanner.Id; } // prepare command Connection.Open(); SqliteCommand upsertCommand = new SqliteCommand ($"INSERT INTO {TableName.ToUpper()} VALUES" + $"(\"{id}\", {scanOptions.FlatbedBrightness != null}, {scanOptions.FlatbedBrightness ?? 0}, {scanOptions.FlatbedContrast != null}, " + $"{scanOptions.FlatbedContrast ?? 0}, {scanOptions.FeederBrightness != null}, {scanOptions.FeederBrightness ?? 0}, " + $"{scanOptions.FeederContrast != null}, {scanOptions.FeederContrast ?? 0}) " + $"ON CONFLICT(id) DO UPDATE SET flatbed_brightness_set={scanOptions.FlatbedBrightness != null}, " + $"flatbed_brightness={scanOptions.FlatbedBrightness ?? 0}, " + $"flatbed_contrast_set={scanOptions.FlatbedContrast != null}, " + $"flatbed_contrast={scanOptions.FlatbedContrast ?? 0}, " + $"feeder_brightness_set={scanOptions.FeederBrightness != null}, " + $"feeder_brightness={scanOptions.FeederBrightness ?? 0}, " + $"feeder_contrast_set={scanOptions.FeederContrast != null}, " + $"feeder_contrast={scanOptions.FeederContrast ?? 0}", Connection); // execute upsertCommand.ExecuteReader(); Connection.Close(); LogService?.Log.Information("SaveScanOptionsForScanner: Saved scan options"); } catch (Exception exc) { AppCenterService?.TrackError(exc); LogService.Log.Error(exc, "Saving persistent scan options for scanner failed."); } }
/// <summary> /// Saves the <paramref name="scanOptions"/> for the given <paramref name="scanner"/>. /// </summary> public void SaveScanOptionsForScanner(DiscoveredScanner scanner, ScanOptions scanOptions) { try { string id; if (scanner.Debug) { id = "DEBUG"; } else { id = scanner.Id; } // prepare command Connection.Open(); SqliteCommand upsertCommand = new SqliteCommand ($"INSERT INTO {TableName.ToUpper()} VALUES" + $"(\"{id}\", {(int)scanOptions.Source}, {(int)scanOptions.ColorMode}, {(int)scanOptions.Resolution}, " + $"{scanOptions.FeederMultiplePages}, {scanOptions.FeederDuplex}, {(int)scanOptions.Format.TargetFormat}, " + $"{(int)scanOptions.AutoCropMode}) " + $"ON CONFLICT(id) DO UPDATE SET source_mode={(int)scanOptions.Source}, color_mode={(int)scanOptions.ColorMode}, " + $"resolution={(int)scanOptions.Resolution}, multiple_pages={scanOptions.FeederMultiplePages}, " + $"duplex={scanOptions.FeederDuplex}, file_format={(int)scanOptions.Format.TargetFormat}, " + $"auto_crop_mode={(int)scanOptions.AutoCropMode}", Connection); // execute upsertCommand.ExecuteReader(); Connection.Close(); LogService?.Log.Information("SaveScanOptionsForScanner: Saved scan options"); } catch (Exception exc) { AppCenterService?.TrackError(exc); LogService.Log.Error(exc, "Saving scan options for scanner failed."); } }
/// <summary> /// Gets <see cref="PersistentScanOptions"/> for the given <paramref name="scanner"/>. /// </summary> public PersistentScanOptions GetPersistentScanOptionsForScanner(DiscoveredScanner scanner) { try { string id; if (scanner.Debug) { id = "DEBUG"; } else { id = scanner.Id; } Connection.Open(); SqliteCommand selectCommand = new SqliteCommand ($"SELECT * FROM {TableName.ToUpper()} WHERE ID = \"{id}\"", Connection); SqliteDataReader query = selectCommand.ExecuteReader(); // check if data for this scanner even exists if (!query.HasRows) { return(null); } // load data PersistentScanOptions result = new PersistentScanOptions(); while (query.Read()) { if (Convert.ToBoolean(int.Parse(query.GetString(1)))) { result.FlatbedBrightness = int.Parse(query.GetString(2)); } if (Convert.ToBoolean(int.Parse(query.GetString(3)))) { result.FlatbedContrast = int.Parse(query.GetString(4)); } if (Convert.ToBoolean(int.Parse(query.GetString(5)))) { result.FeederBrightness = int.Parse(query.GetString(6)); } if (Convert.ToBoolean(int.Parse(query.GetString(7)))) { result.FeederContrast = int.Parse(query.GetString(8)); } } Connection.Close(); LogService?.Log.Information($"GetPersistentScanOptionsForScanner: Returning scan options for {scanner.Name}"); return(result); } catch (Exception exc) { AppCenterService?.TrackError(exc); LogService.Log.Error(exc, $"Getting persistent scan options for {scanner.Name} failed."); return(null); } }
/// <summary> /// Gets <see cref="ScanOptions"/> for the given <paramref name="scanner"/>. /// </summary> public ScanOptions GetScanOptionsForScanner(DiscoveredScanner scanner) { try { string id; if (scanner.Debug) { id = "DEBUG"; } else { id = scanner.Id; } Connection.Open(); SqliteCommand selectCommand = new SqliteCommand ($"SELECT * FROM {TableName.ToUpper()} WHERE ID = \"{id}\"", Connection); SqliteDataReader query = selectCommand.ExecuteReader(); // check if data for this scanner even exists if (!query.HasRows) { return(null); } // load data ScanOptions result = new ScanOptions(); while (query.Read()) { // common properties result.Source = (ScannerSource)int.Parse(query.GetString(1)); result.ColorMode = (ScannerColorMode)int.Parse(query.GetString(2)); result.Format = new ScannerFileFormat((ImageScannerFormat)int.Parse(query.GetString(6))); // source mode-dependent properties switch (result.Source) { case ScannerSource.Flatbed: result.Resolution = float.Parse(query.GetString(3)); result.AutoCropMode = (ScannerAutoCropMode)int.Parse(query.GetString(7)); break; case ScannerSource.Feeder: result.Resolution = float.Parse(query.GetString(3)); result.FeederMultiplePages = Convert.ToBoolean(int.Parse(query.GetString(4))); result.FeederDuplex = Convert.ToBoolean(int.Parse(query.GetString(5))); result.AutoCropMode = (ScannerAutoCropMode)int.Parse(query.GetString(7)); break; case ScannerSource.None: case ScannerSource.Auto: default: break; } } Connection.Close(); LogService?.Log.Information("GetScanOptionsForScanner: Returning {@Result} for {Name}", result, scanner.Name); return(result); } catch (Exception exc) { AppCenterService?.TrackError(exc); LogService.Log.Error(exc, "Getting scan options for {Name} failed", scanner.Name); return(null); } }