コード例 #1
0
        /// <summary>
        /// Background method to find the work items from TFS.
        /// </summary>
        private void DoFind()
        {
            SyncServiceTrace.D(Resources.DoFindProccessMessage);
            DocumentModel.SaveQueryConfiguration(_queryConfiguration);

            //var config = SyncServiceFactory.GetService<IConfigurationService>().GetConfiguration(WordDocument);
            var config      = DocumentModel.Configuration;
            var tfsService  = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(DocumentModel.TfsServer, DocumentModel.TfsProject, _queryConfiguration, config);
            var wordAdapter = SyncServiceFactory.CreateWord2007TableWorkItemSyncAdapter(DocumentModel.WordDocument, DocumentModel.Configuration);

            wordAdapter.Open(null);
            tfsService.Open(null);

            EnsureTfsLazyLoadingFinished(tfsService);

            // Cancel all queries in case there are still some running
            Cancel();
            _cancellationTokenSource = new CancellationTokenSource();
            var token = _cancellationTokenSource.Token;

            var tfsItems = (from wi in tfsService.WorkItems
                            select new DataItemModel <SynchronizedWorkItemViewModel>(new SynchronizedWorkItemViewModel(wi, null, wordAdapter, DocumentModel, token))
            {
                IsChecked = true
            }).ToList();

            var wordItems = (from wi in wordAdapter.WorkItems
                             where wi.IsNew
                             select new DataItemModel <SynchronizedWorkItemViewModel>(new SynchronizedWorkItemViewModel(null, wi, wordAdapter, DocumentModel, token))
            {
                IsChecked = true
            }).ToList();

            FoundWorkItems = tfsItems.Concat(wordItems).ToList();
        }
コード例 #2
0
        /// <summary>
        /// Creates hyperlinks to selected work items at the current cursor position.
        /// </summary>
        public void CreateHyperlink()
        {
            SyncServiceTrace.I(Resources.CreateHyperlinks);

            // set actual selected configuration
            var ignoreFormatting  = DocumentModel.Configuration.IgnoreFormatting;
            var conflictOverwrite = DocumentModel.Configuration.ConflictOverwrite;

            DocumentModel.Configuration.ActivateMapping(DocumentModel.MappingShowName);
            DocumentModel.Configuration.IgnoreFormatting  = ignoreFormatting;
            DocumentModel.Configuration.ConflictOverwrite = conflictOverwrite;
            DocumentModel.Configuration.IgnoreFormatting  = ignoreFormatting;

            var source          = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(DocumentModel.TfsServer, DocumentModel.TfsProject, null, DocumentModel.Configuration);
            var destination     = SyncServiceFactory.CreateWord2007TableWorkItemSyncAdapter(WordDocument, DocumentModel.Configuration);
            var importWorkItems = (from wim in FoundWorkItems
                                   where wim.IsChecked
                                   select wim.Item).ToList();


            // search for already existing work items in word and ask whether to overide them
            if (!(source.Open(importWorkItems.Select(x => x.TfsItem.Id).ToArray()) && destination.Open(null)))
            {
                return;
            }

            foreach (var workItem in importWorkItems)
            {
                destination.CreateWorkItemHyperlink(workItem.TfsItem.Title, source.GetWorkItemEditorUrl(workItem.TfsItem.Id));
            }
        }
