Пример #1
0
        public FileManager()
        {
            var optionsManager = new OptionsManager(AppDomain.CurrentDomain.BaseDirectory);

            configOptions = optionsManager.GetOptions <EtlOptions>();
        }
Пример #2
0
        private static void MovingFile(FileSystemInfo file, EtlOptions options)
        {
            byte[] key              = {};
            string clientDirectory  = "",
                   archiveDirectory = "",
                   newFilePath      = "",
                   newArchivePath   = "";

            try
            {
                key = Encryption.GenerateKey(16);
                _logger.Log(key == null ? "Key is null!" : "Key generated");
            }
            catch (Exception e)
            {
                var mess = "Troubles with generating key -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                clientDirectory = options.MoveOptions.TargetDirectory + $"/source/{file.LastWriteTime:yyyy-MM-dd}";
                _logger.Log("Created client directory");
            }
            catch (Exception e)
            {
                var mess = "Cannot create client directory -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                archiveDirectory = options.MoveOptions.ArchiveDirectory;
                _logger.Log("Created archive directory");
            }
            catch (Exception e)
            {
                var mess = "Cannot create archive directory -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                newFilePath = Path.Combine(clientDirectory, $"{Path.GetFileNameWithoutExtension(file.Name)}_{file.CreationTime:yyyy_MM_dd_hh-mm-ss}");
                _logger.Log("Create new file path");
            }
            catch (Exception e)
            {
                var mess = "Unable to create new path for file -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                newArchivePath = Path.Combine(archiveDirectory, $"{Path.GetFileNameWithoutExtension(file.Name)}_{file.CreationTime:yyyy_MM_dd_hh-mm-ss}");
                _logger.Log("Create new file path for archive");
            }
            catch (Exception e)
            {
                var mess = "Unable to create new archive path for file -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }

            CreateUniquePath(ref newFilePath);
            CreateUniquePath(ref newArchivePath);

            newFilePath    += ".gz";
            newArchivePath += ".gz";

            using (new FileStream(file.FullName, FileMode.Open)) {}

            try
            {
                File.WriteAllText(file.FullName, Encryption.Encrypt(File.ReadAllText(file.FullName), key));
                _logger.Log($"File {file.Name} encrypted");
            }
            catch (Exception e)
            {
                var mess = "Encryption failed  -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                Directory.CreateDirectory(clientDirectory);
                _logger.Log("Client directory created");
            }
            catch (Exception e)
            {
                var mess = "Client directory cannot create -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                Directory.CreateDirectory(archiveDirectory);
                _logger.Log("Archive directory created");
            }
            catch (Exception e)
            {
                var mess = "Archive directory cannot create -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                Archive.Compress(file.FullName, newFilePath, options.ArchiveOptions.CompressionLevel);
                _logger.Log($"File {file.Name} compressed");

                MoverOptionsToDb.CreateArchiveOption(MoverOptionsToDb.GenerateArchiveId(), options.ArchiveOptions.CompressionLevel.ToString());
            }
            catch (Exception e)
            {
                var mess = $"Unable to compress file {file.FullName} -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                Archive.Compress(file.FullName, newArchivePath, options.ArchiveOptions.CompressionLevel);
                _logger.Log($"File {file.Name} compressed to archive");
            }
            catch (Exception e)
            {
                var mess = $"Unable to compress file {file.FullName} -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                Archive.Decompress(newFilePath, Path.ChangeExtension(newFilePath, "txt"));
                _logger.Log($"File {file.Name} decompressed");
            }
            catch (Exception e)
            {
                var mess = $"Unable to decompress file {file.FullName} -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            File.Delete(newFilePath);

            newFilePath = Path.ChangeExtension(newFilePath, "txt");
            var text = "";

            try
            {
                text = Encryption.Decrypt(File.ReadAllText(newFilePath), key);
                _logger.Log($"File {file.Name} encrypted!");
            }
            catch (Exception e)
            {
                var mess = $"Cannot decrypt file {file.FullName} -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                File.WriteAllText(newFilePath, text);
                _logger.Log("File written");
            }
            catch (Exception e)
            {
                var mess = "File cannot be written -- " + e.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
            try
            {
                MoverToDb.CreateNote(MoverToDb.GenerateId(), file.CreationTime.ToString(CultureInfo.InvariantCulture), text);
                _logger.Log($"Create Note in Db from {file.Name}");
            }
            catch (Exception exception)
            {
                var mess = "Unable to create Note in Db -– " + exception.Message;
                _logger.Log(mess);
                MoverLogsToDb.CreateLog(MoverLogsToDb.GenerateId(), $"{DateTime.Now:hh:mm:ss dd.MM.yyyy}", mess);
            }
        }
 public FileGeneration(EtlOptions configOptions)
 {
     this.configOptions = configOptions;
 }