public IssueDto setComponent(ComponentDto component) { this.componentKey = component.getDbKey(); this.componentUuid = component.uuid(); this.moduleUuid = component.moduleUuid(); this.moduleUuidPath = component.moduleUuidPath(); this.filePath = component.path(); return this; }
private static void addDirectories(IssueQuery.Builder builder, List<ComponentDto> directories) { Collection<String> directoryModuleUuids = new HashSet<>(); Collection<String> directoryPaths = new HashSet<>(); for (ComponentDto directory : directories) { directoryModuleUuids.add(directory.moduleUuid()); directoryPaths.add(directory.path()); } builder.moduleUuids(directoryModuleUuids); builder.directories(directoryPaths); }
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); }
@CheckForNull private ComponentDto retrieveParentModuleIfNotCurrentComponent(ComponentDto componentDto, DbSession session) { final String moduleUuid = componentDto.moduleUuid(); if (moduleUuid == null || componentDto.uuid().equals(moduleUuid)) { return null; } return dbClient.componentDao().selectOrFailByUuid(session, moduleUuid); }
private void assertDtoIsProjectView1(ComponentDto pv1Dto, ComponentDto viewDto, ComponentDto parentViewDto, ComponentDto project) { assertThat(pv1Dto.getOrganizationUuid()).isEqualTo(ORGANIZATION_UUID); assertThat(pv1Dto.name()).isEqualTo(PROJECT_VIEW_1_NAME); assertThat(pv1Dto.longName()).isEqualTo(PROJECT_VIEW_1_NAME); assertThat(pv1Dto.description()).isNull(); assertThat(pv1Dto.path()).isNull(); assertThat(pv1Dto.uuid()).isEqualTo(PROJECT_VIEW_1_UUID); assertThat(pv1Dto.projectUuid()).isEqualTo(viewDto.uuid()); assertThat(pv1Dto.getRootUuid()).isEqualTo(viewDto.uuid()); assertThat(pv1Dto.moduleUuid()).isEqualTo(parentViewDto.uuid()); assertThat(pv1Dto.moduleUuidPath()).isEqualTo(parentViewDto.moduleUuidPath() + pv1Dto.uuid() + "."); assertThat(pv1Dto.qualifier()).isEqualTo(Qualifiers.PROJECT); assertThat(pv1Dto.scope()).isEqualTo(Scopes.FILE); assertThat(pv1Dto.getCopyResourceUuid()).isEqualTo(project.uuid()); assertThat(pv1Dto.getCreatedAt()).isEqualTo(now); }
private void writeFileRefs(DbSession session, Map<String, Reference> refByComponentKey, ShowResponse.Builder response, @Nullable String branch, @Nullable String pullRequest) { Map<String, ComponentDto> projectsByUuid = new HashMap<>(); Map<String, ComponentDto> parentModulesByUuid = new HashMap<>(); for (Map.Entry<String, Reference> entry : refByComponentKey.entrySet()) { Reference ref = entry.getValue(); ComponentDto file = ref.getDto(); if (file != null) { ComponentDto project = getProject(file.projectUuid(), projectsByUuid, session); ComponentDto parentModule = getParentProject(file.moduleUuid(), parentModulesByUuid, session); response.putFiles(ref.getId(), toWsFile(file, project, parentModule, branch, pullRequest)); } else { response.putFiles(ref.getId(), toWsFile(ref.getComponentKey(), branch, pullRequest)); } } }
/** * Assertions to verify the DTO created from {@link #createViewBuilder(ViewAttributes.Type)} ()} */ private void assertDtoIsView(ComponentDto dto) { assertThat(dto.getOrganizationUuid()).isEqualTo(ORGANIZATION_UUID); assertThat(dto.name()).isEqualTo(VIEW_NAME); assertThat(dto.longName()).isEqualTo(VIEW_NAME); assertThat(dto.description()).isEqualTo(VIEW_DESCRIPTION); assertThat(dto.path()).isNull(); assertThat(dto.uuid()).isEqualTo(VIEW_UUID); assertThat(dto.projectUuid()).isEqualTo(VIEW_UUID); assertThat(dto.getRootUuid()).isEqualTo(VIEW_UUID); assertThat(dto.moduleUuid()).isNull(); assertThat(dto.moduleUuidPath()).isEqualTo("." + dto.uuid() + "."); assertThat(dto.qualifier()).isEqualTo(Qualifiers.VIEW); assertThat(dto.scope()).isEqualTo(Scopes.PROJECT); assertThat(dto.getCopyResourceUuid()).isNull(); assertThat(dto.getCreatedAt()).isEqualTo(now); }
private Map<String, String> keysByUUid(DbSession session, ComponentDto component) { Map<String, String> keysByUUid = newHashMap(); if (Scopes.PROJECT.equals(component.scope())) { List<ComponentDto> modulesTree = dbClient.componentDao().selectDescendantModules(session, component.uuid()); for (ComponentDto componentDto : modulesTree) { keysByUUid.put(componentDto.uuid(), componentDto.getKey()); } } else { String moduleUuid = component.moduleUuid(); checkArgument(moduleUuid != null, "The component '%s' has no module uuid", component.uuid()); ComponentDto module = dbClient.componentDao().selectOrFailByUuid(session, moduleUuid); keysByUUid.put(module.uuid(), module.getKey()); } return keysByUUid; }
/** * Assertions to verify the DTO created from {@link #createViewBuilder(ViewAttributes.Type)} ()} */ private void assertDtoIsApplication(ComponentDto dto) { assertThat(dto.getOrganizationUuid()).isEqualTo(ORGANIZATION_UUID); assertThat(dto.name()).isEqualTo(VIEW_NAME); assertThat(dto.longName()).isEqualTo(VIEW_NAME); assertThat(dto.description()).isEqualTo(VIEW_DESCRIPTION); assertThat(dto.path()).isNull(); assertThat(dto.uuid()).isEqualTo(VIEW_UUID); assertThat(dto.projectUuid()).isEqualTo(VIEW_UUID); assertThat(dto.getRootUuid()).isEqualTo(VIEW_UUID); assertThat(dto.moduleUuid()).isNull(); assertThat(dto.moduleUuidPath()).isEqualTo("." + dto.uuid() + "."); assertThat(dto.qualifier()).isEqualTo(Qualifiers.APP); assertThat(dto.scope()).isEqualTo(Scopes.PROJECT); assertThat(dto.getCopyResourceUuid()).isNull(); assertThat(dto.getCreatedAt()).isEqualTo(now); }
@Override protected List<DefaultIssue> loadIssues() { List<DefaultIssue> result = new ArrayList<>(); try (DbSession dbSession = dbClient.openSession(false)) { Set<String> dirOrModulesUuidsWithIssues = dbClient.issueDao().selectModuleAndDirComponentUuidsOfOpenIssuesForProjectUuid(dbSession, component.getUuid()); if (!dirOrModulesUuidsWithIssues.isEmpty()) { Map<String, String> pathByModuleKey = reportModulesPath.get(); // Migrate issues that were previously on modules or directories to the root project Map<String, ComponentDto> modulesByUuid = dbClient.componentDao().selectProjectAndModulesFromProjectKey(dbSession, component.getDbKey(), true) .stream().collect(Collectors.toMap(ComponentDto::uuid, Function.identity())); List<ComponentDto> dirOrModulesWithIssues = dbClient.componentDao().selectByUuids(dbSession, dirOrModulesUuidsWithIssues); dirOrModulesWithIssues.forEach(c -> { List<DefaultIssue> issuesOnModuleOrDir = issuesLoader.loadOpenIssues(c.uuid()); String moduleOrDirProjectRelativePath = c.qualifier().equals(Qualifiers.MODULE) ? buildModuleProjectRelativePath(pathByModuleKey, c) : buildDirectoryProjectRelativePath(pathByModuleKey, c, modulesByUuid.get(c.moduleUuid())); result.addAll(migrateIssuesToTheRoot(issuesOnModuleOrDir, moduleOrDirProjectRelativePath)); componentsWithUnprocessedIssues.remove(c.uuid()); }); } result.addAll(issuesLoader.loadOpenIssues(effectiveUuid)); return result; } }
/** * Assertions to verify the DTO created from {@link #createProjectView1Builder(ComponentDto, Long)} */ private void assertDtoIsSubView1(ComponentDto viewDto, ComponentDto sv1Dto) { assertThat(sv1Dto.getOrganizationUuid()).isEqualTo(ORGANIZATION_UUID); assertThat(sv1Dto.name()).isEqualTo(SUBVIEW_1_NAME); assertThat(sv1Dto.longName()).isEqualTo(SUBVIEW_1_NAME); assertThat(sv1Dto.description()).isEqualTo(SUBVIEW_1_DESCRIPTION); assertThat(sv1Dto.path()).isNull(); assertThat(sv1Dto.uuid()).isEqualTo(SUBVIEW_1_UUID); assertThat(sv1Dto.projectUuid()).isEqualTo(viewDto.uuid()); assertThat(sv1Dto.getRootUuid()).isEqualTo(viewDto.uuid()); assertThat(sv1Dto.moduleUuid()).isEqualTo(viewDto.uuid()); assertThat(sv1Dto.moduleUuidPath()).isEqualTo(viewDto.moduleUuidPath() + sv1Dto.uuid() + "."); assertThat(sv1Dto.qualifier()).isEqualTo(Qualifiers.SUBVIEW); assertThat(sv1Dto.scope()).isEqualTo(Scopes.PROJECT); assertThat(sv1Dto.getCopyResourceUuid()).isNull(); assertThat(sv1Dto.getCreatedAt()).isEqualTo(now); }
@Test public void param_componentUuids_enables_search_in_directory_tree() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto dir = db.components().insertComponent(newDirectory(project, "src/main/java/foo")); SearchRequest request = new SearchRequest() .setComponentUuids(asList(dir.uuid())); IssueQuery query = underTest.create(request); assertThat(query.moduleUuids()).containsOnly(dir.moduleUuid()); assertThat(query.directories()).containsOnly(dir.path()); assertThat(query.onComponentOnly()).isFalse(); }
assertThat(row1.get("bLanguage")).isEqualTo(dto1.language()); assertThat(row1.get("bLongName")).isEqualTo(dto1.longName()); assertThat(row1.get("bModuleUuid")).isEqualTo(dto1.moduleUuid()); assertThat(row1.get("bModuleUuidPath")).isEqualTo(dto1.moduleUuidPath()); assertThat(row1.get("bName")).isEqualTo(dto1.name()); assertThat(row2.get("bLanguage")).isEqualTo(dto2.language()); assertThat(row2.get("bLongName")).isEqualTo(dto2.longName()); assertThat(row2.get("bModuleUuid")).isEqualTo(dto2.moduleUuid()); assertThat(row2.get("bModuleUuidPath")).isEqualTo(dto2.moduleUuidPath()); assertThat(row2.get("bName")).isEqualTo(dto2.name());
@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 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(loaded.uuid()).isNotNull(); assertThat(loaded.projectUuid()).isEqualTo(loaded.uuid()); assertThat(loaded.moduleUuid()).isNull(); assertThat(loaded.moduleUuidPath()).isEqualTo("." + loaded.uuid() + "."); assertThat(loaded.isPrivate()).isEqualTo(project.isPrivate());
assertThat(directory.moduleUuid()).isEqualTo(project.uuid()); assertThat(directory.moduleUuidPath()).isEqualTo(project.moduleUuidPath()); assertThat(directory.projectUuid()).isEqualTo(project.uuid()); assertThat(file.moduleUuid()).isEqualTo(project.uuid()); assertThat(file.moduleUuidPath()).isEqualTo(project.moduleUuidPath()); assertThat(file.projectUuid()).isEqualTo(project.uuid());
assertThat(directoryReloaded.uuid()).isEqualTo(directory.uuid()); assertThat(directoryReloaded.getUuidPath()).isEqualTo(directoryReloaded.getUuidPath()); assertThat(directoryReloaded.moduleUuid()).isEqualTo(project.uuid()); assertThat(directoryReloaded.moduleUuidPath()).isEqualTo(project.moduleUuidPath()); assertThat(directoryReloaded.projectUuid()).isEqualTo(project.uuid()); assertThat(fileReloaded.uuid()).isEqualTo(file.uuid()); assertThat(fileReloaded.getUuidPath()).isEqualTo(fileReloaded.getUuidPath()); assertThat(fileReloaded.moduleUuid()).isEqualTo(project.uuid()); assertThat(fileReloaded.moduleUuidPath()).isEqualTo(project.moduleUuidPath()); assertThat(fileReloaded.projectUuid()).isEqualTo(project.uuid());
public static IssueDoc newDoc(String key, ComponentDto componentDto) { String mainBranchProjectUuid = componentDto.getMainBranchProjectUuid(); return newDoc() .setKey(key) .setBranchUuid(componentDto.projectUuid()) .setComponentUuid(componentDto.uuid()) .setModuleUuid(!componentDto.scope().equals(Scopes.PROJECT) ? componentDto.moduleUuid() : componentDto.uuid()) .setModuleUuidPath(componentDto.moduleUuidPath()) .setProjectUuid(mainBranchProjectUuid == null ? componentDto.projectUuid() : mainBranchProjectUuid) .setOrganizationUuid(componentDto.getOrganizationUuid()) // File path make no sens on modules and projects .setFilePath(!componentDto.scope().equals(Scopes.PROJECT) ? componentDto.path() : null) .setIsMainBranch(mainBranchProjectUuid == null); }
/** * 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()); } }