@Override @CheckForNull protected ProjectMeasures doNext() { if (!projects.hasNext()) { return null; } Project project = projects.next(); Measures measures = selectMeasures(project.getUuid()); return new ProjectMeasures(project, measures); }
private static List<Project> selectProjects(DbSession session, @Nullable String projectUuid) { List<Project> projects = new ArrayList<>(); try (PreparedStatement stmt = createProjectsStatement(session, projectUuid); ResultSet rs = stmt.executeQuery()) { while (rs.next()) { String orgUuid = rs.getString(1); String uuid = rs.getString(2); String key = rs.getString(3); String name = rs.getString(4); Long analysisDate = DatabaseUtils.getLong(rs, 5); List<String> tags = readDbTags(DatabaseUtils.getString(rs, 6)); Project project = new Project(orgUuid, uuid, key, name, tags, analysisDate); projects.add(project); } return projects; } catch (SQLException e) { throw new IllegalStateException("Fail to execute request to select all projects", e); } }
private static List<Project> selectProjects(DbSession session, long afterDate, @Nullable String projectUuid) { List<Project> projects = new ArrayList<>(); try (PreparedStatement stmt = createProjectsStatement(session, afterDate, projectUuid); ResultSet rs = stmt.executeQuery()) { while (rs.next()) { String orgUuid = rs.getString(1); String uuid = rs.getString(2); String key = rs.getString(3); String name = rs.getString(4); String analysisUuid = DatabaseUtils.getString(rs, 5); Long analysisDate = DatabaseUtils.getLong(rs, 6); Project project = new Project(orgUuid, uuid, key, name, analysisUuid, analysisDate); projects.add(project); } return projects; } catch (SQLException e) { throw new IllegalStateException("Fail to execute request to select all projects", e); } }
private static ProjectMeasuresDoc toProjectMeasuresDoc(ProjectMeasures projectMeasures) { ProjectMeasuresIndexerIterator.Project project = projectMeasures.getProject(); Long analysisDate = project.getAnalysisDate(); return new ProjectMeasuresDoc() .setId(project.getUuid()) .setOrganizationUuid(project.getOrganizationUuid()) .setKey(project.getKey()) .setName(project.getName()) .setQualityGateStatus(projectMeasures.getMeasures().getQualityGateStatus()) .setTags(project.getTags()) .setAnalysedAt(analysisDate == null ? null : new Date(analysisDate)) .setMeasuresFromMap(projectMeasures.getMeasures().getNumericMeasures()) .setLanguages(new ArrayList<>(projectMeasures.getMeasures().getNclocByLanguages().keySet())) .setNclocLanguageDistributionFromMap(projectMeasures.getMeasures().getNclocByLanguages()); } }
@Override @CheckForNull protected ProjectMeasures doNext() { if (!projects.hasNext()) { return null; } Project project = projects.next(); Measures measures = selectMeasures(project.getUuid(), project.getAnalysisUuid()); return new ProjectMeasures(project, measures); }
@Test public void return_project_measure() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization, p -> p.setDbKey("Project-Key").setName("Project Name").setTagsString("platform,java")); SnapshotDto analysis = dbTester.components().insertSnapshot(project); MetricDto metric1 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("ncloc")); MetricDto metric2 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("coverage")); dbTester.measures().insertLiveMeasure(project, metric1, m -> m.setValue(10d)); dbTester.measures().insertLiveMeasure(project, metric2, m -> m.setValue(20d)); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById).hasSize(1); ProjectMeasures doc = docsById.get(project.uuid()); assertThat(doc).isNotNull(); assertThat(doc.getProject().getUuid()).isEqualTo(project.uuid()); assertThat(doc.getProject().getKey()).isEqualTo("Project-Key"); assertThat(doc.getProject().getName()).isEqualTo("Project Name"); assertThat(doc.getProject().getTags()).containsExactly("platform", "java"); assertThat(doc.getProject().getAnalysisDate()).isNotNull().isEqualTo(analysis.getCreatedAt()); assertThat(doc.getMeasures().getNumericMeasures()).containsOnly(entry(metric1.getKey(), 10d), entry(metric2.getKey(), 20d)); }
@Test public void return_only_docs_from_given_project() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project1 = dbTester.components().insertPrivateProject(organization); ComponentDto project2 = dbTester.components().insertPrivateProject(organization); ComponentDto project3 = dbTester.components().insertPrivateProject(organization); SnapshotDto analysis1 = dbTester.components().insertSnapshot(project1); SnapshotDto analysis2 = dbTester.components().insertSnapshot(project2); SnapshotDto analysis3 = dbTester.components().insertSnapshot(project3); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(project1.uuid()); assertThat(docsById).hasSize(1); ProjectMeasures doc = docsById.get(project1.uuid()); assertThat(doc).isNotNull(); assertThat(doc.getProject().getUuid()).isEqualTo(project1.uuid()); assertThat(doc.getProject().getKey()).isNotNull().isEqualTo(project1.getDbKey()); assertThat(doc.getProject().getName()).isNotNull().isEqualTo(project1.name()); assertThat(doc.getProject().getAnalysisDate()).isNotNull().isEqualTo(analysis1.getCreatedAt()); }
private static ProjectMeasuresDoc toProjectMeasuresDoc(ProjectMeasures projectMeasures) { ProjectMeasuresIndexerIterator.Project project = projectMeasures.getProject(); Long analysisDate = project.getAnalysisDate(); return new ProjectMeasuresDoc() .setId(project.getUuid()) .setOrganizationUuid(project.getOrganizationUuid()) .setKey(project.getKey()) .setName(project.getName()) .setQualityGateStatus(projectMeasures.getMeasures().getQualityGateStatus()) .setTags(project.getTags()) .setAnalysedAt(analysisDate == null ? null : new Date(analysisDate)) .setMeasuresFromMap(projectMeasures.getMeasures().getNumericMeasures()) .setLanguages(new ArrayList<>(projectMeasures.getMeasures().getNclocByLanguages().keySet())) .setNclocLanguageDistributionFromMap(projectMeasures.getMeasures().getNclocByLanguages()); } }
private Map<String, ProjectMeasures> createResultSetAndReturnDocsById(@Nullable String projectUuid) { ProjectMeasuresIndexerIterator it = ProjectMeasuresIndexerIterator.create(dbTester.getSession(), projectUuid); Map<String, ProjectMeasures> docsById = Maps.uniqueIndex(it, pm -> pm.getProject().getUuid()); it.close(); return docsById; } }
@Test public void return_project_without_analysis() { ComponentDto project = dbTester.components().insertComponent(ComponentTesting.newPrivateProjectDto(dbTester.organizations().insert())); dbClient.snapshotDao().insert(dbSession, newAnalysis(project).setLast(false)); dbSession.commit(); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById).hasSize(1); ProjectMeasures doc = docsById.get(project.uuid()); assertThat(doc.getProject().getAnalysisDate()).isNull(); }