コード例 #3
0
        /// <summary>
        /// Background method to import the work items from TFS.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">A <see cref="DoWorkEventArgs"/> that contains the event data.</param>
        private void DoImport(object sender, DoWorkEventArgs e)
        {
            SyncServiceTrace.I(Resources.ImportWorkItems);
            var workItemSyncService = SyncServiceFactory.GetService <IWorkItemSyncService>();
            var configService       = SyncServiceFactory.GetService <IConfigurationService>();

            // save query configuration to document
            DocumentModel.SaveQueryConfiguration(_queryConfiguration);
            DocumentModel.Save();

            // set actual selected configuration
            var configuration = configService.GetConfiguration(WordDocument);

            var ignoreFormatting  = configuration.IgnoreFormatting;
            var conflictOverwrite = configuration.ConflictOverwrite;

            configuration.ActivateMapping(DocumentModel.MappingShowName);
            DocumentModel.Configuration.IgnoreFormatting = ignoreFormatting;
            configuration.ConflictOverwrite = conflictOverwrite;
            configuration.IgnoreFormatting  = ignoreFormatting;

            var config = SyncServiceFactory.GetService <IConfigurationService>().GetConfiguration(WordDocument);
            var source = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(DocumentModel.TfsServer, DocumentModel.TfsProject, null, config);

            _importWordAdapter = SyncServiceFactory.CreateWord2007TableWorkItemSyncAdapter(WordDocument, configuration);

            _importWordAdapter.PrepareDocumentForLongTermOperation();
            //////////
            _importWordAdapter.ProcessOperations(configuration.PreOperations);
            var importWorkItems = (from wim in FoundWorkItems
                                   where wim.IsChecked
                                   select wim.Item).ToList();

            // search for already existing work items in word and ask whether to overide them
            if (!(source.Open(importWorkItems.Select(x => x.TfsItem.Id).ToArray()) && _importWordAdapter.Open(null)))
            {
                return;
            }

            if (importWorkItems.Select(x => x.TfsItem.Id).Intersect(_importWordAdapter.WorkItems.Select(x => x.Id)).Any())
            {
                SyncServiceTrace.W(Resources.TFSExport_ExistingWorkItems);
                if (
                    System.Windows.Forms.MessageBox.Show((IWin32Window)WordRibbon,
                                                         Resources.TFSExport_ExistingWorkItems,
                                                         Resources.MessageBox_Title,
                                                         MessageBoxButtons.YesNo,
                                                         MessageBoxIcon.Question,
                                                         MessageBoxDefaultButton.Button2, 0) == DialogResult.No)
                {
                    return;
                }
            }

            workItemSyncService.Refresh(source, _importWordAdapter, importWorkItems.Select(x => x.TfsItem), configuration);
            _importWordAdapter.ProcessOperations(configuration.PostOperations);
        }
コード例 #4
0
        /// <summary>
        /// Get the necessary services
        /// </summary>
        private void GetService()
        {
            _workItemSyncService = SyncServiceFactory.GetService <IWorkItemSyncService>();
            _configService       = SyncServiceFactory.GetService <IConfigurationService>();
            _configuration       = _configService.GetConfiguration(_wordDocument);


            _tfsService  = SyncServiceFactory.CreateTfsService(_documentModel.TfsServer, _documentModel.TfsProject, _documentModel.Configuration);
            _source      = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(_documentModel.TfsServer, _documentModel.TfsProject, null, _configuration);
            _destination = SyncServiceFactory.CreateWord2007TableWorkItemSyncAdapter(_wordDocument, _configuration);
        }
コード例 #5
0
        /// <summary>
        /// Load work item from TFS
        /// </summary>
        private void LoadTfsItem()
        {
            if (Id == 0)
            {
                return;
            }

            var source = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(_documentModel.TfsServer, _documentModel.TfsProject, null, _documentModel.Configuration);

            if (!source.Open(new[] { Id }))
            {
                return;
            }

            TfsItem = source.WorkItems.Find(Id);
        }
コード例 #6
0
        /// <summary>
        /// Open browser and navigate to a page that allows to edit the destination work item of publish information.
        /// </summary>
        private void ExecuteBrowseHome(object sender, ExecutedRoutedEventArgs e)
        {
            var pubinfo = e.Parameter as IUserInformation;

            if ((pubinfo == null) || (pubinfo.Destination == null))
            {
                return;
            }

            // Get link to team foundation server web access and insert work item id into url.
            var config = SyncServiceFactory.GetService <IConfigurationService>().GetConfiguration(AttachedDocument);
            var source = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(DocumentModel.TfsServer, DocumentModel.TfsProject, null, config);
            var url    = source.GetWorkItemEditorUrl(pubinfo.Destination.Id);

            System.Diagnostics.Process.Start(url.ToString());
        }
