Я новичок в 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 для снятия ограничений.
- includeUserIds - если groupIds содержит gId для пользователя, затем удалите gId из groupIds конкретного пользователя
- 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);
}
}
Я провел два дня, но, похоже, мне не повезло. Очевидно я что-то упустил или неправильную реализацию. Пожалуйста, помогите мне. Заранее спасибо.