From 6e9fd2913ca4b843353e5261dde7921d2eede568 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 4 Aug 2017 09:29:54 +0200 Subject: [PATCH] OO-2943: calculate a lower bound and upper bound if they are not available --- .../highscore/manager/HighScoreManager.java | 15 +++++- .../highscore/ui/HighScoreRunController.java | 2 +- .../highscore/HighScoreManagerTest.java | 47 ++++++------------- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java b/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java index 5e790b6963e..c88f89c156c 100644 --- a/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java +++ b/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java @@ -32,6 +32,7 @@ import org.olat.course.highscore.model.HighScoreRankingResults; import org.olat.course.highscore.ui.HighScoreTableEntry; import org.olat.modules.assessment.AssessmentEntry; import org.olat.user.UserManager; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -44,6 +45,9 @@ public class HighScoreManager { private static final OLog log = Tracing.createLoggerFor(HighScoreManager.class); + @Autowired + private UserManager userManager; + /** * Sort rank by score, then by id and last alphabetically, * determine rank of each member dependent on score, @@ -52,7 +56,7 @@ public class HighScoreManager { public HighScoreRankingResults sortRankByScore (List<AssessmentEntry> assessEntries, List<HighScoreTableEntry> allMembers, List<HighScoreTableEntry> ownIdMembers, List<List<HighScoreTableEntry>> allPodium, List<Integer> ownIdIndices, - int tableSize, Identity ownIdentity, UserManager userManager){ + int tableSize, Identity ownIdentity){ HighScoreTableEntry ownTableEntry = null; @@ -118,10 +122,17 @@ public class HighScoreManager { double min = Math.floor(Arrays.stream(scores).min().getAsDouble()); double range = max - min; // use original scores if range is too small else convert results to fit histogram - if (range <= 20) { + if (range <= 20 && range <0) { classwidth = 1; return new HighScoreRankingResults(scores, classwidth, min); } else { + if(lowerBorder == null) { + lowerBorder = 0f; + } + if(upperBorder == null) { + upperBorder = (float)max; + } + // decrease amount of possible classes to avoid overlapping of large numbers(condition) on x-axis boolean largeNumbers = range > 100d || max >= 1000d; int maxnumberofclasses = largeNumbers ? 12 : 20; diff --git a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java index 0838e0f6ea4..937d6717e3c 100644 --- a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java +++ b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java @@ -182,7 +182,7 @@ public class HighScoreRunController extends FormBasicController{ // compute ranking and order highscoreDataModel = highScoreManager.sortRankByScore(assessEntries, allMembers, ownIdMembers, - allPodium, ownIdIndices, tableSize, ownIdentity, userManager); + allPodium, ownIdIndices, tableSize, ownIdentity); allScores = highscoreDataModel.getScores(); diff --git a/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java b/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java index 3b1cd5164ba..7c82bb9d517 100644 --- a/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java +++ b/src/test/java/org/olat/course/highscore/HighScoreManagerTest.java @@ -24,6 +24,12 @@ * <p> */ package org.olat.course.highscore; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.math.BigDecimal; +import java.util.ArrayList; /** * Description:<br> * HighScoreManagerTest @@ -31,11 +37,6 @@ package org.olat.course.highscore; * @author fkiefer */ import java.util.List; - -import static org.junit.Assert.*; - -import java.math.BigDecimal; -import java.util.ArrayList; import java.util.UUID; import org.junit.Test; @@ -48,35 +49,19 @@ import org.olat.modules.assessment.manager.AssessmentEntryDAO; import org.olat.repository.RepositoryEntry; import org.olat.test.JunitTestHelper; import org.olat.test.OlatTestCase; -import org.olat.user.UserManager; import org.springframework.beans.factory.annotation.Autowired; public class HighScoreManagerTest extends OlatTestCase { - private List<HighScoreTableEntry> allMembers, ownIdMembers; - private List<List<HighScoreTableEntry>> allPodium; - private List<Integer> ownIdIndices; - - @Autowired - private HighScoreManager highScoreManager; - @Autowired - private UserManager userManager; @Autowired private DB dbInstance; @Autowired + private HighScoreManager highScoreManager; + @Autowired private AssessmentEntryDAO courseNodeAssessmentDao; - - @Test - public void springtest() { - assertNotNull(highScoreManager); - assertNotNull(userManager); - assertNotNull(dbInstance); - assertNotNull(courseNodeAssessmentDao); - } @Test public void highscoreTest() { - List<AssessmentEntry> assessEntries = new ArrayList<>(); int[] scores = {1,23,10}; Identity assessedIdentity = null; @@ -92,17 +77,17 @@ public class HighScoreManagerTest extends OlatTestCase { AssessmentEntry reloadedAssessment = courseNodeAssessmentDao.loadAssessmentEntryById(nodeAssessment.getKey()); assessEntries.add(reloadedAssessment); } - - ownIdIndices = new ArrayList<>(); - allMembers = new ArrayList<>(); - ownIdMembers = new ArrayList<>(); - allPodium = new ArrayList<>(); + + List<Integer> ownIdIndices = new ArrayList<>(); + List<HighScoreTableEntry> allMembers = new ArrayList<>(); + List<HighScoreTableEntry> ownIdMembers = new ArrayList<>(); + List<List<HighScoreTableEntry>> allPodium = new ArrayList<>(); allPodium.add(new ArrayList<>()); allPodium.add(new ArrayList<>()); allPodium.add(new ArrayList<>()); double[] allScores = highScoreManager.sortRankByScore(assessEntries, allMembers, ownIdMembers, allPodium, - ownIdIndices, 5, JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-2"), userManager) + ownIdIndices, 5, JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-2")) .getScores(); assertNotNull(allScores); @@ -115,7 +100,5 @@ public class HighScoreManagerTest extends OlatTestCase { long classwidth = highScoreManager.processHistogramData(allScores, 0F, 30F).getClasswidth(); assertEquals(2L, classwidth); - } - -} +} \ No newline at end of file -- GitLab