/********************************************* * Creates a backlog item in the project with the specified name, under the parent object (if not empty string). * The items will be called the item name. * Params: * projectName - name of the project to create the item in the backlog * parentName - name of the parent item to put the item under * itemName - name for the newly created item * Returns: * the ref ID of the newly created item. -1 if not successful. **********************************************/ HPMUniqueID HansoftUtils::createBacklogItem(HPMString projectName, HPMString parentName, HPMString itemName) { HPMSdkSession *session = SessionManager::getInstance().Session(); HPMUniqueID projectID = HansoftUtils::findProject(projectName); if (!projectID.IsValid()) return -1; HPMProjectProperties projectProp = session->ProjectGetProperties(projectID); HPMUniqueID productBacklogUID = session->ProjectUtilGetBacklog(projectID); HPMTaskEnum Tasks = session->TaskEnum(productBacklogUID); for (HPMUInt32 j = 0; j < Tasks.m_Tasks.size(); ++j) { HPMUniqueID parentBacklogID = Tasks.m_Tasks[j]; // TODO: Handle if no parent is specified if (session->TaskGetDescription(parentBacklogID).compare(parentName) == 0) { HPMTaskCreateUnified newBacklogItem; newBacklogItem.m_Tasks.resize(1); newBacklogItem.m_Tasks[0].m_bIsProxy = false; newBacklogItem.m_Tasks[0].m_LocalID = -1; newBacklogItem.m_Tasks[0].m_TaskLockedType = EHPMTaskLockedType_BacklogItem; HPMTaskCreateUnifiedReference prevRefID; prevRefID.m_bLocalID = false; prevRefID.m_RefID = -1; newBacklogItem.m_Tasks[0].m_PreviousRefID = prevRefID; HPMTaskCreateUnifiedReference prevWorkPrioRefID; prevWorkPrioRefID.m_bLocalID = false; prevWorkPrioRefID.m_RefID = -2; newBacklogItem.m_Tasks[0].m_PreviousWorkPrioRefID = prevWorkPrioRefID; HPMTaskCreateUnifiedReference parentBacklogTaskRefID; parentBacklogTaskRefID.m_bLocalID = false; parentBacklogTaskRefID.m_RefID = session->TaskGetMainReference(parentBacklogID); newBacklogItem.m_Tasks[0].m_ParentRefIDs.push_back(parentBacklogTaskRefID); newBacklogItem.m_Tasks[0].m_NonProxy_ReuseID = 0; newBacklogItem.m_Tasks[0].m_NonProxy_WorkflowID = 0xffffffff; HPMChangeCallbackData_TaskCreateUnified TaskCreateReturn = session->TaskCreateUnifiedBlock(productBacklogUID, newBacklogItem); if (newBacklogItem.m_Tasks.size() == 1) { // The returned is a task ref in the project container. We need the task id not the reference id. HPMUniqueID newTestSuiteTaskRefID = TaskCreateReturn.m_Tasks[0].m_TaskRefID; HPMUniqueID newTestSuiteTaskID = session->TaskRefGetTask(newTestSuiteTaskRefID); // Set the name and the status of the test suite session->TaskSetDescription(newTestSuiteTaskID, itemName); session->TaskSetStatus(newTestSuiteTaskID, EHPMTaskStatus_NotDone, true, EHPMTaskSetStatusFlag_All); session->TaskSetFullyCreated(newTestSuiteTaskID); return newTestSuiteTaskRefID; } else return -1; } } return -1; }
/********************************************* * The projects in the database that the SessionManager is connected to. * Params: * projectName - name of the project to look for * Returns: * the ID of the project with the corresponding name. -1 if it doesn't exist. **********************************************/ HPMUniqueID HansoftUtils::findProject(HPMString projectName) { HPMSdkSession *session = SessionManager::getInstance().Session(); HPMProjectEnum projectIDs = session->ProjectEnum(); for (int i = 0; i < projectIDs.m_Projects.size(); ++i) { HPMProjectProperties properties = session->ProjectGetProperties(projectIDs.m_Projects[i]); if (properties.m_Name == projectName) return projectIDs.m_Projects[i]; } return -1; }
HPMUniqueID FindProjectByName(HPMString name) { HPMProjectEnum projects = session_->ProjectEnum(); for (HPMUniqueID project_id : projects.m_Projects) { HPMProjectProperties properties = session_->ProjectGetProperties(project_id); if (properties.m_Name == name) { wcout << "Found project: " << name.c_str() << "\r\n"; return project_id; } } wcerr << "Can not find project: " << name.c_str() << "\r\n"; return HPMUniqueID(); }