/// <summary> /// Initializes a new instance of the <see cref="FileCabinetFilesystemService"/> class. /// </summary> /// <param name="fileStream">Stream to work with file.</param> /// <exception cref="ArgumentNullException">Thrown when stream is null.</exception> public FileCabinetFilesystemService(FileStream fileStream) { if (fileStream is null) { throw new ArgumentNullException(nameof(fileStream), Configurator.GetConstantString("NullStream")); } this.fileStream = fileStream; this.binaryWriter = new BinaryWriter(fileStream); this.binaryReader = new BinaryReader(fileStream); try { this.sizeOfChar = int.Parse(Configurator.GetSetting("SizeOfChar"), CultureInfo.InvariantCulture); this.sizeOfShort = int.Parse(Configurator.GetSetting("SizeOfShort"), CultureInfo.InvariantCulture); this.sizeOfInt = int.Parse(Configurator.GetSetting("SizeOfInt"), CultureInfo.InvariantCulture); this.sizeOfDecimal = int.Parse(Configurator.GetSetting("SizeOfDecimal"), CultureInfo.InvariantCulture); this.sizeOfString = int.Parse(Configurator.GetSetting("SizeOfString"), CultureInfo.InvariantCulture); this.sizeOfRecord = int.Parse(Configurator.GetSetting("SizeOfRecord"), CultureInfo.InvariantCulture); } catch (ArgumentException) { Console.WriteLine(Configurator.GetConstantString("InvalidTypeSyzeData")); Console.WriteLine(Configurator.GetConstantString("ClosingProgram")); Environment.Exit(-1); } catch (FormatException) { Console.WriteLine(Configurator.GetConstantString("InvalidTypeSyzeData")); Console.WriteLine(Configurator.GetConstantString("ClosingProgram")); Environment.Exit(-1); } catch (OverflowException) { Console.WriteLine(Configurator.GetConstantString("InvalidTypeSyzeData")); Console.WriteLine(Configurator.GetConstantString("ClosingProgram")); Environment.Exit(-1); } }
private static void SetCommandLineSettings(string[] args) { IConfigurationRoot validationRules = null; try { validationRules = new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .AddJsonFile(Configurator.GetSetting("ValidationRulesFileName")) .Build(); } catch (FileNotFoundException) { Console.WriteLine($"{Configurator.GetConstantString("MissingValidation")} {Configurator.GetSetting("ConstantStringsFileName")}"); Console.WriteLine(Configurator.GetConstantString("ClosingProgram")); Environment.Exit(-1); } catch (FormatException) { Console.WriteLine(Configurator.GetConstantString("InvalidValidationFile")); Console.WriteLine(Configurator.GetConstantString("ClosingProgram")); Environment.Exit(-1); } Options options = GetCommandLineArguments(args); if (options.Storage.Equals(Configurator.GetConstantString("FileStorage"), StringComparison.InvariantCultureIgnoreCase)) { SetFileService(); } else if (options.Storage.Equals(Configurator.GetConstantString("MemoryStorage"), StringComparison.InvariantCultureIgnoreCase)) { SetMemoryService(); } else { Console.WriteLine($"Wrong command line argument {options.Storage}."); Environment.Exit(-1); } if (options.Rule.Equals(Configurator.GetConstantString("CustomRule"), StringComparison.InvariantCultureIgnoreCase)) { SetCustomService(validationRules); } else if (options.Rule.Equals(Configurator.GetConstantString("DefaultRule"), StringComparison.InvariantCultureIgnoreCase)) { SetDefaultService(validationRules); } else { Console.WriteLine($"Wrong command line argument {options.Rule}."); Environment.Exit(-1); } if (fileCabinetService is FileCabinetFilesystemService) { try { fileCabinetService.Restore(fileCabinetService.MakeSnapshot()); } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception) #pragma warning restore CA1031 // Do not catch general exception types { Console.WriteLine(Configurator.GetConstantString("InvalidFile")); Console.WriteLine(Configurator.GetConstantString("ClosingProgram")); Environment.Exit(-1); } } if (options.Logger) { SetLogger(); } if (options.Stopwatch) { SetStopwatch(); } }