5 // Joel Reed (joelwreed@gmail.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using System
.Collections
.Generic
;
33 using System
.Reflection
;
34 using Microsoft
.TeamFoundation
.Client
;
35 using Microsoft
.TeamFoundation
;
36 using Microsoft
.TeamFoundation
.WorkItemTracking
.Client
;
37 using Mono
.GetOptions
;
39 [Command("queries", "Manage stored work item queries.", "")]
40 class QueriesCommand
: Command
42 public QueriesCommand(Driver driver
, string[] args
): base(driver
, args
)
46 public override void Run()
48 WorkItemStore store
= Driver
.TeamFoundationServer
.GetService(typeof(WorkItemStore
)) as WorkItemStore
;
49 ILinking linking
= Driver
.TeamFoundationServer
.GetService(typeof(ILinking
)) as ILinking
;
52 // Get URI for changeset
53 ArtifactId changeSetId
= new ArtifactId();
54 changeSetId
.Tool
= "VersionControl";
55 changeSetId
.ArtifactType
= "ChangeSet";
56 changeSetId
.ToolSpecificId
= changeSet
.ToString();
57 string changeSetUri
= LinkingUtilities
.EncodeUri(changeSetId
);
59 // Get referencing artifacts for given changeset
60 Artifact
[] artifacts
= linking
.GetReferencingArtifacts(new string[] { changeSetUri }
, null);
62 foreach (Artifact artifact
in artifacts
)
64 Console
.WriteLine(artifact
.ToString());
65 ArtifactId artifactId
= LinkingUtilities
.DecodeUri(artifact
.Uri
);
66 if (String
.Equals(artifactId
.Tool
, "WorkItemTracking", StringComparison
.OrdinalIgnoreCase
))
68 WorkItem wi
= store
.GetWorkItem(Convert
.ToInt32(artifactId
.ToolSpecificId
));
69 Console
.WriteLine(wi
);