lunedì 31 gennaio 2011

TFS 2010 Object Model: recupero dei progetti

Nei precedenti post (link, link) abbiamo visto come utilizzare l’object model di TFS 2010 per connettersi ad un server TFS e recuperare le project collection ivi presenti.

In questo post vedremo i deiversi modi per recuperare le proprietà dei progetti presenti all’interno delle project collections.

Query sui nodi del server

Il primo modo è quello di sfruttare un meccanismo analogo a quello visto nei precedenti post per il recupero delle collections che si basa sull’utilizzo del metodo QueryChildren della proprietà CatalogNode:

  1. Dim tfs = TfsConfigurationServerFactory.GetConfigurationServer(New Uri("http://server:8080/tfs"),
  2.                                                                New UICredentialsProvider())
  3. Dim allProjects = tfs.CatalogNode.QueryChildren({CatalogResourceTypes.TeamProject},
  4.                                           True,
  5.                                           CatalogQueryOptions.IncludeParents)

In questo caso otteniamo una collezione in sola lettura di CatalogNode nella cui proprietà Resource sono presenti le proprietà del progetto (nome, descrizione, etc., etc.).
Poichè abbiamo utilizzato l’opzione IncludeParents, otteniamo che, per ogni catalogNode, la proprietà Parent contiene il nodo relativo alla collection di appartenenza.
Il parametro recurse=true nella precedente query è fondamentale in quanto i progetti non sono direttamente contenuti nel server.
Se mettiamo recurse=false otteniamo una collezione vuota.

Se volessimo ottenere i progetti contenuti in una specifica collection, potremmo utilizzare una query LINQ del tipo:

  1. Dim tfs = TfsConfigurationServerFactory.GetConfigurationServer(New Uri("http://server:8080/tfs"),
  2.                                                                New UICredentialsProvider())
  3. Dim allProjects = tfs.CatalogNode.QueryChildren({CatalogResourceTypes.TeamProject},
  4.                                           True,
  5.                                           CatalogQueryOptions.IncludeParents)
  6.  
  7. Dim collProjects = From n In allProjects.OfType(Of CatalogNode)()
  8.                     Where n.ParentNode.Resource.DisplayName = "DomusDotNet"
  9.                     Select n

Query sui nodi della Project Collection

Un altro modo per ottenere i progetti presenti all’interno di una collection è quello di eseguire una query sui nodi contenenti le risorse direttamente su un’istanza di TfsTeamProjectCollectionNel precedente post della serie, abbiamo visto i tre modi possibili per ottenere un’istanza della classe TfsTeamProjectCollection. Supponiamo, quindi di averne una e di voler recuperare le proprietà dei progetti in essa contenuti:

  1. Dim collProjects = tfsColl1.CatalogNode.QueryChildren({CatalogResourceTypes.TeamProject},
  2.                                                         False,
  3.                                                         CatalogQueryOptions.None)

In questo caso non serve la recursione e il recupero dei nodi padre perchè i progetti sono gerarchicamente disposti sotto la collection.

 

Nessun commento: