static Component.Builder componentDtoToWsComponent(ComponentDto component) { Component.Builder wsComponent = Component.newBuilder() .setId(component.uuid()) .setKey(component.getKey()) .setName(component.name()) .setQualifier(component.qualifier()); ofNullable(component.getBranch()).ifPresent(wsComponent::setBranch); ofNullable(component.getPullRequest()).ifPresent(wsComponent::setPullRequest); ofNullable(component.path()).ifPresent(wsComponent::setPath); ofNullable(component.description()).ifPresent(wsComponent::setDescription); ofNullable(component.language()).ifPresent(wsComponent::setLanguage); return wsComponent; } }
private static Components.Component.Builder componentDtoToWsComponent(ComponentDto dto, String organizationDtoKey, Optional<SnapshotDto> lastAnalysis) { Components.Component.Builder wsComponent = Components.Component.newBuilder() .setOrganization(organizationDtoKey) .setId(dto.uuid()) .setKey(dto.getKey()) .setName(dto.name()) .setQualifier(dto.qualifier()); ofNullable(emptyToNull(dto.getBranch())).ifPresent(wsComponent::setBranch); ofNullable(emptyToNull(dto.getPullRequest())).ifPresent(wsComponent::setPullRequest); ofNullable(emptyToNull(dto.path())).ifPresent(wsComponent::setPath); ofNullable(emptyToNull(dto.description())).ifPresent(wsComponent::setDescription); ofNullable(emptyToNull(dto.language())).ifPresent(wsComponent::setLanguage); setTags(dto, wsComponent); lastAnalysis.ifPresent( analysis -> { wsComponent.setAnalysisDate(formatDateTime(analysis.getCreatedAt())); ofNullable(analysis.getPeriodDate()).ifPresent(leak -> wsComponent.setLeakPeriodDate(formatDateTime(leak))); ofNullable(analysis.getVersion()).ifPresent(wsComponent::setVersion); }); if (QUALIFIERS_WITH_VISIBILITY.contains(dto.qualifier())) { wsComponent.setVisibility(Visibility.getLabel(dto.isPrivate())); } return wsComponent; }
private static Optional<ComponentUpdateDto> compareForUpdate(ComponentDto existing, ComponentDto target) { boolean hasDifferences = !StringUtils.equals(existing.getCopyResourceUuid(), target.getCopyResourceUuid()) || !StringUtils.equals(existing.description(), target.description()) || !StringUtils.equals(existing.getDbKey(), target.getDbKey()) || !existing.isEnabled() || !StringUtils.equals(existing.getUuidPath(), target.getUuidPath()) || !StringUtils.equals(existing.language(), target.language()) || !StringUtils.equals(existing.longName(), target.longName()) || !StringUtils.equals(existing.moduleUuid(), target.moduleUuid()) || !StringUtils.equals(existing.moduleUuidPath(), target.moduleUuidPath()) || !StringUtils.equals(existing.name(), target.name()) || !StringUtils.equals(existing.path(), target.path()) || !StringUtils.equals(existing.scope(), target.scope()) || !StringUtils.equals(existing.qualifier(), target.qualifier()); ComponentUpdateDto update = null; if (hasDifferences) { update = ComponentUpdateDto .copyFrom(target) .setBChanged(true); } return ofNullable(update); }
private static Components.Component dtoToComponent(OrganizationDto organization, ComponentDto dto, String projectKey) { checkArgument( organization.getUuid().equals(dto.getOrganizationUuid()), "No Organization found for uuid '%s'", dto.getOrganizationUuid()); Components.Component.Builder builder = Components.Component.newBuilder() .setOrganization(organization.getKey()) .setId(dto.uuid()) .setKey(dto.getDbKey()) .setProject(projectKey) .setName(dto.name()) .setQualifier(dto.qualifier()); ofNullable(dto.language()).ifPresent(builder::setLanguage); return builder.build(); }
assertThat(row1.get("bEnabled")).isIn(false, /* for Oracle */0L, 0); assertThat(row1.get("bUuidPath")).isEqualTo(dto1.getUuidPath()); assertThat(row1.get("bLanguage")).isEqualTo(dto1.language()); assertThat(row1.get("bLongName")).isEqualTo(dto1.longName()); assertThat(row1.get("bModuleUuid")).isEqualTo(dto1.moduleUuid()); assertThat(row2.get("bEnabled")).isIn(false, /* for Oracle */0L, 0); assertThat(row2.get("bUuidPath")).isEqualTo(dto2.getUuidPath()); assertThat(row2.get("bLanguage")).isEqualTo(dto2.language()); assertThat(row2.get("bLongName")).isEqualTo(dto2.longName()); assertThat(row2.get("bModuleUuid")).isEqualTo(dto2.moduleUuid());
@Test public void map_fields() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPrivateProject(organization, p -> p.setLanguage("java")); underTest.indexOnStartup(emptySet()); assertThatIndexContainsOnly(project); ComponentDoc doc = es.getDocuments(INDEX_TYPE_COMPONENT, ComponentDoc.class).get(0); assertThat(doc.getId()).isEqualTo(project.uuid()); assertThat(doc.getKey()).isEqualTo(project.getDbKey()); assertThat(doc.getProjectUuid()).isEqualTo(project.projectUuid()); assertThat(doc.getName()).isEqualTo(project.name()); assertThat(doc.getLanguage()).isEqualTo(project.language()); assertThat(doc.getOrganization()).isEqualTo(project.getOrganizationUuid()); }
@Test public void setters_and_getters() { ComponentDto componentDto = new ComponentDto() .setId(1L) .setDbKey("org.struts:struts-core:src/org/struts/RequestContext.java") .setName("RequestContext.java") .setLongName("org.struts.RequestContext") .setQualifier("FIL") .setScope("FIL") .setLanguage("java") .setDescription("desc") .setPath("src/org/struts/RequestContext.java") .setCopyComponentUuid("uuid_5") .setRootUuid("uuid_3"); assertThat(componentDto.getId()).isEqualTo(1L); assertThat(componentDto.getDbKey()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java"); assertThat(componentDto.getBranch()).isNull(); assertThat(componentDto.name()).isEqualTo("RequestContext.java"); assertThat(componentDto.longName()).isEqualTo("org.struts.RequestContext"); assertThat(componentDto.qualifier()).isEqualTo("FIL"); assertThat(componentDto.scope()).isEqualTo("FIL"); assertThat(componentDto.path()).isEqualTo("src/org/struts/RequestContext.java"); assertThat(componentDto.language()).isEqualTo("java"); assertThat(componentDto.description()).isEqualTo("desc"); assertThat(componentDto.getRootUuid()).isEqualTo("uuid_3"); assertThat(componentDto.getCopyResourceUuid()).isEqualTo("uuid_5"); assertThat(componentDto.isPrivate()).isFalse(); }
@Test public void get_by_uuid() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPrivateProject(organization, p -> p .setDbKey("org.struts:struts") .setName("Struts") .setLongName("Apache Struts")); ComponentDto anotherProject = db.components().insertPrivateProject(organization); ComponentDto result = underTest.selectByUuid(dbSession, project.uuid()).get(); assertThat(result).isNotNull(); assertThat(result.getOrganizationUuid()).isEqualTo(organization.getUuid()); assertThat(result.uuid()).isEqualTo(project.uuid()); assertThat(result.getUuidPath()).isEqualTo("."); assertThat(result.moduleUuid()).isNull(); assertThat(result.moduleUuidPath()).isEqualTo("." + project.uuid() + "."); assertThat(result.projectUuid()).isEqualTo(project.uuid()); assertThat(result.getDbKey()).isEqualTo("org.struts:struts"); assertThat(result.path()).isNull(); assertThat(result.name()).isEqualTo("Struts"); assertThat(result.longName()).isEqualTo("Apache Struts"); assertThat(result.qualifier()).isEqualTo("TRK"); assertThat(result.scope()).isEqualTo("PRJ"); assertThat(result.language()).isNull(); assertThat(result.getCopyResourceUuid()).isNull(); assertThat(result.isPrivate()).isTrue(); assertThat(underTest.selectByUuid(dbSession, "UNKNOWN")).isEmpty(); }
@Test public void selectByKey() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPrivateProject(organization); ComponentDto directory = db.components().insertComponent(newDirectory(project, "src")); ComponentDto file = db.components().insertComponent(newFileDto(project, directory) .setDbKey("org.struts:struts-core:src/org/struts/RequestContext.java") .setName("RequestContext.java") .setLongName("org.struts.RequestContext") .setLanguage("java") .setPath("src/RequestContext.java")); Optional<ComponentDto> optional = underTest.selectByKey(dbSession, file.getDbKey()); ComponentDto result = optional.get(); assertThat(result.getOrganizationUuid()).isEqualTo(organization.getUuid()); assertThat(result.uuid()).isEqualTo(file.uuid()); assertThat(result.getDbKey()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java"); assertThat(result.path()).isEqualTo("src/RequestContext.java"); assertThat(result.name()).isEqualTo("RequestContext.java"); assertThat(result.longName()).isEqualTo("org.struts.RequestContext"); assertThat(result.qualifier()).isEqualTo("FIL"); assertThat(result.scope()).isEqualTo("FIL"); assertThat(result.language()).isEqualTo("java"); assertThat(result.projectUuid()).isEqualTo(project.uuid()); assertThat(underTest.selectByKey(dbSession, "unknown")).isEmpty(); }
@Test public void get_by_uuid_on_technical_project_copy() { ComponentDto view = db.components().insertView(); ComponentDto project = db.components().insertPublicProject(p -> p .setDbKey("org.struts:struts") .setName("Struts") .setLongName("Apache Struts")); ComponentDto projectCopy = db.components().insertComponent(newProjectCopy(project, view)); ComponentDto anotherProject = db.components().insertPrivateProject(); ComponentDto anotherProjectCopy = db.components().insertComponent(newProjectCopy(anotherProject, view)); ComponentDto result = underTest.selectByUuid(dbSession, projectCopy.uuid()).get(); assertThat(result.uuid()).isEqualTo(projectCopy.uuid()); assertThat(result.moduleUuid()).isEqualTo(view.uuid()); assertThat(result.moduleUuidPath()).isEqualTo("." + view.uuid() + "."); assertThat(result.projectUuid()).isEqualTo(view.uuid()); assertThat(result.getDbKey()).isEqualTo(view.getDbKey() + project.getDbKey()); assertThat(result.path()).isNull(); assertThat(result.name()).isEqualTo("Struts"); assertThat(result.longName()).isEqualTo("Apache Struts"); assertThat(result.qualifier()).isEqualTo("TRK"); assertThat(result.scope()).isEqualTo("FIL"); assertThat(result.language()).isNull(); assertThat(result.getCopyResourceUuid()).isEqualTo(project.uuid()); assertThat(result.isPrivate()).isFalse(); }
assertThat(fileDto.description()).isNull(); assertThat(fileDto.path()).isEqualTo("src/main/java/dir/Foo.java"); assertThat(fileDto.language()).isEqualTo("java"); assertThat(fileDto.uuid()).isEqualTo("DEFG"); assertThat(fileDto.getUuidPath()).isEqualTo(directoryDto.getUuidPath() + directoryDto.uuid() + UUID_PATH_SEPARATOR);
public static ComponentDoc toDocument(ComponentDto component) { return new ComponentDoc() .setId(component.uuid()) .setName(component.name()) .setKey(component.getDbKey()) .setProjectUuid(component.projectUuid()) .setOrganization(component.getOrganizationUuid()) .setLanguage(component.language()) .setQualifier(component.qualifier()); } }
assertThat(fileDto.description()).isNull(); assertThat(fileDto.path()).isEqualTo("src/main/java/dir/Foo.java"); assertThat(fileDto.language()).isEqualTo("java"); assertThat(fileDto.uuid()).isEqualTo("DEFG"); assertThat(fileDto.getUuidPath()).isEqualTo(directoryDto.getUuidPath() + directoryDto.uuid() + UUID_PATH_SEPARATOR);
/** * Copy the A-fields to B-fields. The field bChanged is kept to false. */ public static ComponentUpdateDto copyFrom(ComponentDto from) { return new ComponentUpdateDto() .setUuid(from.uuid()) .setBChanged(false) .setBKey(from.getDbKey()) .setBCopyComponentUuid(from.getCopyResourceUuid()) .setBDescription(from.description()) .setBEnabled(from.isEnabled()) .setBUuidPath(from.getUuidPath()) .setBLanguage(from.language()) .setBLongName(from.longName()) .setBModuleUuid(from.moduleUuid()) .setBModuleUuidPath(from.moduleUuidPath()) .setBName(from.name()) .setBPath(from.path()) // We don't have a b_scope. The applyBChangesForRootComponentUuid query is using a case ... when to infer scope from the qualifier .setBQualifier(from.qualifier()); } }
private static Optional<ComponentUpdateDto> compareForUpdate(ComponentDto existing, ComponentDto target) { boolean hasDifferences = !StringUtils.equals(existing.getCopyResourceUuid(), target.getCopyResourceUuid()) || !StringUtils.equals(existing.description(), target.description()) || !existing.isEnabled() || !StringUtils.equals(existing.getUuidPath(), target.getUuidPath()) || !StringUtils.equals(existing.language(), target.language()) || !StringUtils.equals(existing.longName(), target.longName()) || !StringUtils.equals(existing.moduleUuid(), target.moduleUuid()) || !StringUtils.equals(existing.moduleUuidPath(), target.moduleUuidPath()) || !StringUtils.equals(existing.name(), target.name()) || !StringUtils.equals(existing.path(), target.path()) || !StringUtils.equals(existing.qualifier(), target.qualifier()); ComponentUpdateDto update = null; if (hasDifferences) { update = ComponentUpdateDto .copyFrom(target) .setBChanged(true); } return ofNullable(update); }
private static Components.Component dtoToComponent(OrganizationDto organization, ComponentDto dto, String projectKey) { checkArgument( organization.getUuid().equals(dto.getOrganizationUuid()), "No Organization found for uuid '%s'", dto.getOrganizationUuid()); Components.Component.Builder builder = Components.Component.newBuilder() .setOrganization(organization.getKey()) .setId(dto.uuid()) .setKey(dto.getDbKey()) .setProject(projectKey) .setName(dto.name()) .setQualifier(dto.qualifier()); setNullable(dto.language(), builder::setLanguage); return builder.build(); }
private static Components.Component.Builder componentDtoToWsComponent(ComponentDto dto, String organizationDtoKey, Optional<SnapshotDto> lastAnalysis) { Components.Component.Builder wsComponent = Components.Component.newBuilder() .setOrganization(organizationDtoKey) .setId(dto.uuid()) .setKey(dto.getKey()) .setName(dto.name()) .setQualifier(dto.qualifier()); setNullable(emptyToNull(dto.getBranch()), wsComponent::setBranch); setNullable(emptyToNull(dto.getPullRequest()), wsComponent::setPullRequest); setNullable(emptyToNull(dto.path()), wsComponent::setPath); setNullable(emptyToNull(dto.description()), wsComponent::setDescription); setNullable(emptyToNull(dto.language()), wsComponent::setLanguage); setTags(dto, wsComponent); lastAnalysis.ifPresent( analysis -> { wsComponent.setAnalysisDate(formatDateTime(analysis.getCreatedAt())); setNullable(analysis.getPeriodDate(), leak -> wsComponent.setLeakPeriodDate(formatDateTime(leak))); setNullable(analysis.getVersion(), wsComponent::setVersion); }); if (QUALIFIERS_WITH_VISIBILITY.contains(dto.qualifier())) { wsComponent.setVisibility(Visibility.getLabel(dto.isPrivate())); } return wsComponent; }
public static ComponentDoc toDocument(ComponentDto component) { return new ComponentDoc() .setId(component.uuid()) .setName(component.name()) .setKey(component.getDbKey()) .setProjectUuid(component.projectUuid()) .setOrganization(component.getOrganizationUuid()) .setLanguage(component.language()) .setQualifier(component.qualifier()); } }
static Component.Builder componentDtoToWsComponent(ComponentDto component) { Component.Builder wsComponent = Component.newBuilder() .setId(component.uuid()) .setKey(component.getKey()) .setName(component.name()) .setQualifier(component.qualifier()); Protobuf.setNullable(component.getBranch(), wsComponent::setBranch); Protobuf.setNullable(component.getPullRequest(), wsComponent::setPullRequest); Protobuf.setNullable(component.path(), wsComponent::setPath); Protobuf.setNullable(component.description(), wsComponent::setDescription); Protobuf.setNullable(component.language(), wsComponent::setLanguage); return wsComponent; } }
/** * Copy the A-fields to B-fields. The field bChanged is kept to false. */ public static ComponentUpdateDto copyFrom(ComponentDto from) { return new ComponentUpdateDto() .setUuid(from.uuid()) .setBChanged(false) .setBCopyComponentUuid(from.getCopyResourceUuid()) .setBDescription(from.description()) .setBEnabled(from.isEnabled()) .setBUuidPath(from.getUuidPath()) .setBLanguage(from.language()) .setBLongName(from.longName()) .setBModuleUuid(from.moduleUuid()) .setBModuleUuidPath(from.moduleUuidPath()) .setBName(from.name()) .setBPath(from.path()) .setBQualifier(from.qualifier()); } }