
com.opencredo.concourse.spring.demo.services.GroupService Maven / Gradle / Ivy
The newest version!
package com.opencredo.concourse.spring.demo.services;
import com.opencredo.concourse.domain.events.cataloguing.AggregateCatalogue;
import com.opencredo.concourse.domain.state.StateRepository;
import com.opencredo.concourse.spring.demo.repositories.GroupState;
import com.opencredo.concourse.spring.demo.repositories.UserState;
import com.opencredo.concourse.spring.demo.views.GroupView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
@Component
public class GroupService {
private final StateRepository groupStateRepository;
private final StateRepository userStateRepository;
private final AggregateCatalogue aggregateCatalogue;
@Autowired
public GroupService(StateRepository groupStateRepository, StateRepository userStateRepository, AggregateCatalogue aggregateCatalogue) {
this.groupStateRepository = groupStateRepository;
this.userStateRepository = userStateRepository;
this.aggregateCatalogue = aggregateCatalogue;
}
public Optional getGroup(UUID groupId) {
return groupStateRepository.getState(groupId)
.filter(s -> !s.isDeleted())
.map(group -> new GroupView(group.getId(), group.getName(), getUserNames(group.getUsers())));
}
private Map getUserNames(Collection userIds) {
return userStateRepository.getStates(userIds).entrySet().stream()
.filter(e -> !e.getValue().isDeleted())
.collect(Collectors.toMap(
Entry::getKey,
e -> e.getValue().getName()
));
}
public Map getGroups() {
List groups = aggregateCatalogue.getUuids("group");
return groupStateRepository.getStates(groups).entrySet().stream()
.filter(e -> !e.getValue().isDeleted())
.collect(
Collectors.toMap(
e -> e.getValue().getName(),
e -> "/api/v1/acl/groups/" + e.getKey())
);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy