public void ExtractLinkChangeActions(TfsMigrationWorkItem source, List <LinkChangeGroup> linkChangeGroups, WorkItemLinkStore store) { if (null == source) { throw new ArgumentNullException("source"); } if (null == source.WorkItem) { throw new ArgumentException("source.WorkItem is null"); } var linkChangeGroup = new LinkChangeGroup( source.WorkItem.Id.ToString(CultureInfo.InvariantCulture), LinkChangeGroup.LinkChangeGroupStatus.Created, false); ReadOnlyCollection <Hyperlink> myLinks = ExtractMyLinks(source.WorkItem); foreach (var hl in myLinks) { var link = new Toolkit.Linking.ArtifactLink( source.WorkItem.Id.ToString(CultureInfo.InvariantCulture), new Toolkit.Linking.Artifact(source.Uri, s_sourceArtifactType), new Toolkit.Linking.Artifact(TfsHyperlinkHandler.UriFromId(hl.Location), s_targetArtifactType), hl.Comment, this); linkChangeGroup.AddChangeAction(new LinkChangeAction(WellKnownChangeActionId.Add, link, LinkChangeAction.LinkChangeActionStatus.Created, false)); } linkChangeGroups.Add(linkChangeGroup); }
private int?ExtractFileLinkInfoExtId(WorkItem workItem, string uri) { ReadOnlyCollection <Hyperlink> myLinks = ExtractMyLinks(workItem); foreach (Hyperlink link in myLinks) { if (TFStringComparer.ArtiFactUrl.Equals(TfsHyperlinkHandler.UriFromId(link.Location), uri)) { return(WorkItemExternalLinkType.ReflectFileLinkInfoExtId(link)); } } return(null); }
public bool UpdateTfs(TfsUpdateDocument updateDoc, LinkChangeAction linkChangeAction) { if (null == updateDoc) { throw new ArgumentNullException("updateDoc"); } if (null == linkChangeAction) { throw new ArgumentNullException("linkChangeAction"); } if (!linkChangeAction.Link.LinkType.ReferenceName.Equals(REFERENCE_NAME)) { throw new ArgumentException("Link type mismatch."); } if (linkChangeAction.ChangeActionId.Equals(WellKnownChangeActionId.Add)) { updateDoc.AddHyperLink(TfsHyperlinkHandler.IdFromUri(linkChangeAction.Link.TargetArtifact.Uri), linkChangeAction.Link.Comment); } else if (linkChangeAction.ChangeActionId.Equals(WellKnownChangeActionId.Delete)) { Debug.Assert(updateDoc.WorkItem != null, "WorkItem is null in updateDoc"); int?extId = ExtractFileLinkInfoExtId(updateDoc.WorkItem, linkChangeAction.Link.TargetArtifact.Uri); if (extId.HasValue) { updateDoc.DeleteExternalLink(extId.Value); } else { TraceManager.TraceInformation("Deleting link {0}-to-{1} failed - cannot find linked target artifact.", linkChangeAction.Link.SourceArtifactId, linkChangeAction.Link.TargetArtifact.Uri); return(false); } } else { throw new MigrationException(TfsWITAdapterResources.ErrorUnsupportedChangeAction); } return(true); }