private void mergeLinks(DbSession session, String componentUuid, List<ScannerReport.ComponentLink> links, List<ProjectLinkDto> previousLinks) { Set<String> linkType = new HashSet<>(); links.forEach( link -> { String type = convertType(link.getType()); checkArgument(!linkType.contains(type), "Link of type '%s' has already been declared on component '%s'", type, componentUuid); linkType.add(type); Optional<ProjectLinkDto> previousLink = previousLinks.stream() .filter(input -> input != null && input.getType().equals(convertType(link.getType()))) .findFirst(); if (previousLink.isPresent()) { previousLink.get().setHref(link.getHref()); dbClient.projectLinkDao().update(session, previousLink.get()); } else { dbClient.projectLinkDao().insert(session, new ProjectLinkDto() .setUuid(uuidFactory.create()) .setProjectUuid(componentUuid) .setType(type) .setHref(link.getHref())); } }); previousLinks.stream() .filter(dto -> !linkType.contains(dto.getType())) .filter(dto -> ProjectLinkDto.PROVIDED_TYPES.contains(dto.getType())) .forEach(dto -> dbClient.projectLinkDao().delete(session, dto.getUuid())); }
@SafeVarargs private final ProjectLinkDto insertLink(ComponentDto project, ProjectLinkDto componentLink, Consumer<ProjectLinkDto>... dtoPopulators) { Arrays.stream(dtoPopulators).forEach(dtoPopulator -> dtoPopulator.accept(componentLink)); dbClient.projectLinkDao().insert(dbSession, componentLink.setProjectUuid(project.uuid())); db.commit(); return componentLink; } }
@Test public void insert() { ComponentDto project = db.components().insertPrivateProject(); ProjectLinkDto link = ProjectLinkTesting.newProvidedLinkDto() .setUuid("ABCD") .setProjectUuid(project.uuid()) .setName("Home") .setType("homepage") .setHref("http://www.struts.org") // These fields will be set by the DAO .setCreatedAt(0L) .setUpdatedAt(0L); underTest.insert(db.getSession(), link); db.getSession().commit(); ProjectLinkDto reloaded = underTest.selectByUuid(db.getSession(), link.getUuid()); assertThat(reloaded.getUuid()).isEqualTo("ABCD"); assertThat(reloaded.getProjectUuid()).isEqualTo(project.uuid()); assertThat(reloaded.getType()).isEqualTo("homepage"); assertThat(reloaded.getName()).isEqualTo("Home"); assertThat(reloaded.getHref()).isEqualTo("http://www.struts.org"); assertThat(reloaded.getCreatedAt()).isEqualTo(NOW); assertThat(reloaded.getUpdatedAt()).isEqualTo(NOW); }
private CreateWsResponse doHandle(CreateRequest createWsRequest) { String name = createWsRequest.getName(); String url = createWsRequest.getUrl(); try (DbSession dbSession = dbClient.openSession(false)) { ComponentDto component = checkProject(getComponentByUuidOrKey(dbSession, createWsRequest)); userSession.checkComponentPermission(UserRole.ADMIN, component); ProjectLinkDto link = new ProjectLinkDto() .setUuid(uuidFactory.create()) .setProjectUuid(component.uuid()) .setName(name) .setHref(url) .setType(nameToType(name)); dbClient.projectLinkDao().insert(dbSession, link); dbSession.commit(); return buildResponse(link); } }
private void mergeLinks(DbSession session, String componentUuid, List<ScannerReport.ComponentLink> links, List<ProjectLinkDto> previousLinks) { Set<String> linkType = new HashSet<>(); links.forEach( link -> { String type = convertType(link.getType()); checkArgument(!linkType.contains(type), "Link of type '%s' has already been declared on component '%s'", type, componentUuid); linkType.add(type); Optional<ProjectLinkDto> previousLink = previousLinks.stream() .filter(input -> input != null && input.getType().equals(convertType(link.getType()))) .findFirst(); if (previousLink.isPresent()) { previousLink.get().setHref(link.getHref()); dbClient.projectLinkDao().update(session, previousLink.get()); } else { dbClient.projectLinkDao().insert(session, new ProjectLinkDto() .setUuid(uuidFactory.create()) .setProjectUuid(componentUuid) .setType(type) .setHref(link.getHref())); } }); previousLinks.stream() .filter(dto -> !linkType.contains(dto.getType())) .filter(dto -> ProjectLinkDto.PROVIDED_TYPES.contains(dto.getType())) .forEach(dto -> dbClient.projectLinkDao().delete(session, dto.getUuid())); }
private CreateWsResponse doHandle(CreateRequest createWsRequest) { String name = createWsRequest.getName(); String url = createWsRequest.getUrl(); try (DbSession dbSession = dbClient.openSession(false)) { ComponentDto component = checkProject(getComponentByUuidOrKey(dbSession, createWsRequest)); userSession.checkComponentPermission(UserRole.ADMIN, component); ProjectLinkDto link = new ProjectLinkDto() .setUuid(uuidFactory.create()) .setProjectUuid(component.uuid()) .setName(name) .setHref(url) .setType(nameToType(name)); dbClient.projectLinkDao().insert(dbSession, link); dbSession.commit(); return buildResponse(link); } }