Skip to content
Snippets Groups Projects
Commit a54926bd authored by uhensler's avatar uhensler
Browse files

OO-4080: Respect good end of the rubric when calculation max and min score

parent bc567102
No related branches found
No related tags found
No related merge requests found
...@@ -145,54 +145,63 @@ public class MSServiceImpl implements MSService { ...@@ -145,54 +145,63 @@ public class MSServiceImpl implements MSService {
@Override @Override
public MinMax calculateMinMaxSum(RepositoryEntry formEntry, float scalingFactor) { public MinMax calculateMinMaxSum(RepositoryEntry formEntry, float scalingFactor) {
double sumMin = 0.0; float sumMin = 0.0f;
double sumMax = 0.0; float sumMax = 0.0f;
Form form = evaluationFormManager.loadForm(formEntry); Form form = evaluationFormManager.loadForm(formEntry);
for (AbstractElement element : form.getElements()) { for (AbstractElement element : form.getElements()) {
if (Rubric.TYPE.equals(element.getType())) { if (Rubric.TYPE.equals(element.getType())) {
Rubric rubric = (Rubric) element; Rubric rubric = (Rubric) element;
MinMax minMaxStep = calculateMinMaxStep(rubric);
int numberOfSliders = rubric.getSliders().size(); int numberOfSliders = rubric.getSliders().size();
int steps = rubric.getSteps(); sumMin += numberOfSliders * minMaxStep.getMin();
Integer weight = rubric.getWeight(); sumMax += numberOfSliders * minMaxStep.getMax();
double min = rubric.getScaleType().getStepValue(steps, 1, weight);
double max = rubric.getScaleType().getStepValue(steps, steps, weight);
sumMin += numberOfSliders * min;
sumMax += numberOfSliders * max;
} }
} }
sumMin = scalingFactor * sumMin; sumMin = scalingFactor * sumMin;
sumMax = scalingFactor * sumMax; sumMax = scalingFactor * sumMax;
return MinMax.of(Float.valueOf((float)sumMin), Float.valueOf((float)sumMax)); return MinMax.of(sumMin, sumMax);
} }
@Override @Override
public MinMax calculateMinMaxAvg(RepositoryEntry formEntry, float scalingFactor) { public MinMax calculateMinMaxAvg(RepositoryEntry formEntry, float scalingFactor) {
double sumMin = 0.0; float sumMin = 0.0f;
double sumMax = 0.0; float sumMax = 0.0f;
int numberAvgs = 0; int numberAvgs = 0;
Form form = evaluationFormManager.loadForm(formEntry); Form form = evaluationFormManager.loadForm(formEntry);
for (AbstractElement element : form.getElements()) { for (AbstractElement element : form.getElements()) {
if (Rubric.TYPE.equals(element.getType())) { if (Rubric.TYPE.equals(element.getType())) {
Rubric rubric = (Rubric) element; Rubric rubric = (Rubric) element;
MinMax minMaxStep = calculateMinMaxStep(rubric);
int numberOfSliders = rubric.getSliders().size(); int numberOfSliders = rubric.getSliders().size();
int steps = rubric.getSteps(); sumMin += numberOfSliders * minMaxStep.getMin();
Integer weight = rubric.getWeight(); sumMax += numberOfSliders * minMaxStep.getMax();
double min = rubric.getScaleType().getStepValue(steps, 1, weight);
double max = rubric.getScaleType().getStepValue(steps, steps, weight);
sumMin += numberOfSliders * min;
sumMax += numberOfSliders * max;
numberAvgs += numberOfSliders; numberAvgs += numberOfSliders;
} }
} }
if (numberAvgs > 0) { if (numberAvgs > 0) {
double avgMin = sumMin / numberAvgs; float avgMin = sumMin / numberAvgs;
avgMin = scalingFactor * avgMin; avgMin = scalingFactor * avgMin;
double avgMax = sumMax / numberAvgs; float avgMax = sumMax / numberAvgs;
avgMax = scalingFactor * avgMax; avgMax = scalingFactor * avgMax;
return MinMax.of(Float.valueOf((float)avgMin), Float.valueOf((float)avgMax)); return MinMax.of(avgMin, avgMax);
} }
return MinMax.of(0.0f, 0.0f); return MinMax.of(0.0f, 0.0f);
} }
private MinMax calculateMinMaxStep(Rubric rubric) {
int steps = rubric.getSteps();
Integer weight = rubric.getWeight();
double min;
double max;
if (rubric.isStartGoodRating()) {
min = rubric.getScaleType().getStepValue(steps, steps, weight);
max = rubric.getScaleType().getStepValue(steps, 1, weight);
} else {
min = rubric.getScaleType().getStepValue(steps, 1, weight);
max = rubric.getScaleType().getStepValue(steps, steps, weight);
}
return MinMax.of(Float.valueOf((float)min), Float.valueOf((float)max));
}
@Override @Override
public Float calculateScoreBySum(EvaluationFormSession session) { public Float calculateScoreBySum(EvaluationFormSession session) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment