From d1f677441d3d6ecba699dff26a70bbf331f1dd4a Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 21 Jul 2014 13:58:02 +0200
Subject: [PATCH] OO-1139: fix some sorting issues in group and authoring tool

---
 .../ui/main/BusinessGroupFlexiTableModelSort.java | 15 +++++++++++----
 .../main/BusinessGroupMembershipComparator.java   | 10 ++++++++++
 .../repository/_i18n/LocalStrings_de.properties   |  1 +
 .../repository/_i18n/LocalStrings_en.properties   |  1 +
 .../repository/_i18n/LocalStrings_fr.properties   |  1 +
 .../manager/RepositoryEntryAuthorQueries.java     |  9 ++++++++-
 .../SearchAuthorRepositoryEntryViewParams.java    |  1 +
 .../ui/author/AuthorListController.java           |  2 +-
 .../ui/author/AuthoringEntryDataModel.java        |  2 +-
 .../author/AuthoringEntryDetailsController.java   |  3 ---
 10 files changed, 35 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/olat/group/ui/main/BusinessGroupFlexiTableModelSort.java b/src/main/java/org/olat/group/ui/main/BusinessGroupFlexiTableModelSort.java
index c2c7d24c45d..64073a770d2 100644
--- a/src/main/java/org/olat/group/ui/main/BusinessGroupFlexiTableModelSort.java
+++ b/src/main/java/org/olat/group/ui/main/BusinessGroupFlexiTableModelSort.java
@@ -50,6 +50,7 @@ public class BusinessGroupFlexiTableModelSort extends SortableFlexiTableModelDel
 		int columnIndex = getColumnIndex();
 		Cols column = Cols.values()[columnIndex];
 		switch(column) {
+			case name: Collections.sort(rows, new BusinessGroupNameComparator()); break;
 			case mark: Collections.sort(rows, new MarkComparator()); break;
 			case resources: Collections.sort(rows, new ResourcesComparator()); break;
 			case role: Collections.sort(rows, new RoleComparator()); break;
@@ -59,6 +60,14 @@ public class BusinessGroupFlexiTableModelSort extends SortableFlexiTableModelDel
 		}
 	}
 	