コード例 #7
0
        /// <summary>
        /// Background method to find the work items from TFS.
        /// </summary>
        private void DoFind()
        {
            SyncServiceTrace.D(Resources.FindWorkItems);
            //var config = SyncServiceFactory.GetService<IConfigurationService>().GetConfiguration(WordDocument);
            var config      = DocumentModel.Configuration;
            var tfsService  = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(DocumentModel.TfsServer, DocumentModel.TfsProject, _queryConfiguration, config);
            var wordAdapter = SyncServiceFactory.CreateWord2007TableWorkItemSyncAdapter(DocumentModel.WordDocument, DocumentModel.Configuration);

            wordAdapter.Open(null);
            tfsService.Open(null);

            EnsureTfsLazyLoadingFinished(tfsService);

            _cancellationTokenSource.Cancel();
            _cancellationTokenSource = new CancellationTokenSource();
            var token = _cancellationTokenSource.Token;

            FoundWorkItems = (from wi in tfsService.WorkItems
                              select new DataItemModel <SynchronizedWorkItemViewModel>(new SynchronizedWorkItemViewModel(wi, null, wordAdapter, DocumentModel, token))
            {
                IsChecked = true
            }).ToList();
            var foundIds = string.Join(",", FoundWorkItems.Select(w => w.Item.Id.ToString(CultureInfo.InvariantCulture)));

            SyncServiceTrace.I("Found work items: {0}", string.Equals(string.Empty, foundIds) ? "<none>" : foundIds);

            var colors = tfsService.WorkItemColors;

            foreach (var foundItem in FoundWorkItems)
            {
                foundItem.Item.CanShowColor = false;
                if (colors != null && colors.ContainsKey(foundItem.Item.TfsItem.WorkItemType))
                {
                    foundItem.Item.WorkItemColor = $"#{colors[foundItem.Item.TfsItem.WorkItemType].PrimaryColor}";
                    foundItem.Item.CanShowColor  = true;
                }
            }

            var allWorkItems              = tfsService.AvailableWorkItemsFromTFS;
            var idsOfFilteredWorkItems    = FoundWorkItems.Select(w => w.Item.Id);
            var amountOfFilteredWorkItems = FoundWorkItems.Count();

            ShowResultsOfComparison(allWorkItems, tfsService.WorkItems.Count(), idsOfFilteredWorkItems);
        }
コード例 #8
0
        /// <summary>
        /// Verifies this instance.
        /// </summary>
        public IList <IConfigurationFieldItem> GetWronglyMappedFields()
        {
            var serverUrl   = GetDocumentVariableValue(ConstTfsServer, null);
            var projectName = GetDocumentVariableValue(ConstTfsProject, null);

            if (string.IsNullOrEmpty(serverUrl) || string.IsNullOrEmpty(projectName))
            {
                return(new List <IConfigurationFieldItem>());
            }

            // verify template
            var veryfier      = new TemplateVerifier();
            var configuration = SyncServiceFactory.GetService <IConfigurationService>().GetConfiguration(WordDocument);
            var adapter       = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(serverUrl, projectName, null, configuration);

            if (!veryfier.VerifyTemplateMapping(this, (ITfsService)adapter, configuration))
            {
                return(veryfier.WrongMappedFields);
            }
            return(new List <IConfigurationFieldItem>());
        }
コード例 #9
0
        /// <summary>
        /// Background method to find the work items from TFS.
        /// </summary>
        private void DoFind()
        {
            SyncServiceTrace.D(Resources.FindWorkItems);
            //var config = SyncServiceFactory.GetService<IConfigurationService>().GetConfiguration(WordDocument);
            var config      = DocumentModel.Configuration;
            var tfsService  = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(DocumentModel.TfsServer, DocumentModel.TfsProject, _queryConfiguration, config);
            var wordAdapter = SyncServiceFactory.CreateWord2007TableWorkItemSyncAdapter(DocumentModel.WordDocument, DocumentModel.Configuration);

            wordAdapter.Open(null);
            tfsService.Open(null);

            EnsureTfsLazyLoadingFinished(tfsService);

            _cancellationTokenSource.Cancel();
            _cancellationTokenSource = new CancellationTokenSource();
            var token = _cancellationTokenSource.Token;

            FoundWorkItems = (from wi in tfsService.WorkItems
                              select new DataItemModel <SynchronizedWorkItemViewModel>(new SynchronizedWorkItemViewModel(wi, null, wordAdapter, DocumentModel, token))
            {
                IsChecked = true
            }).ToList();
        }
