/// <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; } }
public void PrepareSyncResult(EsasSyncResult esasSyncResult) { var dbContext = _esasStagingDbContextFactory.CreateDbContext(); using (dbContext) { dbContext.EsasSyncResults.Add(esasSyncResult); dbContext.SaveChanges(); } }
public void UpdateResult(EsasSyncResult esasSyncResult) { var dbContext = _esasStagingDbContextFactory.CreateDbContext(); using (dbContext) { var existingSyncResult = dbContext.EsasSyncResults.Find(esasSyncResult.Id); dbContext.Entry(existingSyncResult).CurrentValues.SetValues(esasSyncResult); dbContext.SaveChanges(); } }
private void updateSendLoadResult(ref EsasSyncResult syncResult, EsasSendResult iterativeDeliveryResult) { if (syncResult.esasSendResult.SendStartTimeUTC == null) { syncResult.esasSendResult = new EsasSendResult() { SendDestinationStrategyName = iterativeDeliveryResult.SendDestinationStrategyName, SendStartTimeUTC = iterativeDeliveryResult.SendStartTimeUTC, SendEndTimeUTC = iterativeDeliveryResult.SendEndTimeUTC, SendTimeMs = iterativeDeliveryResult.SendTimeMs, SendToDestinationStatus = iterativeDeliveryResult.SendToDestinationStatus }; } else { syncResult.esasSendResult.SendEndTimeUTC = iterativeDeliveryResult.SendEndTimeUTC; syncResult.esasSendResult.SendTimeMs += iterativeDeliveryResult.SendTimeMs; syncResult.esasSendResult.SendToDestinationStatus = iterativeDeliveryResult.SendToDestinationStatus; } }
public void ExecuteSyncStrategy() { _logger.LogInformation($"Executing sync-strategy with corresponding load-strategy {this.EsasEntitiesLoaderStrategy.GetType().Name} and destination of {_syncResultsDestination.GetType().Name}"); EsasSyncResult syncResult = new EsasSyncResult() { SyncStartTimeUTC = DateTime.UtcNow }; _syncResultsDestination.PrepareSyncResult(syncResult); try { syncResult.SyncStartTimeUTC = DateTime.UtcNow; syncResult.SyncStrategyName = this.EsasEntitiesLoaderStrategy.GetType().Name; string syncStratMessage = $"Sync-strategy: loading {this.EsasEntitiesLoaderStrategy.GetType().Name} - start"; _logger.LogInformation(syncStratMessage); var esasLoad = EsasEntitiesLoaderStrategy.Load(); if (esasLoad.esasLoadResult.EsasLoadStatus != EsasOperationResultStatus.OperationSuccesful) { throw new Exception($"Iterative load from the web-service reported a non-succesful operation - {esasLoad.esasLoadResult.EsasLoadStatus}"); } syncStratMessage = $"Sync-strategy: loading {this.EsasEntitiesLoaderStrategy.GetType().Name} - end"; _logger.LogInformation(syncStratMessage); updateSyncLoadResult(syncResult: ref syncResult, iterativeLoadResult: esasLoad.esasLoadResult); if (esasLoad.loadedObjects == null || esasLoad.loadedObjects.Length == 0) { string noObjectsLoadedMsg = $"No further objects were loaded for loader-strategy {EsasEntitiesLoaderStrategy.GetType().Name}"; _logger.LogInformation(noObjectsLoadedMsg); syncResult.esasLoadResult.Message = noObjectsLoadedMsg; } else { try { syncStratMessage = $"Sync-strategy: delivering {_esasSyncDestination.GetType().Name} from loaded {this.EsasEntitiesLoaderStrategy.GetType().Name} - start"; _logger.LogInformation(syncStratMessage); var deliveryResult = _esasSyncDestination.Deliver(esasLoad.loadedObjects); if (deliveryResult.SendToDestinationStatus != EsasOperationResultStatus.OperationSuccesful) { throw new Exception($"send-to-destination reported a non-succesful operation - {deliveryResult.SendToDestinationStatus}"); } syncStratMessage = $"Sync-strategy: delivering {_esasSyncDestination.GetType().Name} from loaded {this.EsasEntitiesLoaderStrategy.GetType().Name} - end"; _logger.LogInformation(syncStratMessage); updateSendLoadResult(syncResult: ref syncResult, iterativeDeliveryResult: deliveryResult); } catch (Exception ex) { // TODO: log and recover throw ex; } } } catch (Exception ex) { _logger.LogError(ex.Message, ex); _syncResultsDestination.UpdateResult(syncResult); throw ex; } _logger.LogInformation($"Executing sync-strategy with corresponding load-strategy {this.EsasEntitiesLoaderStrategy.GetType().Name} - done!"); _syncResultsDestination.UpdateResult(syncResult); _logger.LogInformation($"Sync result update"); }
public void PrepareSyncResult(EsasSyncResult esasSyncResult) { // do nothing }
public void UpdateResult(EsasSyncResult esasSyncResult) { // do nothing }