Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.versionone.connectors.ClarityOne.RemoteProvider
- import com.versionone.connectors.ClarityOne._
- import com.ca.clarity.avee.api._
- import com.ca.clarity.avee.api.service._
- import com.ca.clarity.avee.api.domain._
- import collection.JavaConversions._
- /**
- * A Task in Clarity parlance is a Workitem in VersionOne
- * Worklogs are the actuals that are logged against a workitem
- * a Release is an epic in VersionOne
- * so, given a release
- * - look up the epic
- * - get all child workitems
- * - get all actuals on those workitems with actual asset creation times between midnight on start and 23:59:59.999 on end
- *
- * - report each child workitem as a task
- * - report each actual as a worklog
- */
- object RemoteTaskQueries {
- def parseDate(d:String) = {
- val format = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
- format.parse(d)
- }
- val alternative_query = """
- from: Actuals
- filter:
- - Workitem.Timebox.BeginDate>='$start'
- - Workitem.Timebox.BeginDate<='$end'
- - Workitem.ParentAndUp:Epic.Name='$release'
- select:
- - Date
- - Member.Id
- - Value
- - Workitem.Owners.Id
- - Workitem.Estimate
- - Workitem.Todo
- - Workitem.Timebox.BeginDate
- - Workitem.Timebox.EndDate
- - Workitem.Scope.Id
- - Workitem.Id
- - Workitem.Name
- - Workitem.Number
- -
- """
- def GetRemoteTasks(client:OAuth2HttpClient, release:String, start:java.util.Date, end:java.util.Date) = {
- val results = client.Query(s"""
- from: Epic
- where:
- Number: $release
- select:
- - from: ChildrenAndDown:PrimaryWorkitem
- select:
- - Number
- - Name
- - Id
- - Scope.Id
- - Timebox.Id
- - Timebox.BeginDate
- - Timebox.EndDate
- - ToDo
- - Estimate
- - Owners.Id
- - from: Actuals
- select:
- - Date
- - Member.Id
- - Value
- filter:
- - Date>='$start'
- - Date<='$end'
- """)
- (for {
- JMap(epic) <- results
- JStr(epicNumber) = epic("Number")
- JList(workitems) = epic("ChildrenAndDown:PrimaryWorkitem")
- JMap(workitem) <- workitems
- JStr(itemName) = workitem("Name")
- JStr(itemId) = workitem("_oid")
- JStr(timeBoxId) = workitem("Timebox.Id")
- JStr(timeboxStart) = workitem("Timebox.BeginDate")
- JStr(timeboxEnd) = workitem("Timebox.EndDate")
- JStr(scopeId) = workitem("Scope.Id")
- JStr(description) = workitem("Description")
- JStr(itemNumber) = workitem("Number")
- JNum(estimate) = workitem("Estimate")
- JNum(todo) = workitem("ToDo")
- JList(ownerids) = workitem("Owners.Id")
- val ownerIds = for {JStr(ownerid) <- ownerids} yield {ownerid}
- JList(actuals) = workitem("Actuals")
- }
- yield {
- (itemNumber, new RemoteTask() {
- // Members declared in com.ca.clarity.avee.api.domain.RemoteObject
- def getErrorMessage(): String = null
- def getExternalId(): String = itemId // ExternalId is the (clarity | versionone) asset id
- def getId(): String = itemId // Id is the (clarity | versionone) asset id
- def getName(): String = itemName
- def isDeleted(): Boolean = false
- def setErrorMessage(x$1: String): Unit = error("Not implemented")
- def setId(x$1: String): Unit = error("Not implemented")
- def setName(x$1: String): Unit = error("Not implemented")
- // Members declared in com.ca.clarity.avee.api.domain.RemoteSprintItem
- def getKanbanBoardId(): String = ???
- def getProjectId(): String = scopeId
- def getReleaseId(): String = release
- def getSprintId(): String = timeBoxId
- def getStatus(): Int = 0
- def getTitle(): String = itemName
- // Members declared in com.ca.clarity.avee.api.domain.RemoteTimeBoxedItem
- def getEndDate(): java.util.Date = parseDate(timeboxStart)
- def getStartDate(): java.util.Date = parseDate(timeboxEnd)
- // Members declared in com.ca.clarity.avee.api.domain.RemoteTask
- def getEstimatedHours(): Double = estimate
- def getOwnerExternalIds(): java.util.List[String] = ownerIds // TODO: Figure this out
- def getOwnersCount(): Long = ownerIds.length
- def getRemainingHours(): Double = todo
- def getTaskType(): String = null
- def getUserStoryId(): String = itemId
- def getWorkLogs(): java.util.List[RemoteTaskWorklog] = {
- for {
- JMap(actual) <- actuals
- JNum(value) = actual("Value")
- JStr(memberId) = actual("Member.Id")
- JStr(actualId) = actual("_oid")
- JStr(actualDate) = actual("Date")
- }
- yield {
- new RemoteTaskWorklog() {
- // Members declared in com.ca.clarity.avee.api.domain.RemoteObject
- def getErrorMessage(): String = null
- def getExternalId(): String = actualId // TODO: Figure this out
- def getId(): String = actualId // TODO: Figure this out
- def getName(): String = null
- def isDeleted(): Boolean = false
- def setErrorMessage(x$1: String) = error("Not implemented")
- def setId(x$1: String) = error("Not implemented")
- def setName(x$1: String) = error("Not implemented")
- // Members declared in com.ca.clarity.avee.api.domain.RemoteTaskWorklog
- def getComment(): String = null
- def getHoursWorked(): Double = value
- def getResourceId(): String = memberId
- def getTaskId(): String = itemId
- def getWorkDate(): java.util.Date = parseDate(actualDate)
- def getStartDate(): java.util.Date = parseDate(actualDate)
- }
- }
- }
- })
- }) toMap
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement