Advertisement
Guest User

Untitled

a guest
Apr 10th, 2014
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.versionone.connectors.ClarityOne.RemoteProvider
  2.  
  3. import com.versionone.connectors.ClarityOne._
  4. import com.ca.clarity.avee.api._
  5. import com.ca.clarity.avee.api.service._
  6. import com.ca.clarity.avee.api.domain._
  7.  
  8. import collection.JavaConversions._
  9.  
  10. /**
  11.  * A Task in Clarity parlance is a Workitem in VersionOne
  12.  * Worklogs are the actuals that are logged against a workitem
  13.  * a Release is an epic in VersionOne
  14.  * so, given a release
  15.  *   - look up the epic
  16.  *   - get all child workitems
  17.  *   - get all actuals on those workitems with actual asset creation times between midnight on start and 23:59:59.999 on end
  18.  *  
  19.  *   - report each child workitem as a task
  20.  *   - report each actual as a worklog
  21.  */
  22. object RemoteTaskQueries {
  23.  
  24.   def parseDate(d:String) = {
  25.     val format = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
  26.     format.parse(d)
  27.   }
  28.  
  29.   def GetRemoteTasks(client:OAuth2HttpClient, release:String, start:java.util.Date, end:java.util.Date) = {        
  30.     val results = client.Query(s"""
  31.      from: Epic
  32.      where:
  33.        Number: $release
  34.      select:
  35.        - from: ChildrenAndDown:PrimaryWorkitem
  36.          select:
  37.            - Number
  38.            - Name
  39.            - Id
  40.            - Scope.Id
  41.            - Timebox.Id
  42.            - Timebox.BeginDate
  43.            - Timebox.EndDate
  44.            - ToDo
  45.            - Estimate
  46.            - Owners.Id
  47.            - from: Actuals
  48.              select:
  49.                - Date
  50.                - Member.Id
  51.                - Value
  52.              filter:
  53.                - Date>='$start'
  54.                - Date<='$end'
  55.      """)
  56.     (for {
  57.         JMap(epic) <- results
  58.           JStr(epicNumber) = epic("Number")
  59.           JList(workitems) = epic("ChildrenAndDown:PrimaryWorkitem")
  60.           JMap(workitem) <- workitems
  61.             JStr(itemName)     = workitem("Name")
  62.             JStr(itemId)       = workitem("_oid")
  63.             JStr(timeBoxId)    = workitem("Timebox.Id")
  64.             JStr(timeboxStart) = workitem("Timebox.BeginDate")
  65.             JStr(timeboxEnd)   = workitem("Timebox.EndDate")
  66.             JStr(scopeId)      = workitem("Scope.Id")
  67.             JStr(description)  = workitem("Description")
  68.             JStr(itemNumber)   = workitem("Number")
  69.             JNum(estimate)     = workitem("Estimate")
  70.             JNum(todo)         = workitem("ToDo")
  71.             JList(ownerids)    = workitem("Owners.Id")
  72.             JList(actuals)     = workitem("Actuals")
  73.             val ownerIds = for {JStr(ownerid) <- ownerids} yield {ownerid}
  74.         }
  75.       yield {
  76.         (itemNumber, new RemoteTask() {
  77.           // Members declared in com.ca.clarity.avee.api.domain.RemoteObject  
  78.           def getErrorMessage()     = null
  79.           def getExternalId()       = itemId // TODO: ExternalId is the (clarity | versionone) asset id
  80.           def getId()               = itemId // TODO:  Id is the (clarity | versionone) asset id
  81.           def getName()             = itemName
  82.           def isDeleted()           = false
  83.           def setErrorMessage(msg: String) = error("Not implemented")
  84.           def setId(id: String)     = error("Not implemented")  
  85.           def setName(name: String) = error("Not implemented")
  86.           // Members declared in com.ca.clarity.avee.api.domain.RemoteSprintItem  
  87.           def getKanbanBoardId()    = null
  88.           def getProjectId()        = scopeId  
  89.           def getReleaseId()        = release
  90.           def getSprintId()         = timeBoxId
  91.           def getStatus()           = 0
  92.           def getTitle()            = itemName
  93.           // Members declared in com.ca.clarity.avee.api.domain.RemoteTimeBoxedItem  
  94.           def getEndDate()          = parseDate(timeboxStart)
  95.           def getStartDate()        = parseDate(timeboxEnd)
  96.           // Members declared in com.ca.clarity.avee.api.domain.RemoteTask  
  97.           def getEstimatedHours()   = estimate
  98.           def getOwnerExternalIds() = ownerIds // TODO: Figure this out
  99.           def getOwnersCount()      = ownerIds.length
  100.           def getRemainingHours()   = todo
  101.           def getTaskType()         = null
  102.           def getUserStoryId()      = itemId
  103.           def getWorkLogs() = {
  104.             for {
  105.               JMap(actual) <- actuals
  106.                 JNum(value)      = actual("Value")
  107.                 JStr(memberId)   = actual("Member.Id")
  108.                 JStr(actualId)   = actual("_oid")
  109.                 JStr(actualDate) = actual("Date")
  110.               }
  111.             yield {
  112.               new RemoteTaskWorklog() {
  113.                 // Members declared in com.ca.clarity.avee.api.domain.RemoteObject  
  114.                 def getErrorMessage() = null  
  115.                 def getExternalId()   = actualId  // TODO: Figure this out
  116.                 def getId()           = actualId  // TODO: Figure this out
  117.                 def getName()         = null  
  118.                 def isDeleted()       = false  
  119.                 def setErrorMessage(msg: String) = error("Not implemented")
  120.                 def setId(id: String) = error("Not implemented")
  121.                 def setName(name: String) = error("Not implemented")
  122.                 // Members declared in com.ca.clarity.avee.api.domain.RemoteTaskWorklog  
  123.                 def getComment()      = null  
  124.                 def getHoursWorked()  = value
  125.                 def getResourceId()   = memberId  
  126.                 def getTaskId()       = itemId
  127.                 def getWorkDate()     = parseDate(actualDate)
  128.                 def getStartDate()    = parseDate(actualDate)
  129.                 }
  130.               }
  131.             }
  132.           })
  133.         }) toMap
  134.     }
  135.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement