private UsersWsResponse buildResponse(List<UserDto> users, List<UserPermissionDto> userPermissions, Paging paging) { Multimap<Integer, String> permissionsByUserId = TreeMultimap.create(); userPermissions.forEach(userPermission -> permissionsByUserId.put(userPermission.getUserId(), userPermission.getPermission())); UsersWsResponse.Builder response = UsersWsResponse.newBuilder(); users.forEach(user -> { Permissions.User.Builder userResponse = response.addUsersBuilder() .setLogin(user.getLogin()) .addAllPermissions(permissionsByUserId.get(user.getId())); ofNullable(user.getEmail()).ifPresent(userResponse::setEmail); ofNullable(emptyToNull(user.getEmail())).ifPresent(u -> userResponse.setAvatar(avatarResolver.create(user))); ofNullable(user.getName()).ifPresent(userResponse::setName); }); response.getPagingBuilder() .setPageIndex(paging.pageIndex()) .setPageSize(paging.pageSize()) .setTotal(paging.total()) .build(); return response.build(); }
private static void ensureComponentPermissionConsistency(DbSession dbSession, UserPermissionDto dto) { if (dto.getComponentId() == null) { return; } ComponentMapper componentMapper = dbSession.getMapper(ComponentMapper.class); checkArgument( componentMapper.countComponentByOrganizationAndId(dto.getOrganizationUuid(), dto.getComponentId()) == 1, "Can't insert permission '%s' for component with id '%s' in organization with uuid '%s' because this component does not belong to organization with uuid '%s'", dto.getPermission(), dto.getComponentId(), dto.getOrganizationUuid(), dto.getOrganizationUuid()); }
private void expectPermissions(PermissionQuery query, Collection<Integer> expectedUserIds, UserPermissionDto... expectedPermissions) { assertThat(underTest.selectUserIdsByQuery(dbSession, query)).containsExactly(expectedUserIds.toArray(new Integer[0])); List<UserPermissionDto> currentPermissions = underTest.selectUserPermissionsByQuery(dbSession, query, expectedUserIds); assertThat(currentPermissions).hasSize(expectedPermissions.length); List<Tuple> expectedPermissionsAsTuple = Arrays.stream(expectedPermissions) .map(expectedPermission -> tuple(expectedPermission.getUserId(), expectedPermission.getPermission(), expectedPermission.getComponentId(), expectedPermission.getOrganizationUuid())) .collect(Collectors.toList()); assertThat(currentPermissions) .extracting(UserPermissionDto::getUserId, UserPermissionDto::getPermission, UserPermissionDto::getComponentId, UserPermissionDto::getOrganizationUuid) .containsOnly(expectedPermissionsAsTuple.toArray(new Tuple[0])); // test method "countUsers()" long distinctUsers = stream(expectedPermissions).mapToLong(UserPermissionDto::getUserId).distinct().count(); assertThat((long) underTest.countUsersByQuery(dbSession, query)).isEqualTo(distinctUsers); }
private static void ensureComponentPermissionConsistency(DbSession dbSession, UserPermissionDto dto) { if (dto.getComponentId() == null) { return; } ComponentMapper componentMapper = dbSession.getMapper(ComponentMapper.class); checkArgument( componentMapper.countComponentByOrganizationAndId(dto.getOrganizationUuid(), dto.getComponentId()) == 1, "Can't insert permission '%s' for component with id '%s' in organization with uuid '%s' because this component does not belong to organization with uuid '%s'", dto.getPermission(), dto.getComponentId(), dto.getOrganizationUuid(), dto.getOrganizationUuid()); }
private UsersWsResponse buildResponse(List<UserDto> users, List<UserPermissionDto> userPermissions, Paging paging) { Multimap<Integer, String> permissionsByUserId = TreeMultimap.create(); userPermissions.forEach(userPermission -> permissionsByUserId.put(userPermission.getUserId(), userPermission.getPermission())); UsersWsResponse.Builder response = UsersWsResponse.newBuilder(); users.forEach(user -> { Permissions.User.Builder userResponse = response.addUsersBuilder() .setLogin(user.getLogin()) .addAllPermissions(permissionsByUserId.get(user.getId())); setNullable(user.getEmail(), userResponse::setEmail); setNullable(emptyToNull(user.getEmail()), u -> userResponse.setAvatar(avatarResolver.create(user))); setNullable(user.getName(), userResponse::setName); }); response.getPagingBuilder() .setPageIndex(paging.pageIndex()) .setPageSize(paging.pageSize()) .setTotal(paging.total()) .build(); return response.build(); }