반응형
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
/**
* iBatis를 사용하여 테스트 관리 데이터를 조회하는 DAO 클래스입니다.
* 이 클래스는 데이터베이스에서 가져온 결과를 가공하여 요청된 형식으로 반환합니다.
*/
public class TestManagementDAO extends SqlMapClientDaoSupport {
/**
* 조회 조건에 따라 테스트 관리 데이터를 데이터베이스에서 가져옵니다.
* SQL 쿼리 결과를 가공하여, 각 테스트 케이스의 액티비티를 단일 맵에 포함시킵니다.
*
* @param params 조회 조건을 담고 있는 맵 (testId는 필수, scenarioName, testCaseName은 선택 사항).
* @return 각 테스트 케이스가 액티비티를 포함하는 맵 형태로 변환된 데이터 리스트를 반환합니다.
*/
public List<Map<String, Object>> getTestManagementData(Map<String, Object> params) {
// 1. 데이터베이스에서 원본 데이터를 조회합니다.
List<Map<String, Object>> rawData = (List<Map<String, Object>>) getSqlMapClientTemplate().queryForList("TestManagement.getTestManagementData", params);
// 2. testCaseId를 기준으로 데이터를 그룹화합니다.
Map<String, List<Map<String, Object>>> groupedByTestCaseId = rawData.stream()
.filter(row -> row.get("testCaseId") != null) // testCaseId가 null이 아닌 경우만 필터링
.collect(Collectors.groupingBy(row -> (String) row.get("testCaseId")));
// 3. 그룹화된 데이터를 요청 형식으로 변환합니다.
List<Map<String, Object>> resultData = new ArrayList<>();
groupedByTestCaseId.forEach((testCaseId, activities) -> {
// 각 테스트 케이스에 대한 맵을 생성합니다.
Map<String, Object> testCaseMap = new HashMap<>();
// 공통 필드를 설정합니다.
// 첫 번째 액티비티의 데이터를 기준으로 공통 정보를 가져옵니다.
if (!activities.isEmpty()) {
Map<String, Object> firstActivity = activities.get(0);
testCaseMap.put("testId", firstActivity.get("testId"));
testCaseMap.put("testName", firstActivity.get("testName"));
testCaseMap.put("scenarioId", firstActivity.get("scenarioId"));
testCaseMap.put("scenarioName", firstActivity.get("scenarioName"));
testCaseMap.put("testCaseId", firstActivity.get("testCaseId"));
testCaseMap.put("testCaseName", firstActivity.get("testCaseName"));
testCaseMap.put("type", firstActivity.get("type"));
testCaseMap.put("description", firstActivity.get("description"));
}
// 액티비티 정보를 동적으로 추가합니다.
for (int i = 0; i < activities.size(); i++) {
Map<String, Object> activity = activities.get(i);
int activityNumber = i + 1;
testCaseMap.put("activityName" + activityNumber, activity.get("activityName"));
testCaseMap.put("activityResult" + activityNumber, activity.get("result"));
}
resultData.add(testCaseMap);
});
return resultData;
}
}
반응형
'테스트 플렛폼' 카테고리의 다른 글
GitHub 웹에서 바로 폴더(folder) 생성 방법 (0) | 2025.09.11 |
---|---|
Visual Studio Code(VS Code)에서 Qwen 사용하기 (0) | 2025.09.10 |
전체 시스템 구성도 프롬프트 세트 (1) | 2025.08.19 |
소프트웨어 생애 주기 관리(Software Lifecycle Management, SLM) (0) | 2025.08.19 |
테스트 관리 도구(Test Management Tool) (0) | 2025.08.19 |