protected int SaveConfiguration() { m_configuration.UniqueId = Guid.NewGuid().ToString(); SessionGroupConfigurationManager saver = new SessionGroupConfigurationManager(m_configuration); m_conflictRuleViewModel.AppViewModel.ShellViewModel.RefreshConfigViewModel(); return(saver.TrySave()); }
public void Save() { Configuration config = m_conflictRuleViewModel.AppViewModel.Config; if ((bool)updateConfigRadioButton.IsChecked) { // save config config.UniqueId = Guid.NewGuid().ToString(); SessionGroupConfigurationManager saver = new SessionGroupConfigurationManager(config); int configId = saver.TrySave(); // set rule m_conflictRuleViewModel.SelectedResolutionAction = m_conflictRuleViewModel.ResolutionActions.First(x => x.ReferenceName.Equals(new WITUnmappedWITConflictUpdateWITMappingAction().ReferenceName)); ObservableDataField updatedConfigIdDataField = m_conflictRuleViewModel.ObservableDataFields.First(x => string.Equals(x.FieldName, Constants.DATAKEY_UPDATED_CONFIGURATION_ID)); updatedConfigIdDataField.FieldValue = configId.ToString(); ObservableDataField mapToDataField = m_conflictRuleViewModel.ObservableDataFields.First(x => string.Equals(x.FieldName, WITUnmappedWITConflictUpdateWITMappingAction.DATAKEY_MAP_TO)); mapToDataField.FieldValue = newWorkItemTypeTextBox.Text; } else if ((bool)newValueRadioButton.IsChecked) { // undo config changes m_customSettings.SerializedContent = m_oldCustomSettings; m_customSettings.Save(); // select resolution action m_conflictRuleViewModel.SelectedResolutionAction = m_conflictRuleViewModel.ResolutionActions.First(x => x.ReferenceName.Equals(new WITUnmappedWITConflictExcludeWITInSessionFilter().ReferenceName)); // update config m_filterItem.FilterString = newValueTextBox.Text; // save config config.UniqueId = Guid.NewGuid().ToString(); SessionGroupConfigurationManager saver = new SessionGroupConfigurationManager(config); int configId = saver.TrySave(); // set data fields ObservableDataField updatedConfigIdDataField = m_conflictRuleViewModel.ObservableDataFields.First(x => string.Equals(x.FieldName, Constants.DATAKEY_UPDATED_CONFIGURATION_ID)); updatedConfigIdDataField.FieldValue = configId.ToString(); } else if ((bool)retryRadioButton.IsChecked) { // undo config changes m_customSettings.SerializedContent = m_oldCustomSettings; m_customSettings.Save(); // select resolution action m_conflictRuleViewModel.SelectedResolutionAction = m_conflictRuleViewModel.ResolutionActions.First(x => x.ReferenceName.Equals(new ManualConflictResolutionAction().ReferenceName)); } m_conflictRuleViewModel.AppViewModel.ShellViewModel.RefreshConfigViewModel(); }
public static void Start(string configFileName) { Configuration config = null; try { using (FileStream fs = new FileStream(configFileName, FileMode.Open, FileAccess.Read)) { XmlSerializer serializer = new XmlSerializer(typeof(Configuration)); config = serializer.Deserialize(fs) as Configuration; } } catch (Exception ex) { Trace.TraceError("Failed to load the configuration file {0}", configFileName); Trace.TraceError(ex.ToString()); throw ex; } Trace.TraceInformation("Loaded {0} file successfully", configFileName); if (config != null) { // persist to db try { SessionGroupConfigurationManager configManager = new SessionGroupConfigurationManager(config); configManager.TrySave(false); } catch (DuplicateConfigurationException) { // the same configuration already exists // swallow the exception } Guid sessionGroupGuid = config.SessionGroupUniqueId; config = null; // load the configuration from db (instead of the deserialized object from file) BusinessModelManager businessModelManager = new BusinessModelManager(); config = businessModelManager.LoadConfiguration(sessionGroupGuid); SyncOrchestrator syncOrch = new SyncOrchestrator(config); syncOrch.ConstructPipelines(); syncOrch.InitializePipelines(); syncOrch.Start(Timeout.Infinite); syncOrch.BlockUntilAllSessionFinishes(); } }
public SyncOrchestrator LoadSyncOrchestrator() { TraceManager.TraceInformation("Start loading sync orchestrator..."); if (Config == null) { LoadConfiguration(); } if (Config != null) { SessionGroupConfigurationManager configManager = new SessionGroupConfigurationManager(Config); configManager.TrySave(false); SyncOrchestrator = new SyncOrchestrator(Config); } TraceManager.TraceInformation("Finish loading sync orchestrator..."); return(SyncOrchestrator); }
public void Save(bool saveAsNew) { BusinessModelManager businessModelManager = new BusinessModelManager(); if (businessModelManager.IsConfigurationPersisted(this.Configuration)) { Configuration.UniqueId = Guid.NewGuid().ToString(); if (saveAsNew) { Configuration.SessionGroup.SessionGroupGUID = Guid.NewGuid().ToString(); foreach (Session session in Configuration.SessionGroup.Sessions.Session) { session.SessionUniqueId = Guid.NewGuid().ToString(); } } } SessionGroupConfigurationManager configSaver = new SessionGroupConfigurationManager(this.Configuration); configSaver.TrySave(!saveAsNew); }
private void LaunchFromConfigFile() { try { Configuration config = Configuration.LoadFromFile(m_configFileName); SessionGroupConfigurationManager configSaver = new SessionGroupConfigurationManager(config); try { configSaver.TrySave(); } catch (DuplicateConfigurationException) { DupConfigUserResponse userResponse = GetUserDecisionOnDuplicateConfig(); while (userResponse == DupConfigUserResponse.Unknown) { userResponse = GetUserDecisionOnDuplicateConfig(); } switch (userResponse) { case DupConfigUserResponse.Update: config.UniqueId = Guid.NewGuid().ToString(); configSaver.TrySave(); break; case DupConfigUserResponse.CreateNew: string configFileContent = File.ReadAllText(m_configFileName); configFileContent = Configuration.ReGuidConfigXml(config, configFileContent); config = Configuration.LoadFromXml(configFileContent); configSaver = new SessionGroupConfigurationManager(config); configSaver.TrySave(); break; case DupConfigUserResponse.DoNotUpdate: break; case DupConfigUserResponse.Unknown: default: throw new InvalidOperationException("Unknown user response."); } } catch (Exception) { throw; } List <Guid> runningSessionGroups = new List <Guid>(1); runningSessionGroups.Add(config.SessionGroupUniqueId); if (m_commandSwitch.CommandSwitchSet) { preAuthorizeRules(config); } // kickoff the session group m_pipeProxy.StartSessionGroup(config.SessionGroupUniqueId); while (true) { try { runningSessionGroups.Clear(); runningSessionGroups.AddRange(m_pipeProxy.GetRunningSessionGroups()); // uncomment the following lines for richer debugging message //Console.WriteLine(String.Format("Received {0} entries", runningSessionGroups.Count)); //foreach (Guid guid in runningSessionGroups) //{ // Console.WriteLine(guid.ToString()); //} if (runningSessionGroups.Count == 0 || !runningSessionGroups.Contains(config.SessionGroupUniqueId) || AllRunningSessionGroupsAreInStoppedSyncState(new Guid[] { config.SessionGroupUniqueId })) { break; } } catch (Exception e) { // Ugly, but this approach lets us start the test app // before the endpoint is ready to service requests. Console.WriteLine("Error: {0}", e.Message); // re-initialize proxy InitializeProxy(); } Thread.Sleep(RunningSessionPollingIntervalMillisec); } } catch (System.Data.UpdateException updateEx) { if (updateEx.InnerException != null && updateEx.InnerException is System.Data.SqlClient.SqlException) { if (updateEx.InnerException.Message.Contains("chkSingleUsageOfMigrationSourceInSessions")) { Program.Trace(MigrationConsoleResources.ErrorMigrationSourceUsedMultipleTimes); } } else { throw; } } }