Exemple #1
0
        static void Main(string[] args)
        {
            IParser    parser    = new Converter.Converter();
            IValidator validator = new Validator();
            string     directory = AppDomain.CurrentDomain.BaseDirectory;

            OptionsManager <DataAccessOptions> options =
                new OptionsManager <DataAccessOptions>(directory, parser, validator);

            LoggingOptions loggingOptions = new LoggingOptions();

            //loggingOptions.ConnectingOptions = options.GetOptions<ConnectingOptions>() as ConnectingOptions;
            loggingOptions.EnableLogging = true;
            ILogger logger = new Logger.Logger(loggingOptions, parser);

            ServiceLayer.ServiceLayer SL = new ServiceLayer.ServiceLayer(
                options.GetOptions <ConnectingOptions>() as ConnectingOptions,
                parser, logger);

            SendingOptions sendingOptions = options.GetOptions <SendingOptions>() as SendingOptions;

            logger.Log("Starting pulling data");
            if (sendingOptions.PullingMode == SendingOptions.PullingModes.FullTable)
            {
                int curIndex = 1;
                int maxID    = SL.DAL.EmployeeMaxID();
                List <HumanResourcesInfo> info;
                while (curIndex < maxID)
                {
                    info = SL.GetPersonsRange(curIndex, sendingOptions.BatchSize);
                    int    lastID = info.Last().Employee.BusinessEntityID;
                    string s      = parser.SerializeXML(info);
                    using (StreamWriter sw = new StreamWriter($@"{sendingOptions.Target}\file{curIndex}-{lastID}.txt"))
                    {
                        sw.Write(s);
                    }
                    curIndex = lastID + 1;
                }
            }
            else if (sendingOptions.PullingMode == SendingOptions.PullingModes.ByBatches)
            {
                List <HumanResourcesInfo> info = SL.GetEmployees();
                SplitOnBatches(info, sendingOptions, parser);
            }
            else if (sendingOptions.PullingMode == SendingOptions.PullingModes.FullJoin)
            {
                List <HumanResourcesInfo> info = SL.GetHumanResourcesByJoin();
                SplitOnBatches(info, sendingOptions, parser);
            }

            logger.Log("Pulled all data successfully");
        }