From 915e5dccb2721c204e0b36ea7dd0ad7ea1f7f59c Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Tue, 9 Feb 2021 17:51:54 +0100
Subject: [PATCH] OO-5272: show the primary key in the table

---
 ...encyStatementCurriculumListController.java | 53 ++++---------------
 ...dEfficiencyStatementWrapperController.java |  8 ++-
 .../CurriculumElementWithViewsDataModel.java  |  6 ++-
 .../CurriculumTreeWithViewsRow.java           | 16 ++++++
 4 files changed, 32 insertions(+), 51 deletions(-)

diff --git a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementCurriculumListController.java b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementCurriculumListController.java
index 47dd35c9794..e80ad860461 100644
--- a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementCurriculumListController.java
+++ b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementCurriculumListController.java
@@ -193,7 +193,7 @@ public class CertificateAndEfficiencyStatementCurriculumListController extends F
 
     @Override
     public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
-
+    	//
     }
 
     @Override
@@ -211,9 +211,6 @@ public class CertificateAndEfficiencyStatementCurriculumListController extends F
         elementIdentifierCol.setCellRenderer(new CurriculumElementCompositeRenderer("select", new TextFlexiCellRenderer()));
         columnsModel.addFlexiColumnModel(elementIdentifierCol);
 
-        // Name column
-        // columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, ElementViewCols.select));
-
         if (roleSecurityCallback.canViewCourseProgressAndStatus()) {
             columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.passed));
             columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ElementViewCols.completion));
@@ -476,14 +473,6 @@ public class CertificateAndEfficiencyStatementCurriculumListController extends F
         params.setMembershipMandatory(true);
         List<RepositoryEntryMyView> courses = repositoryService.searchMyView(params, 0, 0);
 
-//        // Filter for entries which have a efficiency statement
-//        Set<Long> alreadyAdded = new HashSet<>();
-//        for (CurriculumTreeWithViewsRow row : allRows) {
-//            for (RepositoryEntryMyView entry : row.getEntries()) {
-//                alreadyAdded.add(entry.getOlatResource().getKey());
-//            }
-//        }
-
         courses.removeIf(course -> alreadyAdded.contains(course.getOlatResource().getKey()));
 
         // Filter for entries which are without curriculum
@@ -653,13 +642,14 @@ public class CertificateAndEfficiencyStatementCurriculumListController extends F
     }
 
     private void forgeCurriculumCompletions(List<CurriculumTreeWithViewsRow> rows) {
-        Map<Long, Double> completions = loadCurriculumElementCompletions(rows);
-
-        for (CurriculumTreeWithViewsRow row : rows) {
-            if (row.getCompletionItem() == null) { // does not show completion of the child entry
-                forgeCompletion(row, completions.get(row.getKey()));
-            }
-        }
+    	Map<Long, Double> completions = loadCurriculumElementCompletions(rows);
+    	if(!completions.isEmpty()) {
+    		for (CurriculumTreeWithViewsRow row : rows) {
+    			if (row.getCompletionItem() == null && row.getCurriculumElementKey() != null) { // does not show completion of the child entry
+    				forgeCompletion(row, completions.get(row.getCurriculumElementKey()));
+    			}
+    		}
+    	}
     }
 
     private void forgeCompletion(CurriculumTreeWithViewsRow row, Double completion) {
@@ -873,29 +863,4 @@ public class CertificateAndEfficiencyStatementCurriculumListController extends F
             return true;
         }
     }
-
-    private List<CurriculumTreeWithViewsRow> sortCurriculumRows(List<CurriculumTreeWithViewsRow> rows) {
-        List<CurriculumTreeWithViewsRow> sortedRows = rows.stream().filter(row -> row.   getLevel() == 0).collect(Collectors.toList());
-
-        for (CurriculumTreeWithViewsRow parent : sortedRows) {
-            if (parent.hasChildren()) {
-                sortedRows.addAll(sortedRows.indexOf(parent) + 1, sortCurriculumRows(rows, parent));
-            }
-        }
-
-        return sortedRows;
-    }
-
-    private List<CurriculumTreeWithViewsRow> sortCurriculumRows(List<CurriculumTreeWithViewsRow> rows, CurriculumTreeWithViewsRow parent) {
-        List<CurriculumTreeWithViewsRow> filteredRows = rows.stream().filter(row -> row.getParent() != null && row.getParent().equals(parent)).collect(Collectors.toList());
-        List<CurriculumTreeWithViewsRow> sortedRows = new ArrayList<>(filteredRows);
-
-        for (CurriculumTreeWithViewsRow child : filteredRows) {
-            if (child.hasChildren()) {
-                sortedRows.addAll(filteredRows.indexOf(child) + 1, sortCurriculumRows(rows, parent));
-            }
-        }
-
-        return filteredRows;
-    }
 }