コード例 #10
0
        /// <summary>
        /// Background method to import the work items from TFS.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">A <see cref="DoWorkEventArgs"/> that contains the event data.</param>
        public void DoImport(object sender, DoWorkEventArgs e)
        {
            SyncServiceTrace.I(Resources.ImportWorkItems);
            var workItemSyncService = SyncServiceFactory.GetService <IWorkItemSyncService>();
            var configService       = SyncServiceFactory.GetService <IConfigurationService>();

            // save query configuration to document
            DocumentModel.SaveQueryConfiguration(_queryConfiguration);
            DocumentModel.Save();

            // set actual selected configuration
            var configuration = configService.GetConfiguration(WordDocument);

            _importTestReport = SyncServiceFactory.CreateWord2007TestReportAdapter(WordDocument, configuration);

            var ignoreFormatting  = configuration.IgnoreFormatting;
            var conflictOverwrite = configuration.ConflictOverwrite;

            configuration.ActivateMapping(DocumentModel.MappingShowName);
            DocumentModel.Configuration.IgnoreFormatting = ignoreFormatting;
            configuration.ConflictOverwrite = conflictOverwrite;
            configuration.IgnoreFormatting  = ignoreFormatting;

            var source          = SyncServiceFactory.CreateTfs2008WorkItemSyncAdapter(DocumentModel.TfsServer, DocumentModel.TfsProject, null, configuration);
            var destination     = SyncServiceFactory.CreateWord2007TableWorkItemSyncAdapter(WordDocument, configuration);
            var importWorkItems = (from wim in FoundWorkItems
                                   where wim.IsChecked
                                   select wim.Item).ToList();

            if (!(source.Open(importWorkItems.Select(x => x.TfsItem.Id).ToArray()) && destination.Open(null)))
            {
                return;
            }

            // Check for test cases.
            var expandSharedsteps = configuration.ConfigurationTest.ExpandSharedSteps;
            var testCases         = GetTestCasesFromWorkItems(importWorkItems, expandSharedsteps);

            // Check for shared steps
            var sharedSteps = GetSharedStepsFromWorkItems(importWorkItems);

            //Get any pre and post operations for the reports
            var preOperations  = configuration.ConfigurationTest.GetPreOperationsForTestSpecification();
            var postOperations = configuration.ConfigurationTest.GetPostOperationsForTestSpecification();

            var testReportHelper = new TestReportHelper(_testAdapter, _importTestReport, configuration, () => !IsImporting);

            _importTestReport.PrepareDocumentForLongTermOperation();
            testReportHelper.ProcessOperations(preOperations);

            if (testCases.Count > 0 && sharedSteps.Count > 0)
            {
                throw new ConfigurationException("Function can only be used for either shared steps or test cases. Select only work items of one Type.");
            }
            if (testCases.Count > 0)
            {
                workItemSyncService.RefreshAndSubstituteTestItems(source, destination, importWorkItems.Select(x => x.TfsItem), configuration, testReportHelper, testCases);
            }
            if (sharedSteps.Count > 0)
            {
                workItemSyncService.RefreshAndSubstituteSharedStepItems(source, destination, importWorkItems.Select(x => x.TfsItem), configuration, testReportHelper, sharedSteps);
            }
            // when cancelled by the user skip further steps
            var progressService = SyncServiceFactory.GetService <IProgressService>();

            if (null != progressService && !progressService.ProgressCanceled)
            {
                testReportHelper.CreateSummaryPage(WordDocument, null);
                testReportHelper.ProcessOperations(postOperations);
            }
            else
            {
                SyncServiceTrace.I("Skipped");
            }

            DocumentModel.TestReportGenerated = true;
        }