+	private class BusinessGroupNameComparator implements Comparator<BGTableItem> {
+
+		@Override
+		public int compare(BGTableItem t1, BGTableItem t2) {
+			return compareString(t1.getBusinessGroupName(), t2.getBusinessGroupName());
+		}
+	}
+	
 	private class MarkComparator implements Comparator<BGTableItem> {
 		
 		@Override
@@ -80,16 +89,14 @@ public class BusinessGroupFlexiTableModelSort extends SortableFlexiTableModelDel
 		@Override
 		public int compare(BGTableItem t1, BGTableItem t2) {
 			List<RepositoryEntryShort> r1 = t1.getRelations();
-			List<RepositoryEntryShort> r2 = t1.getRelations();
+			List<RepositoryEntryShort> r2 = t2.getRelations();
 				
 			if(r1 != null && r1.size() > 0) {
 				if(r2 != null && r2.size() > 0) {
 					return compareTo(r1, r2);
 				}
 				return 1;
-			}
-			
-			if(r2 != null && r2.size() > 0) {
+			} else if(r2 != null && r2.size() > 0) {
 				return -1;
 			}
 			return compareString(t1.getBusinessGroupName(), t2.getBusinessGroupName());
diff --git a/src/main/java/org/olat/group/ui/main/BusinessGroupMembershipComparator.java b/src/main/java/org/olat/group/ui/main/BusinessGroupMembershipComparator.java
index 9d401a5fa06..438f366f705 100644
--- a/src/main/java/org/olat/group/ui/main/BusinessGroupMembershipComparator.java
+++ b/src/main/java/org/olat/group/ui/main/BusinessGroupMembershipComparator.java
@@ -32,6 +32,16 @@ public class BusinessGroupMembershipComparator implements Comparator<BusinessGro
 
 	@Override
 	public int compare(BusinessGroupMembership m1, BusinessGroupMembership m2) {
+		if(m1 == null) {
+			if(m2 == null) {
+				return 0;
+			} else {
+				return -1;
+			}
+		} else if(m2 == null) {
+			return 1;
+		}
+		
 		if(m1.isOwner()) {
 			if(m2.isOwner()) {
 				return 0;
diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties
index 37899a960cd..ed475e7fb18 100644
--- a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties
@@ -529,6 +529,7 @@ table.header.access.membersonly=<span class\="o_blue">Nur Mitglieder</span>
 table.header.access.owner=<span class\="o_ochre">B---</span>
 table.header.access.user=<span class\="o_blue">BAR-</span>
 table.header.author=Urheber
+table.header.authors=Autoren
 table.header.date=Erstellt
 table.header.description=Beschreibung
 table.header.details=Detailansicht
diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties
index 2afd393bf42..ac4608e150b 100644
--- a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties
@@ -489,6 +489,7 @@ table.header.access.membersonly=<span class\="o_blue">Members only</span>
 table.header.access.owner=<span class\="o_ochre">O---</span>
 table.header.access.user=<span class\="o_blue">OAU-</span>
 table.header.author=Author
+table.header.authors=Authors
 table.header.date=Created
 table.header.description=Description
 table.header.details=Detailed view
diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties
index a8bd1fd4671..991c273010f 100644
--- a/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties
@@ -455,6 +455,7 @@ table.header.access.membersonly=<span class\="o_blue">Membres uniquement</span>
 table.header.access.owner=<span class\="o_ochre">P---</span>
 table.header.access.user=<span class\="o_blue">PAU-</span>
 table.header.author=Cr\u00E9ateur
+table.header.authors=Auteurs
 table.header.date=Cr\u00E9\u00E9e
 table.header.description=Description
 table.header.details=Vue d\u00E9taill\u00E9e
diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
index 5633a7af6cf..ca09f5b399d 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
@@ -269,6 +269,13 @@ public class RepositoryEntryAuthorQueries {
 					sb.append(" order by lower(v.initialAuthor)");
 					appendAsc(sb, asc).append(", lower(v.displayname) asc");	
 					break;
+				case access:
+					if(asc) {
+						sb.append(" order by v.access asc, lower(v.displayname) asc");
+					} else {
+						sb.append(" order by v.access desc, lower(v.displayname) desc");
+					}
+					break;
 				case ac:
 					if(asc) {
 						sb.append(" order by offers asc, lower(v.displayname) asc");
@@ -281,7 +288,7 @@ public class RepositoryEntryAuthorQueries {
 					appendAsc(sb, asc).append(", lower(v.displayname) asc");
 					break;
 				case lastUsage:
-					sb.append(" order by v.stats.lastUsage ");
+					sb.append(" order by v.statistics.lastUsage ");
 					appendAsc(sb, asc).append(", lower(v.displayname) asc");
 					break;
 				case lifecycleLabel:
diff --git a/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java b/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java
index 2c863a28487..eed878e7378 100644
--- a/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java
+++ b/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java
@@ -163,6 +163,7 @@ public class SearchAuthorRepositoryEntryViewParams {
 		displayname,
 		authors,
 		author,
+		access,
 		ac,
 		creationDate,
 		lastUsage,
diff --git a/src/main/java/org/olat/repository/ui/author/AuthorListController.java b/src/main/java/org/olat/repository/ui/author/AuthorListController.java
index 7c11383245b..5bb70d617d9 100644
--- a/src/main/java/org/olat/repository/ui/author/AuthorListController.java
+++ b/src/main/java/org/olat/repository/ui/author/AuthorListController.java
@@ -212,7 +212,7 @@ public class AuthorListController extends FormBasicController implements Activat
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, Cols.author.i18nKey(), Cols.author.ordinal(),
 				true, OrderBy.author.name()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, Cols.access.i18nKey(), Cols.access.ordinal(),
-				true, OrderBy.ac.name(), FlexiColumnModel.ALIGNMENT_LEFT, new AccessRenderer()));
+				true, OrderBy.access.name(), FlexiColumnModel.ALIGNMENT_LEFT, new AccessRenderer()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, Cols.ac.i18nKey(), Cols.ac.ordinal(),
 				true, OrderBy.ac.name(), FlexiColumnModel.ALIGNMENT_LEFT, new ACRenderer()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.creationDate.i18nKey(), Cols.creationDate.ordinal(),
diff --git a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java
index 1193684ecd5..0f8fc7490ca 100644
--- a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java
+++ b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataModel.java
@@ -90,7 +90,7 @@ class AuthoringEntryDataModel extends DefaultFlexiTableDataSourceModel<Authoring
 		externalRef("table.header.externalref"),
 		displayName("cif.displayname"),
 		author("table.header.author"),
-		authors("table.header.author"),
+		authors("table.header.authors"),
 		access("table.header.access"),
 		creationDate("table.header.date"),
 		lastUsage("table.header.lastusage"),
diff --git a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java
index d442e0d848f..c10bd3ae501 100644
--- a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java
+++ b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java
@@ -88,7 +88,6 @@ import org.olat.resource.accesscontrol.model.OfferAccess;
 import org.olat.resource.accesscontrol.model.Price;
 import org.olat.resource.accesscontrol.ui.OrdersAdminController;
 import org.olat.resource.accesscontrol.ui.PriceFormat;
-import org.olat.user.UserManager;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
@@ -121,8 +120,6 @@ public class AuthoringEntryDetailsController extends RepositoryEntryDetailsContr
 	
 	private boolean corrupted;
 
-	@Autowired
-	private UserManager userManager;
 	@Autowired
 	private RepositoryManager repositoryManager;
 	@Autowired
-- 
GitLab