use of org.olat.group.BusinessGroupRef in project OpenOLAT by OpenOLAT.
the class BusinessGroupRelationDAO method getMemberKeys.
public List<Long> getMemberKeys(List<? extends BusinessGroupRef> groups, String... roles) {
if (groups == null || groups.isEmpty())
return Collections.emptyList();
StringBuilder sb = new StringBuilder();
sb.append("select membership.identity.key from businessgroup as bgroup ").append(" inner join bgroup.baseGroup as baseGroup").append(" inner join baseGroup.members as membership").append(" where bgroup.key in (:businessGroupKeys) and membership.role in (:roles)");
List<String> roleList = GroupRoles.toList(roles);
List<Long> groupKeys = new ArrayList<>(groups.size());
for (BusinessGroupRef group : groups) {
groupKeys.add(group.getKey());
}
List<Long> members = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Long.class).setParameter("businessGroupKeys", groupKeys).setParameter("roles", roleList).getResultList();
return members;
}
use of org.olat.group.BusinessGroupRef in project OpenOLAT by OpenOLAT.
the class BusinessGroupRelationDAO method getDuplicateMemberships.
/**
* @param groups
* @return The list of identity key which have multiple memberships in the specified groups
*/
public List<IdentityRef> getDuplicateMemberships(List<? extends BusinessGroupRef> groups) {
if (groups == null || groups.isEmpty())
return Collections.emptyList();
StringBuilder sb = new StringBuilder();
sb.append("select count(membership.key ), membership.identity.key from businessgroup as bgroup ").append(" inner join bgroup.baseGroup as baseGroup").append(" inner join baseGroup.members as membership").append(" where bgroup.key in (:businessGroupKeys) and membership.role='participant'").append(" group by membership.identity.key");
List<Long> groupKeys = new ArrayList<>(groups.size());
for (BusinessGroupRef group : groups) {
groupKeys.add(group.getKey());
}
List<Object[]> groupBy = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class).setParameter("businessGroupKeys", groupKeys).getResultList();
List<IdentityRef> duplicates = new ArrayList<>();
for (Object[] id : groupBy) {
Number numOfMembership = (Number) id[0];
Long identityKey = (Long) id[1];
if (numOfMembership.longValue() > 1) {
duplicates.add(new IdentityRefImpl(identityKey));
}
}
return duplicates;
}
use of org.olat.group.BusinessGroupRef in project openolat by klemens.
the class GTAManagerImpl method getDuplicatedMemberships.
@Override
public List<IdentityRef> getDuplicatedMemberships(GTACourseNode cNode) {
List<IdentityRef> duplicates;
ModuleConfiguration config = cNode.getModuleConfiguration();
if (GTAType.group.name().equals(config.getStringValue(GTACourseNode.GTASK_TYPE))) {
List<Long> groupKeys = config.getList(GTACourseNode.GTASK_GROUPS, Long.class);
List<Long> areaKeys = config.getList(GTACourseNode.GTASK_AREAS, Long.class);
List<Long> consolidatedGroupKeys = new ArrayList<>();
if (groupKeys != null && groupKeys.size() > 0) {
consolidatedGroupKeys.addAll(groupKeys);
}
consolidatedGroupKeys.addAll(areaManager.findBusinessGroupKeysOfAreaKeys(areaKeys));
List<BusinessGroupRef> businessGroups = BusinessGroupRefImpl.toRefs(consolidatedGroupKeys);
duplicates = businessGroupRelationDao.getDuplicateMemberships(businessGroups);
} else {
duplicates = Collections.emptyList();
}
return duplicates;
}
use of org.olat.group.BusinessGroupRef in project openolat by klemens.
the class BusinessGroupMembershipProcessor method processIdentityRemoved.
private void processIdentityRemoved(Long groupKey, Long identityKey) {
IdentityRef identityRef = new IdentityRefImpl(identityKey);
BusinessGroupRef groupRef = new BusinessGroupRefImpl(groupKey);
if (!businessGroupRelationDao.hasAnyRole(identityRef, groupRef)) {
infoMessageManager.updateInfoMessagesOfIdentity(groupRef, identityRef);
notificationsManager.unsubscribeAllForIdentityAndResId(identityRef, groupRef.getKey());
List<BGRepositoryEntryRelation> relations = businessGroupRelationDao.findRelationToRepositoryEntries(Collections.singletonList(groupKey), 0, -1);
for (BGRepositoryEntryRelation relation : relations) {
Long repositoryEntryKey = relation.getRepositoryEntryKey();
RepositoryEntryRef entryRef = new RepositoryEntryRefImpl(repositoryEntryKey);
List<String> remaingRoles = repositoryEntryRelationDao.getRoles(identityRef, entryRef);
if (remaingRoles.isEmpty()) {
OLATResource resource = repositoryManager.lookupRepositoryEntryResource(entryRef.getKey());
notificationsManager.unsubscribeAllForIdentityAndResId(identityRef, resource.getResourceableId());
}
}
}
}
use of org.olat.group.BusinessGroupRef in project openolat by klemens.
the class BusinessGroupRelationDAO method getDuplicateMemberships.
/**
* @param groups
* @return The list of identity key which have multiple memberships in the specified groups
*/
public List<IdentityRef> getDuplicateMemberships(List<? extends BusinessGroupRef> groups) {
if (groups == null || groups.isEmpty())
return Collections.emptyList();
StringBuilder sb = new StringBuilder();
sb.append("select count(membership.key ), membership.identity.key from businessgroup as bgroup ").append(" inner join bgroup.baseGroup as baseGroup").append(" inner join baseGroup.members as membership").append(" where bgroup.key in (:businessGroupKeys) and membership.role='participant'").append(" group by membership.identity.key");
List<Long> groupKeys = new ArrayList<>(groups.size());
for (BusinessGroupRef group : groups) {
groupKeys.add(group.getKey());
}
List<Object[]> groupBy = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class).setParameter("businessGroupKeys", groupKeys).getResultList();
List<IdentityRef> duplicates = new ArrayList<>();
for (Object[] id : groupBy) {
Number numOfMembership = (Number) id[0];
Long identityKey = (Long) id[1];
if (numOfMembership.longValue() > 1) {
duplicates.add(new IdentityRefImpl(identityKey));
}
}
return duplicates;
}
Aggregations