use of org.olat.group.model.BGRepositoryEntryRelation in project openolat by klemens.
the class CourseOverviewController method updateModel.
private void updateModel() {
// course membership
List<RepositoryEntryMembership> memberships = repositoryManager.getRepositoryEntryMembership(null, editedIdentity);
// group membership
List<BusinessGroupMembership> groupMemberships = businessGroupService.getBusinessGroupMembership(Collections.<Long>emptyList(), editedIdentity);
Collection<Long> groupKeys = new ArrayList<Long>(groupMemberships.size());
for (BusinessGroupMembership membership : groupMemberships) {
groupKeys.add(membership.getGroupKey());
}
// relation to course
List<BGRepositoryEntryRelation> relations = businessGroupService.findRelationToRepositoryEntries(groupKeys, 0, -1);
Map<Long, List<Long>> groupKeyToRepoKeyMap = new HashMap<>();
for (BGRepositoryEntryRelation relation : relations) {
if (groupKeyToRepoKeyMap.containsKey(relation.getGroupKey())) {
groupKeyToRepoKeyMap.get(relation.getGroupKey()).add(relation.getRepositoryEntryKey());
} else {
List<Long> repoEntryKeys = new ArrayList<>(2);
repoEntryKeys.add(relation.getRepositoryEntryKey());
groupKeyToRepoKeyMap.put(relation.getGroupKey(), repoEntryKeys);
}
}
Map<Long, CourseMemberView> repoKeyToViewMap = new HashMap<Long, CourseMemberView>();
for (RepositoryEntryMembership membership : memberships) {
Long repoKey = membership.getRepoKey();
CourseMemberView memberView;
if (repoKeyToViewMap.containsKey(repoKey)) {
memberView = repoKeyToViewMap.get(repoKey);
} else {
memberView = new CourseMemberView(repoKey);
repoKeyToViewMap.put(repoKey, memberView);
}
memberView.setFirstTime(membership.getCreationDate());
if (memberView.getLastTime() == null || (memberView.getLastTime() != null && membership.getLastModified() != null && membership.getLastModified().after(memberView.getLastTime()))) {
memberView.setLastTime(membership.getLastModified());
}
// add the roles
if (!memberView.getMembership().isRepoOwner()) {
memberView.getMembership().setRepoOwner(membership.isOwner());
}
if (!memberView.getMembership().isRepoTutor()) {
memberView.getMembership().setRepoTutor(membership.isCoach());
}
if (!memberView.getMembership().isRepoParticipant()) {
memberView.getMembership().setRepoParticipant(membership.isParticipant());
}
}
List<BusinessGroupShort> groups = businessGroupService.loadShortBusinessGroups(groupKeys);
Map<Long, BusinessGroupShort> groupKeyToGroupMap = new HashMap<Long, BusinessGroupShort>();
for (BusinessGroupShort group : groups) {
groupKeyToGroupMap.put(group.getKey(), group);
}
for (BusinessGroupMembership membership : groupMemberships) {
List<Long> repoKeys;
if (groupKeyToRepoKeyMap.containsKey(membership.getGroupKey())) {
repoKeys = groupKeyToRepoKeyMap.get(membership.getGroupKey());
} else {
continue;
}
BusinessGroupShort group = groupKeyToGroupMap.get(membership.getGroupKey());
if (group == null) {
continue;
}
for (Long repoKey : repoKeys) {
CourseMemberView memberView;
if (repoKeyToViewMap.containsKey(repoKey)) {
memberView = repoKeyToViewMap.get(repoKey);
} else {
memberView = new CourseMemberView(repoKey);
repoKeyToViewMap.put(repoKey, memberView);
}
memberView.addGroup(group);
memberView.setFirstTime(membership.getCreationDate());
if (memberView.getLastTime() == null || (memberView.getLastTime() != null && membership.getLastModified() != null && membership.getLastModified().after(memberView.getLastTime()))) {
memberView.setLastTime(membership.getLastModified());
}
switch(membership.getMembership()) {
case owner:
memberView.getMembership().setGroupTutor(true);
break;
case participant:
memberView.getMembership().setGroupParticipant(true);
break;
case waiting:
memberView.getMembership().setGroupWaiting(true);
break;
}
}
}
List<RepositoryEntry> entries = repositoryManager.lookupRepositoryEntries(repoKeyToViewMap.keySet());
Map<Long, RepositoryEntry> entryKeyToRepoEntryMap = new HashMap<Long, RepositoryEntry>();
for (RepositoryEntry entry : entries) {
entryKeyToRepoEntryMap.put(entry.getKey(), entry);
}
for (CourseMemberView memberView : repoKeyToViewMap.values()) {
RepositoryEntry entry = entryKeyToRepoEntryMap.get(memberView.getRepoKey());
if (entry != null) {
memberView.setEntry(entry);
boolean managedMembersRepo = RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.membersmanagement);
memberView.getMembership().setManagedMembersRepo(managedMembersRepo);
}
}
List<CourseMemberView> views = new ArrayList<CourseMemberView>(repoKeyToViewMap.values());
tableDataModel.setObjects(views);
courseListCtr.modelChanged();
}
use of org.olat.group.model.BGRepositoryEntryRelation in project openolat by klemens.
the class GroupSearchController method doSearchGroups.
/**
* Perform a search for the given search value in the search result providers
* and clear any GUI errors that might be on the page
*
* @param searchValue
* @param ureq
*/
private void doSearchGroups(String searchValue) {
if (StringHelper.containsNonWhitespace(searchValue)) {
SearchBusinessGroupParams param1s = new SearchBusinessGroupParams();
param1s.setNameOrDesc(searchValue);
Set<BusinessGroup> dedupGroups = new HashSet<>();
List<BusinessGroup> group1s = businessGroupService.findBusinessGroups(param1s, null, 0, -1);
filterGroups(group1s, dedupGroups);
SearchBusinessGroupParams param2s = new SearchBusinessGroupParams();
param2s.setCourseTitle(searchValue);
List<BusinessGroup> group2s = businessGroupService.findBusinessGroups(param2s, null, 0, -1);
filterGroups(group2s, dedupGroups);
List<BusinessGroup> groups = new ArrayList<BusinessGroup>(group1s.size() + group2s.size());
groups.addAll(group1s);
groups.addAll(group2s);
List<Long> groupKeysWithRelations = PersistenceHelper.toKeys(groups);
List<BGRepositoryEntryRelation> resources = businessGroupService.findRelationToRepositoryEntries(groupKeysWithRelations, 0, -1);
List<GroupWrapper> groupWrappers = new ArrayList<GroupWrapper>();
for (BusinessGroup group : groups) {
StringBuilder sb = new StringBuilder();
for (BGRepositoryEntryRelation resource : resources) {
if (resource.getGroupKey().equals(group.getKey())) {
if (sb.length() > 0)
sb.append(", ");
sb.append(resource.getRepositoryEntryDisplayName());
}
}
GroupWrapper wrapper = new GroupWrapper(group, sb.toString());
wrapper.setTutor(createSelection("tutor_" + group.getKey()));
wrapper.setParticipant(createSelection("participant_" + group.getKey()));
groupWrappers.add(wrapper);
}
table.reset();
tableDataModel.setObjects(groupWrappers);
errorComp.clearError();
}
}
use of org.olat.group.model.BGRepositoryEntryRelation in project OpenOLAT by OpenOLAT.
the class CourseOverviewController method updateModel.
private void updateModel() {
// course membership
List<RepositoryEntryMembership> memberships = repositoryManager.getRepositoryEntryMembership(null, editedIdentity);
// group membership
List<BusinessGroupMembership> groupMemberships = businessGroupService.getBusinessGroupMembership(Collections.<Long>emptyList(), editedIdentity);
Collection<Long> groupKeys = new ArrayList<Long>(groupMemberships.size());
for (BusinessGroupMembership membership : groupMemberships) {
groupKeys.add(membership.getGroupKey());
}
// relation to course
List<BGRepositoryEntryRelation> relations = businessGroupService.findRelationToRepositoryEntries(groupKeys, 0, -1);
Map<Long, List<Long>> groupKeyToRepoKeyMap = new HashMap<>();
for (BGRepositoryEntryRelation relation : relations) {
if (groupKeyToRepoKeyMap.containsKey(relation.getGroupKey())) {
groupKeyToRepoKeyMap.get(relation.getGroupKey()).add(relation.getRepositoryEntryKey());
} else {
List<Long> repoEntryKeys = new ArrayList<>(2);
repoEntryKeys.add(relation.getRepositoryEntryKey());
groupKeyToRepoKeyMap.put(relation.getGroupKey(), repoEntryKeys);
}
}
Map<Long, CourseMemberView> repoKeyToViewMap = new HashMap<Long, CourseMemberView>();
for (RepositoryEntryMembership membership : memberships) {
Long repoKey = membership.getRepoKey();
CourseMemberView memberView;
if (repoKeyToViewMap.containsKey(repoKey)) {
memberView = repoKeyToViewMap.get(repoKey);
} else {
memberView = new CourseMemberView(repoKey);
repoKeyToViewMap.put(repoKey, memberView);
}
memberView.setFirstTime(membership.getCreationDate());
if (memberView.getLastTime() == null || (memberView.getLastTime() != null && membership.getLastModified() != null && membership.getLastModified().after(memberView.getLastTime()))) {
memberView.setLastTime(membership.getLastModified());
}
// add the roles
if (!memberView.getMembership().isRepoOwner()) {
memberView.getMembership().setRepoOwner(membership.isOwner());
}
if (!memberView.getMembership().isRepoTutor()) {
memberView.getMembership().setRepoTutor(membership.isCoach());
}
if (!memberView.getMembership().isRepoParticipant()) {
memberView.getMembership().setRepoParticipant(membership.isParticipant());
}
}
List<BusinessGroupShort> groups = businessGroupService.loadShortBusinessGroups(groupKeys);
Map<Long, BusinessGroupShort> groupKeyToGroupMap = new HashMap<Long, BusinessGroupShort>();
for (BusinessGroupShort group : groups) {
groupKeyToGroupMap.put(group.getKey(), group);
}
for (BusinessGroupMembership membership : groupMemberships) {
List<Long> repoKeys;
if (groupKeyToRepoKeyMap.containsKey(membership.getGroupKey())) {
repoKeys = groupKeyToRepoKeyMap.get(membership.getGroupKey());
} else {
continue;
}
BusinessGroupShort group = groupKeyToGroupMap.get(membership.getGroupKey());
if (group == null) {
continue;
}
for (Long repoKey : repoKeys) {
CourseMemberView memberView;
if (repoKeyToViewMap.containsKey(repoKey)) {
memberView = repoKeyToViewMap.get(repoKey);
} else {
memberView = new CourseMemberView(repoKey);
repoKeyToViewMap.put(repoKey, memberView);
}
memberView.addGroup(group);
memberView.setFirstTime(membership.getCreationDate());
if (memberView.getLastTime() == null || (memberView.getLastTime() != null && membership.getLastModified() != null && membership.getLastModified().after(memberView.getLastTime()))) {
memberView.setLastTime(membership.getLastModified());
}
switch(membership.getMembership()) {
case owner:
memberView.getMembership().setGroupTutor(true);
break;
case participant:
memberView.getMembership().setGroupParticipant(true);
break;
case waiting:
memberView.getMembership().setGroupWaiting(true);
break;
}
}
}
List<RepositoryEntry> entries = repositoryManager.lookupRepositoryEntries(repoKeyToViewMap.keySet());
Map<Long, RepositoryEntry> entryKeyToRepoEntryMap = new HashMap<Long, RepositoryEntry>();
for (RepositoryEntry entry : entries) {
entryKeyToRepoEntryMap.put(entry.getKey(), entry);
}
for (CourseMemberView memberView : repoKeyToViewMap.values()) {
RepositoryEntry entry = entryKeyToRepoEntryMap.get(memberView.getRepoKey());
if (entry != null) {
memberView.setEntry(entry);
boolean managedMembersRepo = RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.membersmanagement);
memberView.getMembership().setManagedMembersRepo(managedMembersRepo);
}
}
List<CourseMemberView> views = new ArrayList<CourseMemberView>(repoKeyToViewMap.values());
tableDataModel.setObjects(views);
courseListCtr.modelChanged();
}
use of org.olat.group.model.BGRepositoryEntryRelation 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.model.BGRepositoryEntryRelation in project OpenOLAT by OpenOLAT.
the class BusinessGroupRelationDAOTest method findRelationToRepositoryEntries.
@Test
public void findRelationToRepositoryEntries() {
// create 3 entries and 1 group
RepositoryEntry re1 = JunitTestHelper.createAndPersistRepositoryEntry();
RepositoryEntry re2 = JunitTestHelper.createAndPersistRepositoryEntry();
RepositoryEntry re3 = JunitTestHelper.createAndPersistRepositoryEntry();
BusinessGroup group = businessGroupDao.createAndPersist(null, "rel-repo", "rel-repo-desc", 0, 10, true, false, false, false, false);
dbInstance.commitAndCloseSession();
businessGroupRelationDao.addRelationToResource(group, re1);
businessGroupRelationDao.addRelationToResource(group, re2);
businessGroupRelationDao.addRelationToResource(group, re3);
dbInstance.commitAndCloseSession();
// check with empty list of groups
List<BGRepositoryEntryRelation> emptyRelations = businessGroupRelationDao.findRelationToRepositoryEntries(Collections.<Long>emptyList(), 0, -1);
Assert.assertNotNull(emptyRelations);
Assert.assertEquals(0, emptyRelations.size());
// check with the group
List<BGRepositoryEntryRelation> relations = businessGroupRelationDao.findRelationToRepositoryEntries(Collections.singletonList(group.getKey()), 0, -1);
Assert.assertNotNull(relations);
Assert.assertEquals(3, relations.size());
int count = 0;
for (BGRepositoryEntryRelation relation : relations) {
if (relation.getRepositoryEntryKey().equals(re1.getKey()) || relation.getRepositoryEntryKey().equals(re2.getKey()) || relation.getRepositoryEntryKey().equals(re3.getKey())) {
count++;
}
}
Assert.assertEquals(3, count);
}
Aggregations