Включить и исключить объекты после фильтрации в java 8 - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в java 8 и очень стараюсь получить больше знаний. Я разрабатываю ограничение пользователя для конкретной катушки при весенней загрузке.

@Data
class Reel{
    // somefields
    private List<IIdLGroup> excludeList;
}

@Data
class IIdLGroup{
    private Integer _id;
    private List<ObjectId> groupIds;
}

Сформируйте интерфейс, я получаю два массива, которые: excludeUserIds и includeUserIds .

@Data
class Restrinctions{
    private ObjectId reelId;
    private ObjectId gId;
    List<Integer> includeUserIds;
    List<Integer> excludeUserIds;
}

excludeUserIds для ограничения пользователей и includeUserIds для снятия ограничений.

  1. includeUserIds - если groupIds содержит gId для пользователя, затем удалите gId из groupIds конкретного пользователя
  2. excludeUserIds - Если в excludeList нет userId, создайте userId и добавьте gId к groupIds, если в excludeList есть userId , добавьте gId только в groupIds;

Вот мой код

public void includeExcludeUserInReel(Restrinctions users) {

    Optional<Reel> reel = findById(users.getReelId());

    if(reel.isPresent() && users.gId !=null){

        // Getting all Ids and groups for the particular reel
        List<IIdLGroup> excludeList = reel.get().getExcludeList();

        // remove the groupId
        users.getIncludeUserIds().stream().forEach(f->excludeList.stream().filter(e->e.get_id()==f).forEach(
                r->{
                    if (r.getGroupIds().contains(users.getGId())) {
                        r.getGroupIds().remove(users.getGId());
                    }
                }
        ));

        // add userId & groupId OR add groupId if user already exists
        users.getExcludeUserIds().stream().forEach(f -> 
            excludeList.stream().filter(e -> e.get_id() == f)
            .map(m -> {
                if (m == null) {
                    m.set_id(f);
                    m.setGroupIds(Arrays.asList(users.getGId()));               
                } else {
                    if (!m.getGroupIds().contains(users.getGId())) {
                        m.getGroupIds().add(users.getGId());

                    }
                }
                return m;
            }));

        reel.setExcludeList(excludeList);
        save(reel);
    }
}

Я провел два дня, но, похоже, мне не повезло. Очевидно я что-то упустил или неправильную реализацию. Пожалуйста, помогите мне. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...