diff --git a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementWrapperController.java b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementWrapperController.java
index 44cffc8ccaf..6098ae2330d 100644
--- a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementWrapperController.java
+++ b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CertificateAndEfficiencyStatementWrapperController.java
@@ -51,10 +51,8 @@ public class CertificateAndEfficiencyStatementWrapperController extends BasicCon
 
     private final TooledStackedPanel stackPanel;
     private final Identity mentee;
-    private final StudentStatEntry statEntry;
     private final CurriculumSecurityCallback curriculumSecurityCallback;
     private final RoleSecurityCallback roleSecurityCallback;
-    private final List<CurriculumRef> curriculumRefs;
 
     private CertificateAndEfficiencyStatementCurriculumListController certificateCurriculumListController;
     private CertificateAndEfficiencyStatementListController certificateListController;
@@ -69,15 +67,15 @@ public class CertificateAndEfficiencyStatementWrapperController extends BasicCon
     @Autowired
     CurriculumModule curriculumModule;
 
-    public CertificateAndEfficiencyStatementWrapperController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, Identity mentee, CurriculumSecurityCallback curriculumSecurityCallback, RoleSecurityCallback roleSecurityCallback, List<CurriculumRef> curriculumRefs, StudentStatEntry statEntry) {
+    public CertificateAndEfficiencyStatementWrapperController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, Identity mentee,
+    		CurriculumSecurityCallback curriculumSecurityCallback, RoleSecurityCallback roleSecurityCallback,
+    		List<CurriculumRef> curriculumRefs, StudentStatEntry statEntry) {
         super(ureq, wControl);
 
         this.stackPanel = stackPanel;
         this.mentee = mentee;
         this.curriculumSecurityCallback = curriculumSecurityCallback;
         this.roleSecurityCallback = roleSecurityCallback;
-        this.curriculumRefs = curriculumRefs;
-        this.statEntry = statEntry;
 
         content = createVelocityContainer("certificate_list_wrapper");
         showCurriculum = curriculumModule.isEnabled() && roleSecurityCallback.canViewCoursesAndCurriculum();
diff --git a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumElementWithViewsDataModel.java b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumElementWithViewsDataModel.java
index 139c90cab92..05c33650c53 100644
--- a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumElementWithViewsDataModel.java
+++ b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumElementWithViewsDataModel.java
@@ -45,6 +45,8 @@ import org.olat.modules.lecture.model.LectureBlockStatistics;
  */
 public class CurriculumElementWithViewsDataModel extends DefaultFlexiTreeTableDataModel<CurriculumTreeWithViewsRow> implements FlexiBusinessPathModel {
 
+	private static final ElementViewCols[] COLS = ElementViewCols.values();
+	
 	private ConcurrentMap<IdentityResourceKey, CertificateLight> certificateMap;
 	private ConcurrentMap<IdentityRepositoryEntryKey, LectureBlockStatistics> lecturesStatisticsMap;
 
@@ -106,8 +108,8 @@ public class CurriculumElementWithViewsDataModel extends DefaultFlexiTreeTableDa
 	@Override
 	public Object getValueAt(int row, int col) {
 		CurriculumTreeWithViewsRow curriculum = getObject(row);
-		switch(ElementViewCols.values()[col]) {
-			case key: return curriculum.getKey();
+		switch(COLS[col]) {
+			case key: return curriculum.getId();
 			case displayName:
 				return curriculum.getDisplayName();
 			case hasStatement:
diff --git a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumTreeWithViewsRow.java b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumTreeWithViewsRow.java
index 6392755d530..92480a3e012 100644
--- a/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumTreeWithViewsRow.java
+++ b/src/main/java/org/olat/modules/coach/ui/curriculum/certificate/CurriculumTreeWithViewsRow.java
@@ -279,6 +279,22 @@ public class CurriculumTreeWithViewsRow implements CurriculumTreeWithView, Flexi
 		}
 	}
 	
+	public Long getId() {
+		if ((repositoryEntry == null || singleEntry) && element != null) {
+			return element.getKey();
+		}
+		if (isCurriculum()) {
+			return curriculum.getKey();
+		}
+		if (repositoryEntry != null) {
+			return repositoryEntry.getKey();
+		}
+		if (element != null) {
+			return element.getKey();
+		}
+		return null;
+	}
+	
 	public String getCurriculumElementExternalId() {
 		return element == null ? null : element.getExternalId();
 	}
-- 
GitLab