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)
- }
- 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")
- JList(actuals) = workitem("Actuals")
- val ownerIds = for {JStr(ownerid) <- ownerids} yield {ownerid}
- }
- yield {
- (itemNumber, new RemoteTask() {
- // Members declared in com.ca.clarity.avee.api.domain.RemoteObject
- def getErrorMessage() = null
- def getExternalId() = itemId // TODO: ExternalId is the (clarity | versionone) asset id
- def getId() = itemId // TODO: Id is the (clarity | versionone) asset id
- def getName() = itemName
- def isDeleted() = false
- def setErrorMessage(msg: String) = error("Not implemented")
- def setId(id: String) = error("Not implemented")
- def setName(name: String) = error("Not implemented")
- // Members declared in com.ca.clarity.avee.api.domain.RemoteSprintItem
- def getKanbanBoardId() = null
- def getProjectId() = scopeId
- def getReleaseId() = release
- def getSprintId() = timeBoxId
- def getStatus() = 0
- def getTitle() = itemName
- // Members declared in com.ca.clarity.avee.api.domain.RemoteTimeBoxedItem
- def getEndDate() = parseDate(timeboxStart)
- def getStartDate() = parseDate(timeboxEnd)
- // Members declared in com.ca.clarity.avee.api.domain.RemoteTask
- def getEstimatedHours() = estimate
- def getOwnerExternalIds() = ownerIds // TODO: Figure this out
- def getOwnersCount() = ownerIds.length
- def getRemainingHours() = todo
- def getTaskType() = null
- def getUserStoryId() = itemId
- def getWorkLogs() = {
- 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() = null
- def getExternalId() = actualId // TODO: Figure this out
- def getId() = actualId // TODO: Figure this out
- def getName() = null
- def isDeleted() = false
- def setErrorMessage(msg: String) = error("Not implemented")
- def setId(id: String) = error("Not implemented")
- def setName(name: String) = error("Not implemented")
- // Members declared in com.ca.clarity.avee.api.domain.RemoteTaskWorklog
- def getComment() = null
- def getHoursWorked() = value
- def getResourceId() = memberId
- def getTaskId() = itemId
- def getWorkDate() = parseDate(actualDate)
- def getStartDate() = parseDate(actualDate)
- }
- }
- }
- })
- }) toMap
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement