Advertisement
Guest User

Untitled

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