package com.huixinpn.dionysus.domain.psychtest.eval;
import java.util.HashMap;
import java.util.Map;
import com.huixinpn.dionysus.domain.psychtest.PsychTestQuestion;
import com.huixinpn.dionysus.domain.psychtest.PsychTestQuestionOption;
import com.huixinpn.dionysus.domain.psychtest.PsychTestResult;
public class STSEvaluationStrategy implements PsychTestEvaluationStrategy {
class STSVisitor extends PsychTestValueVisitorAdaptor {
private int score = 0;
@Override
public void accept(PsychTestQuestion question, PsychTestQuestionOption option) {
String identity = option.getIdentity();
int value;
switch(identity){
case "A":
value = 1;
break;
case "B":
value = 2;
break;
case "C":
value = 3;
break;
case "D":
value = 4;
break;
default:
value = 0;
break;
}
this.score += value;
}
public Object getScore() {
Map<String, Integer> result = new HashMap<>();
result.put("score", this.score);
return result;
}
}
@Override
public Object evaluate(PsychTestResult result) {
STSVisitor visitor = new STSVisitor();
result.accept(visitor);
return visitor.getScore();
}
}