コード例 #1
0
ファイル: EsasSyncStrategy.cs プロジェクト: harleydk/ESASsync
 /// <summary>
 /// Opdaterer det samlede sync-load resultat, på baggrund af et del-resultat (fordi vi henter i bidder a N records per iteration).
 /// </summary>
 /// <param name="fullLoadResult">Det samlede sync-load resultat</param>
 /// <param name="iterativeLoadResult"></param>
 private void updateSyncLoadResult(ref EsasSyncResult syncResult, EsasLoadResult iterativeLoadResult)
 {
     if (syncResult.esasLoadResult.LoadStartTimeUTC == null)
     {
         syncResult.esasLoadResult = new EsasLoadResult()
         {
             ModifiedOnDateTimeUTC = iterativeLoadResult.ModifiedOnDateTimeUTC,
             EsasLoadStatus        = iterativeLoadResult.EsasLoadStatus,
             LoadEndTimeUTC        = iterativeLoadResult.LoadEndTimeUTC,
             LoadStartTimeUTC      = iterativeLoadResult.LoadStartTimeUTC,
             LoaderStrategyName    = iterativeLoadResult.LoaderStrategyName,
             NumberOfObjectsLoaded = iterativeLoadResult.NumberOfObjectsLoaded,
             LoadTimeMs            = iterativeLoadResult.LoadTimeMs,
             Message = iterativeLoadResult.Message
         };
     }
     else
     {
         syncResult.esasLoadResult.LoadTimeMs           += iterativeLoadResult.LoadTimeMs;
         syncResult.esasLoadResult.LoadEndTimeUTC        = iterativeLoadResult.LoadEndTimeUTC;
         syncResult.esasLoadResult.ModifiedOnDateTimeUTC = iterativeLoadResult.ModifiedOnDateTimeUTC;
         syncResult.esasLoadResult.EsasLoadStatus        = iterativeLoadResult.EsasLoadStatus;
         syncResult.esasLoadResult.Message = iterativeLoadResult.Message;
         syncResult.esasLoadResult.NumberOfObjectsLoaded += iterativeLoadResult.NumberOfObjectsLoaded;
     }
 }
コード例 #2
0
        public (EsasLoadResult esasLoadResult, object[] loadedObjects) Load()
        {
            _esasContainer = _esasContextFactory.Create();

            EsasLoadResult loadResult = new EsasLoadResult();

            loadResult.LoaderStrategyName = this.GetType().Name;
            loadResult.LoadStartTimeUTC   = DateTime.UtcNow;
            DateTime deltaTimeLoadvalue = new DateTime(1963, 11, 22).ToUniversalTime(); // J.F.K. RIP

            loadResult.ModifiedOnDateTimeUTC = deltaTimeLoadvalue;

            object[] loadedObjects = null;
            try
            {
                Stopwatch sp = new Stopwatch();
                sp.Start();
                loadedObjects = _esasContainer.OptionSetValueString.ToArray();
                sp.Stop();

                loadResult.EsasLoadStatus = EsasOperationResultStatus.OperationSuccesful;
                loadResult.LoadTimeMs     = sp.ElapsedMilliseconds;
                loadResult.Message        = $"{loadedObjects.Count()} objects loaded";
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
                loadResult.EsasLoadStatus = EsasOperationResultStatus.OperationFailed;
                loadResult.Message        = $"Exception: {ex.Message}";
            }

            loadResult.LoadEndTimeUTC = DateTime.UtcNow;
            return(loadResult, loadedObjects);
        }
コード例 #3
0
ファイル: BaseLoadStrategy.cs プロジェクト: harleydk/ESASsync
        public (EsasLoadResult esasLoadResult, object[] loadedObjects) Load()
        {
            EsasLoadResult loadResult = new EsasLoadResult();

            loadResult.LoaderStrategyName = this.GetType().Name;
            loadResult.LoadStartTimeUTC   = DateTime.UtcNow;

            object[] loadedObjects = null;
            try
            {
                var esasContext = _esasWebServiceContextFactory.Create();

                Stopwatch sp = new Stopwatch();
                sp.Start();

                DateTime deltaTimeLoadvalue = _loadTimeStrategy.GetLoadTimeCutoff(this);
                _logger.LogInformation($"Set a load-cutoff time of {deltaTimeLoadvalue.ToString("O")}");
                loadedObjects = LoadObjects(deltaTimeLoadvalue);
                loadResult.ModifiedOnDateTimeUTC = deltaTimeLoadvalue;

                sp.Stop();

                loadResult.EsasLoadStatus = EsasOperationResultStatus.OperationSuccesful;
                loadResult.LoadTimeMs     = sp.ElapsedMilliseconds;
                if (loadedObjects != null)
                {
                    loadResult.NumberOfObjectsLoaded = loadedObjects.Count();
                }

                esasContext = null; // mark as ready for disposal
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
                loadResult.EsasLoadStatus = EsasOperationResultStatus.OperationFailed;
                loadResult.Message        = $"Exception: {ex.Message}";
            }

            loadResult.LoadEndTimeUTC = DateTime.UtcNow;
            return(loadResult, loadedObjects);
        }