Exemple #1
0
        public Logger()
        {
            string appDirectory = AppDomain.CurrentDomain.BaseDirectory;

            optionsManager = new OptionsManager(appDirectory, this);

            ETLOptions options = optionsManager.GetOptions <ETLOptions>(this) as ETLOptions;

            Validator.Validate(options, this);
            sourceDirectory  = options.DirectoryOptions.SourceDirectory;
            logFile          = options.DirectoryOptions.LogFile;
            targetDirectory  = options.DirectoryOptions.TargetDirectory;
            archiveDirectory = options.DirectoryOptions.ArchiveDirectory;
            using (StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "\\Filelog.txt"))
            {
                string logs = sr.ReadToEnd();
                using (StreamWriter writer = new StreamWriter(logFile, false))
                {
                    writer.WriteLine(logs);
                    writer.Flush();
                }
            }
            File.Delete(AppDomain.CurrentDomain.BaseDirectory + "\\Filelog.txt");


            watcher = new FileSystemWatcher(sourceDirectory)
            {
                Filter = "*.txt"
            };
            watcher.Created += Watcher_Created;
        }
        private void ValidateParsedOptions()
        {
            var configs = new ETLOptions[] { xmlConfig, jsonConfig };

            foreach (var config in configs)
            {
                foreach (var configProperty in config.GetType().GetProperties())
                {
                    foreach (var option in configProperty.PropertyType.GetProperties())
                    {
                        if (option.PropertyType == typeof(string))
                        {
                            var obj   = configProperty.GetValue(config);
                            var attrs = option.GetCustomAttributes(false);
                            foreach (var attr in attrs)
                            {
                                if (attr is PathAttribute)
                                {
                                    var path = option.GetValue(configProperty.GetValue(config)) as string;
                                    if (!Directory.Exists(path) && !File.Exists(path))
                                    {
                                        option.SetValue(obj,
                                                        option.GetValue(configProperty.GetValue(defaultConfig)));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
        internal static void Validate(ETLOptions options, Logger logger)
        {
            DirectoryOptions directoryOptions = options.DirectoryOptions;

            if (!MakeValidDir(directoryOptions.SourceDirectory))
            {
                directoryOptions.SourceDirectory = @"C:\FileWatcher\SourceDirectory";
                MakeValidDir(directoryOptions.SourceDirectory);

                logger.Log("Using default directory. Error in creating sourseDirectory ", true);
            }

            if (!MakeValidDir(directoryOptions.TargetDirectory))
            {
                directoryOptions.TargetDirectory = @"C:\FileWatcher\TargetDirectory";
                MakeValidDir(directoryOptions.TargetDirectory);

                logger.Log("Using default directory. Error in creating targetDirectory", true);
            }
            if (!MakeValidDir(directoryOptions.ArchiveDirectory))
            {
                directoryOptions.ArchiveDirectory = @"C:\FileWatcher\TargetDirectory\archive";
                MakeValidDir(directoryOptions.ArchiveDirectory);

                logger.Log("The access to archive directory is denied, using default directory.", true);
            }


            if (!MakeValidFile(directoryOptions.LogFile))
            {
                directoryOptions.LogFile = @"C:\FileWtcher\TargetDirectory\Logfile.txt";
                MakeValidFile(directoryOptions.LogFile);

                logger.Log("The access to log file is denied, using default log file.", true);
            }


            ArchiveOptions archivationOptions = options.ArchiveOptions;


            if ((int)archivationOptions.CompressionLevel < 0 || (int)archivationOptions.CompressionLevel > 2)
            {
                archivationOptions.CompressionLevel = System.IO.Compression.CompressionLevel.Optimal;

                logger.Log("Incorrect value of compression level. Default value is set.", true);
            }
        }
        private Options GetExactConfiguration <T>(ETLOptions options)
        {
            if (typeof(T) == typeof(ETLOptions))
            {
                return(options);
            }
            string name = typeof(T).Name;

            try
            {
                return(options.GetType().GetProperty(name).GetValue(options, null) as Options);
            }
            catch
            {
                throw new NotImplementedException();
            }
        }
        Options.Options FindOption <T>(ETLOptions options, Logger logger)
        {
            if (typeof(T) == typeof(ETLOptions))
            {
                return(options);
            }

            try
            {
                return(options.GetType().GetProperty(typeof(T).Name).GetValue(options, null) as Options.Options);
            }
            catch
            {
                logger.Log("FindOption didn't find the needed option and throw a NotImplementedException.", true);
                throw new NotImplementedException();
            }
        }
        public OptionsManager(string path, Logger logger)
        {
            string options;

            try
            {
                using (StreamReader sr = new StreamReader($"{path}\\appsettings.json"))
                {
                    options = sr.ReadToEnd();
                }

                jsonOptions     = new ETLJSONOptions(options);
                isJsonConnected = true;
                logger.Log("appsettings.json is loaded.", false);
            }
            catch (Exception ex)
            {
                isJsonConnected = false;
                logger.Log(ex.Message, false);
            }

            try
            {
                using (StreamReader sr = new StreamReader($"{path}\\config.xml"))
                {
                    options = sr.ReadToEnd();
                }

                xmlOptions     = new ETLXMLOptions(options);
                isXmlConnected = true;
                logger.Log("config.xml is loaded.", true);
            }
            catch (Exception ex)
            {
                isXmlConnected = false;
                logger.Log(ex.Message, true);
            }

            if (!isJsonConnected && !isXmlConnected)
            {
                defaultOptions = new ETLOptions();
                logger.Log("Default options is used.", true);
            }
        }
        public ConfigManager(string mainPath)
        {
            defaultConfig = new ETLOptions();

            string config;

            try
            {
                using (var stream = new StreamReader($"{mainPath}\\appsettings.json"))
                {
                    config = stream.ReadToEnd();
                }
                jsonConfig          = new ETLJSONOptions(config);
                jsonConfigParsed    = true;
                ConfigManagingInfo += " JSON configuration parsed.";
            }
            catch
            {
                ConfigManagingInfo += " Couldn't parse JSON.";
            }
            try
            {
                using (var stream = new StreamReader($"{mainPath}\\config.xml"))
                {
                    config = stream.ReadToEnd();
                }
                xmlConfig           = new ETLXMLOptions(config);
                xmlConfigParsed     = true;
                ConfigManagingInfo += " XML configuration parsed.";
            }
            catch
            {
                ConfigManagingInfo += " Couldn't parse XML.";
            }
            ValidateParsedOptions();
        }