/*********************************************
* 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;
}
示例#3
0
 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();
 }