Esempio n. 1
0
        protected int SaveConfiguration()
        {
            m_configuration.UniqueId = Guid.NewGuid().ToString();
            SessionGroupConfigurationManager saver = new SessionGroupConfigurationManager(m_configuration);

            m_conflictRuleViewModel.AppViewModel.ShellViewModel.RefreshConfigViewModel();
            return(saver.TrySave());
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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();
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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;
                }
            }
        }