public ExportablePsaTraceViewModel(PsaTraceInfo model) { if (model == null) { throw new ArgumentNullException("model"); } this.model = model; foreach (PsaParametersSet set in model.Trace.ParametersSets) { ExportablePsaParametersSetViewModel vm = new ExportablePsaParametersSetViewModel(set); RegisterExportableChild(vm); parametersSets.Add(vm); } containsUnrecognizedData = IsThereUnrecognizedData(model.Trace); if (containsUnrecognizedData) { SynchronizationStatus.Update(DataSynchronizationStatus.DataUnsupported); } else { SynchronizationStatus.Update(DataSynchronizationStatus.InProgress); } }
private SynchronizationModel GetResponse( string message = "", int updated = 0, SynchronizationState state = SynchronizationState.Finished, SynchronizationStatus status = SynchronizationStatus.Success) => new SynchronizationModel { Logs = { message }, ProductsUpdated = updated, Status = status, State = state, };
public void TerminateTask(int galleryId, string taskId) { ISynchronizationStatus synchStatus = SynchronizationStatus.GetInstance(galleryId); try { synchStatus.CancelSynchronization(taskId); } catch (Exception ex) { AppErrorController.LogError(ex); throw; } }
public void UpdateStatus(string id, SynchronizationStatus status) { var objectId = new ObjectId(id); var filter = Builders <BsonDocument> .Filter.Eq("_id", objectId); var update = Builders <BsonDocument> .Update.Set("Status", status.ToString()); var doc = base.collection.FindOneAndUpdate(filter, update); var dto = BsonSerializer.Deserialize <SynchronizationDto>(doc); if (dto.Status == status) { throw new StatusNotChangedException($"Status is already {status}"); } }
public async void SetSynchronizationStatus(ISynchronization sync, SynchronizationStatus status, string additionalInfo = null) { var uri = new Uri(this.syncUri, sync.Id + "/status"); string body = $@"{{""Status"":""{status}""}}"; Logging.Log().Debug($"Sending HTTP PUT request to {uri} with body {body}"); var content = new StringContent(body, Encoding.UTF8, "application/json"); var response = await this.httpClient.PutAsync(uri, content); if (response.StatusCode != HttpStatusCode.OK) { throw new StatusNotChangedException(response.ReasonPhrase); } }
private void OnStatusChanged(object sender, ApiStatus status) { switch (status) { case ApiStatus.Running: if (Synchronization == SynchronizationStatus.Pending) { Synchronization = SynchronizationStatus.Running; } break; case ApiStatus.Stopped: StopSynchronization(); break; } }
public void StartSynchronization() { if (Synchronization != SynchronizationStatus.Stopped || !IsApiAttached) { return; } _eliteAPI.StatusChanged += OnStatusChanged; _eliteAPI.GameEvents.LoadGame += GameOnLoadGameAsync; _eliteAPI.PlayerEvents.Commander += PlayerOnCommander; _eliteAPI.PlayerEvents.NewCommander += PlayerOnNewCommander; _eliteAPI.PlayerEvents.Friends += PlayerOnFriendsAsync; _eliteAPI.PlayerEvents.Statistics += PlayerOnStatisticsAsync; _eliteAPI.PlayerEvents.Rank += PlayerOnRankAsync; _eliteAPI.PlayerEvents.Promotion += PlayerOnPromotionAsync; _eliteAPI.PlayerEvents.Progress += PlayerOnProgressAsync; _eliteAPI.PlayerEvents.Reputation += PlayerOnReputationAsync; _eliteAPI.PowerplayEvents.Powerplay += PowerplayOnPowerplayAsync; _eliteAPI.TravelEvents.FsdJump += TravelOnFsdJumpAsync; _eliteAPI.TravelEvents.Location += TravelOnLocationAsync; _eliteAPI.TravelEvents.Docked += TravelOnDockedAsync; _eliteAPI.StationEvents.EngineerProgress += StationOnEngineerProgressAsync; _eliteAPI.StationEvents.ShipyardBuy += StationOnShipyardBuyAsync; _eliteAPI.StationEvents.ShipyardNew += StationOnShipyardNewAsync; _eliteAPI.StationEvents.SetUserShipName += StationOnSetUserShipNameAsync; _eliteAPI.StationEvents.ShipyardSwap += StationOnShipyardSwapAsync; _eliteAPI.StationEvents.ShipyardTransfer += StationEventsOnShipyardTransferAsync; _eliteAPI.ShipEvents.Loadout += ShipEventsOnLoadoutAsync; _eliteAPI.CombatEvents.Died += CombatEventsOnDiedAsync; _eliteAPI.CombatEvents.Interdicted += CombatEventsOnInterdictedAsync; _eliteAPI.CombatEvents.Interdiction += CombatEventsOnInterdictionAsync; _eliteAPI.CombatEvents.EscapeInterdiction += CombatEventsOnEscapeInterdictionAsync; _eliteAPI.CombatEvents.PvpKill += CombatEventsOnPvpKillAsync; _eliteAPI.Start(); Synchronization = _eliteAPI.Status == ApiStatus.Running ? SynchronizationStatus.Running : SynchronizationStatus.Pending; }
public SynchStatusWebEntity GetCurrentStatus(int galleryId) { ISynchronizationStatus synchStatus = SynchronizationStatus.GetInstance(galleryId); try { SynchStatusWebEntity synchStatusWeb = new SynchStatusWebEntity(); synchStatusWeb.SynchId = synchStatus.SynchId; synchStatusWeb.TotalFileCount = synchStatus.TotalFileCount; synchStatusWeb.CurrentFileIndex = synchStatus.CurrentFileIndex + 1; if ((synchStatus.CurrentFilePath != null) && (synchStatus.CurrentFileName != null)) { synchStatusWeb.CurrentFile = System.IO.Path.Combine(synchStatus.CurrentFilePath, synchStatus.CurrentFileName); } synchStatusWeb.Status = synchStatus.Status.ToString(); synchStatusWeb.StatusForUI = GetFriendlyStatusText(synchStatus.Status); synchStatusWeb.PercentComplete = CalculatePercentComplete(synchStatus); // Update the Skipped Files, but only when the synch is complete. lock (synchStatus) { if (synchStatus.Status == SynchronizationState.Complete) { if (synchStatus.SkippedMediaObjects.Count > GlobalConstants.MaxNumberOfSkippedObjectsToDisplayAfterSynch) { // We have a large number of skipped media objects. We don't want to send it all to the browsers, because it might take // too long or cause an error if it serializes to a string longer than int.MaxValue, so let's trim it down. synchStatus.SkippedMediaObjects.RemoveRange(GlobalConstants.MaxNumberOfSkippedObjectsToDisplayAfterSynch, synchStatus.SkippedMediaObjects.Count - GlobalConstants.MaxNumberOfSkippedObjectsToDisplayAfterSynch); } synchStatusWeb.SkippedFiles = synchStatus.SkippedMediaObjects; } } return(synchStatusWeb); } catch (Exception ex) { AppErrorController.LogError(ex, synchStatus.GalleryId); throw; } }
public void StopSynchronization() { if (Synchronization == SynchronizationStatus.Stopped) { return; } _eliteAPI.StatusChanged -= OnStatusChanged; _eliteAPI.GameEvents.LoadGame -= GameOnLoadGameAsync; _eliteAPI.PlayerEvents.Commander -= PlayerOnCommander; _eliteAPI.PlayerEvents.NewCommander -= PlayerOnNewCommander; _eliteAPI.PlayerEvents.Friends -= PlayerOnFriendsAsync; _eliteAPI.PlayerEvents.Statistics -= PlayerOnStatisticsAsync; _eliteAPI.PlayerEvents.Rank -= PlayerOnRankAsync; _eliteAPI.PlayerEvents.Promotion -= PlayerOnPromotionAsync; _eliteAPI.PlayerEvents.Progress -= PlayerOnProgressAsync; _eliteAPI.PlayerEvents.Reputation -= PlayerOnReputationAsync; _eliteAPI.PowerplayEvents.Powerplay -= PowerplayOnPowerplayAsync; _eliteAPI.TravelEvents.FsdJump -= TravelOnFsdJumpAsync; _eliteAPI.TravelEvents.Location -= TravelOnLocationAsync; _eliteAPI.TravelEvents.Docked -= TravelOnDockedAsync; _eliteAPI.StationEvents.EngineerProgress -= StationOnEngineerProgressAsync; _eliteAPI.StationEvents.ShipyardBuy -= StationOnShipyardBuyAsync; _eliteAPI.StationEvents.ShipyardNew -= StationOnShipyardNewAsync; _eliteAPI.StationEvents.SetUserShipName -= StationOnSetUserShipNameAsync; _eliteAPI.StationEvents.ShipyardSwap -= StationOnShipyardSwapAsync; _eliteAPI.StationEvents.ShipyardTransfer -= StationEventsOnShipyardTransferAsync; _eliteAPI.ShipEvents.Loadout -= ShipEventsOnLoadoutAsync; _eliteAPI.CombatEvents.Died -= CombatEventsOnDiedAsync; _eliteAPI.CombatEvents.Interdicted -= CombatEventsOnInterdictedAsync; _eliteAPI.CombatEvents.Interdiction -= CombatEventsOnInterdictionAsync; _eliteAPI.CombatEvents.EscapeInterdiction -= CombatEventsOnEscapeInterdictionAsync; _eliteAPI.CombatEvents.PvpKill -= CombatEventsOnPvpKillAsync; Synchronization = SynchronizationStatus.Stopped; }
public ComponentContainer(Application application, IGeneralOptionsDataAccess generalOptionsDataAccess, IComWrapperFactory comWrapperFactory, IExceptionHandlingStrategy exceptionHandlingStrategy) { if (application == null) { throw new ArgumentNullException(nameof(application)); } if (generalOptionsDataAccess == null) { throw new ArgumentNullException(nameof(generalOptionsDataAccess)); } if (comWrapperFactory == null) { throw new ArgumentNullException(nameof(comWrapperFactory)); } s_logger.Info("Startup..."); s_logger.Info($"Version: {Assembly.GetExecutingAssembly().GetName().Version}"); s_logger.Info($"Operating system: {Environment.OSVersion}"); _profileTypeRegistry = ProfileTypeRegistry.Instance; if (GeneralOptionsDataAccess.WpfRenderModeSoftwareOnly) { RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly; } _generalOptionsDataAccess = generalOptionsDataAccess; _synchronizationStatus = new SynchronizationStatus(); var generalOptions = _generalOptionsDataAccess.LoadOptions(); _daslFilterProvider = new DaslFilterProvider(generalOptions.IncludeCustomMessageClasses); SetWpfLocale(generalOptions.CultureName); ConfigureServicePointManager(generalOptions); ConfigureLogLevel(generalOptions.EnableDebugLog); _session = application.Session; _outlookAccountPasswordProvider = string.IsNullOrEmpty(_session.CurrentProfileName) ? NullOutlookAccountPasswordProvider.Instance : new OutlookAccountPasswordProvider(_session.CurrentProfileName, application.Version); _globalTimeZoneCache = new GlobalTimeZoneCache(); var applicationDataDirectoryBase = Path.Combine( Environment.GetFolderPath( generalOptions.StoreAppDataInRoamingFolder ? Environment.SpecialFolder.ApplicationData : Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); string optionsFilePath; (_applicationDataDirectory, optionsFilePath) = GetOrCreateDataDirectory(applicationDataDirectoryBase, _session.CurrentProfileName); _optionsDataAccess = new OptionsDataAccess(optionsFilePath); _uiService = new UiService(); var options = _optionsDataAccess.Load(); _permanentStatusesViewModel = new PermanentStatusesViewModel(_uiService, this, options); _permanentStatusesViewModel.OptionsRequesting += PermanentStatusesViewModel_OptionsRequesting; _queryFolderStrategyWrapper = new OutlookFolderStrategyWrapper(QueryOutlookFolderByRequestingItemStrategy.Instance); _totalProgressFactory = new TotalProgressFactory( _uiService, generalOptions.ShowProgressBar, generalOptions.ThresholdForProgressDisplay, ExceptionHandler.Instance); _outlookSession = new OutlookSession(_session); _synchronizerFactory = new SynchronizerFactory( GetProfileDataDirectory, _totalProgressFactory, _outlookSession, _daslFilterProvider, _outlookAccountPasswordProvider, _globalTimeZoneCache, _queryFolderStrategyWrapper, exceptionHandlingStrategy, comWrapperFactory, _optionsDataAccess, _profileTypeRegistry); _synchronizationReportRepository = CreateSynchronizationReportRepository(); UpdateGeneralOptionDependencies(generalOptions); _scheduler = new Scheduler( _synchronizerFactory, this, EnsureSynchronizationContext, new FolderChangeWatcherFactory( _session), _synchronizationStatus); EnsureCacheCompatibility(options); _availableVersionService = new AvailableVersionService(); _updateChecker = new UpdateChecker(_availableVersionService, () => _generalOptionsDataAccess.IgnoreUpdatesTilVersion); _updateChecker.NewerVersionFound += UpdateChecker_NewerVersionFound; _updateChecker.IsEnabled = generalOptions.ShouldCheckForNewerVersions; _reportGarbageCollection = new ReportGarbageCollection(_synchronizationReportRepository, TimeSpan.FromDays(generalOptions.MaxReportAgeInDays)); _trayNotifier = generalOptions.EnableTrayIcon ? new TrayNotifier(this) : NullTrayNotifer.Instance; try { using (var syncObjects = GenericComObjectWrapper.Create(_session.SyncObjects)) { if (syncObjects.Inner != null && syncObjects.Inner.Count > 0) { _syncObject = syncObjects.Inner[1]; if (generalOptions.TriggerSyncAfterSendReceive) { _syncObject.SyncEnd += SyncObject_SyncEnd; } } } } catch (COMException ex) { s_logger.Error("Can't access SyncObjects", ex); } _oneTimeTaskRunner = new OneTimeTaskRunner(_outlookSession); DDayICalWorkaround.DDayICalCustomization.InitializeNoThrow(); }
public ComponentContainer(Application application) { s_logger.Info("Startup..."); _generalOptionsDataAccess = new GeneralOptionsDataAccess(); _synchronizationStatus = new SynchronizationStatus(); var generalOptions = _generalOptionsDataAccess.LoadOptions(); _daslFilterProvider = new DaslFilterProvider(generalOptions.IncludeCustomMessageClasses); FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); ConfigureServicePointManager(generalOptions); ConfigureLogLevel(generalOptions.EnableDebugLog); _session = application.Session; _outlookAccountPasswordProvider = string.IsNullOrEmpty(_session.CurrentProfileName) ? NullOutlookAccountPasswordProvider.Instance : new OutlookAccountPasswordProvider(_session.CurrentProfileName, application.Version); _globalTimeZoneCache = new GlobalTimeZoneCache(); EnsureSynchronizationContext(); _applicationDataDirectory = Path.Combine( Environment.GetFolderPath( generalOptions.StoreAppDataInRoamingFolder ? Environment.SpecialFolder.ApplicationData : Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); _optionsDataAccess = new OptionsDataAccess( Path.Combine( _applicationDataDirectory, GetOrCreateConfigFileName(_applicationDataDirectory, _session.CurrentProfileName) )); _synchronizerFactory = new SynchronizerFactory( GetProfileDataDirectory, new TotalProgressFactory( new ProgressFormFactory(), int.Parse(ConfigurationManager.AppSettings["loadOperationThresholdForProgressDisplay"]), ExceptionHandler.Instance), _session, _daslFilterProvider, _outlookAccountPasswordProvider, _globalTimeZoneCache); _synchronizationReportRepository = CreateSynchronizationReportRepository(); UpdateGeneralOptionDependencies(generalOptions); _scheduler = new Scheduler( _synchronizerFactory, this, EnsureSynchronizationContext, new FolderChangeWatcherFactory( _session), _synchronizationStatus); var options = _optionsDataAccess.LoadOptions(); EnsureCacheCompatibility(options); _profileStatusesViewModel = new ProfileStatusesViewModel(this); _profileStatusesViewModel.EnsureProfilesDisplayed(options); _availableVersionService = new AvailableVersionService(); _updateChecker = new UpdateChecker(_availableVersionService, () => _generalOptionsDataAccess.IgnoreUpdatesTilVersion); _updateChecker.NewerVersionFound += UpdateChecker_NewerVersionFound; _updateChecker.IsEnabled = generalOptions.ShouldCheckForNewerVersions; _reportGarbageCollection = new ReportGarbageCollection(_synchronizationReportRepository, TimeSpan.FromDays(generalOptions.MaxReportAgeInDays)); _trayNotifier = generalOptions.EnableTrayIcon ? new TrayNotifier(this) : NullTrayNotifer.Instance; _uiService = new UiService(_profileStatusesViewModel); using (var syncObjects = GenericComObjectWrapper.Create(_session.SyncObjects)) { if (syncObjects.Inner != null && syncObjects.Inner.Count > 0) { _syncObject = syncObjects.Inner[1]; if (generalOptions.TriggerSyncAfterSendReceive) { _syncObject.SyncEnd += _sync_SyncEnd; } } } }
public static List <DynamicsMailBox> GetXrmMailBoxes(IOrganizationService service, string emailAddress, SynchronizationStatus filter = SynchronizationStatus.Any) { var qe = new QueryExpression("mailbox") { ColumnSet = new ColumnSet(true), TopCount = 1 }; if (filter == SynchronizationStatus.UnapprovedOnly) { qe.Criteria.AddCondition(new ConditionExpression("isemailaddressapprovedbyo365admin", ConditionOperator.Equal, false)); } if (filter == SynchronizationStatus.FailedOnly) { var statusFilter = new FilterExpression(LogicalOperator.Or); statusFilter.AddCondition(new ConditionExpression("incomingemailstatus", ConditionOperator.Equal, EmailStatus.Failure)); statusFilter.AddCondition(new ConditionExpression("outgoingemailstatus", ConditionOperator.Equal, EmailStatus.Failure)); statusFilter.AddCondition(new ConditionExpression("actstatus", ConditionOperator.Equal, EmailStatus.Failure)); qe.Criteria.AddFilter(statusFilter); } var result = service.RetrieveMultiple(qe); return(result.Entities.Select(e => new DynamicsMailBox { EmailAddress = e.Attributes["emailaddress"].ToString(), MailBox = e, EntityType = e.LogicalName }).ToList()); }
public IndexingStatus(IndexingState state, SynchronizationStatus synchronizationStatus) { State = state; SynchronizationStatus = synchronizationStatus; }
public void UpdateStatus(string id, SynchronizationStatus status) { this.command.UpdateStatus(id, status); }
public ComponentContainer(Application application) { s_logger.Info("Startup..."); if (GeneralOptionsDataAccess.WpfRenderModeSoftwareOnly) { RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly; } _generalOptionsDataAccess = new GeneralOptionsDataAccess(); _synchronizationStatus = new SynchronizationStatus(); var generalOptions = _generalOptionsDataAccess.LoadOptions(); _daslFilterProvider = new DaslFilterProvider(generalOptions.IncludeCustomMessageClasses); SetWpfLocale(); ConfigureServicePointManager(generalOptions); ConfigureLogLevel(generalOptions.EnableDebugLog); _session = application.Session; _outlookAccountPasswordProvider = string.IsNullOrEmpty(_session.CurrentProfileName) ? NullOutlookAccountPasswordProvider.Instance : new OutlookAccountPasswordProvider(_session.CurrentProfileName, application.Version); _globalTimeZoneCache = new GlobalTimeZoneCache(); EnsureSynchronizationContext(); _applicationDataDirectory = Path.Combine( Environment.GetFolderPath( generalOptions.StoreAppDataInRoamingFolder ? Environment.SpecialFolder.ApplicationData : Environment.SpecialFolder.LocalApplicationData), "CalDavSynchronizer"); _optionsDataAccess = new OptionsDataAccess( Path.Combine( _applicationDataDirectory, GetOrCreateConfigFileName(_applicationDataDirectory, _session.CurrentProfileName) )); _profileStatusesViewModel = new ProfileStatusesViewModel(this); _uiService = new UiService(_profileStatusesViewModel); _queryFolderStrategyWrapper = new OutlookFolderStrategyWrapper(QueryOutlookFolderByRequestingItemStrategy.Instance); _totalProgressFactory = new TotalProgressFactory( _uiService, generalOptions.ShowProgressBar, generalOptions.ThresholdForProgressDisplay, ExceptionHandler.Instance); _synchronizerFactory = new SynchronizerFactory( GetProfileDataDirectory, _totalProgressFactory, _session, _daslFilterProvider, _outlookAccountPasswordProvider, _globalTimeZoneCache, _queryFolderStrategyWrapper); _synchronizationReportRepository = CreateSynchronizationReportRepository(); UpdateGeneralOptionDependencies(generalOptions); _scheduler = new Scheduler( _synchronizerFactory, this, EnsureSynchronizationContext, new FolderChangeWatcherFactory( _session), _synchronizationStatus); var options = _optionsDataAccess.Load(); EnsureCacheCompatibility(options); _profileStatusesViewModel.EnsureProfilesDisplayed(options); _availableVersionService = new AvailableVersionService(); _updateChecker = new UpdateChecker(_availableVersionService, () => _generalOptionsDataAccess.IgnoreUpdatesTilVersion); _updateChecker.NewerVersionFound += UpdateChecker_NewerVersionFound; _updateChecker.IsEnabled = generalOptions.ShouldCheckForNewerVersions; _reportGarbageCollection = new ReportGarbageCollection(_synchronizationReportRepository, TimeSpan.FromDays(generalOptions.MaxReportAgeInDays)); _trayNotifier = generalOptions.EnableTrayIcon ? new TrayNotifier(this) : NullTrayNotifer.Instance; try { using (var syncObjects = GenericComObjectWrapper.Create(_session.SyncObjects)) { if (syncObjects.Inner != null && syncObjects.Inner.Count > 0) { _syncObject = syncObjects.Inner[1]; if (generalOptions.TriggerSyncAfterSendReceive) { _syncObject.SyncEnd += SyncObject_SyncEnd; } } } } catch (COMException ex) { s_logger.Error("Can't access SyncObjects", ex); } _categorySwitcher = new CategorySwitcher(_session, _daslFilterProvider, _queryFolderStrategyWrapper); }