*******************************************************************************/
package com.pentila.evalcomp.manager;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import com.pentila.evalcomp.dao.ICompetenceInstanceDAO;
import com.pentila.evalcomp.domain.definition.EvaluationDefinition;
import com.pentila.evalcomp.domain.definition.EvaluationObject;
import com.pentila.evalcomp.domain.definition.Level;
+import com.pentila.evalcomp.domain.definition.MethodEval;
import com.pentila.evalcomp.domain.definition.Property;
import com.pentila.evalcomp.domain.definition.Referentiel;
import com.pentila.evalcomp.domain.examen.ExamenInstance;
import com.pentila.evalcomp.domain.instance.CompetenceInstance;
+import com.pentila.evalcomp.domain.instance.EvaluationInstance;
import com.pentila.evalcomp.domain.instance.EvaluationSubjectInstance;
import com.pentila.evalcomp.domain.instance.ScenarioInstance;
import com.pentila.evalcomp.domain.transit.RessourceFile;
+import com.pentila.evalcomp.domain.transit.TCompetence;
import com.pentila.evalcomp.domain.transit.TCompositeDataMap;
+import com.pentila.evalcomp.domain.transit.TDomain;
import com.pentila.evalcomp.manager.interfacedef.IEntityBase;
import com.pentila.evalcomp.manager.interfacedef.IEvaluationSubjectInstanceBase;
import com.pentila.evalcomp.manager.interfacedef.IExamenBase;
sei.add(evaluationSubjectInstance.getExamenInstance());
examenManager.finishExamens(sei);
-
+
+ EvaluationInstance ei = evaluationSubjectInstance.getEvaluationInstance();
+
+
+
+ MethodEval me = ei.getEvaluationDefinition().getMethodEval();
+ if (me != null){
+ if (logger.isDebugEnabled()){
+ logger.debug("MethodEval is : " + me.getName());
+ }
+
+ List<Level> ll = new ArrayList<Level>(me.getLevels());
+
+ Collections.sort(ll, new Comparator<Level>(){
+
+ @Override
+ public int compare(Level l1, Level l2) {
+ return l1.getValue() - l2.getValue();
+ }
+
+ });
+
+
+ Set<CompetenceInstance> sci = new HashSet<CompetenceInstance>();
+
+ Set<EvaluationObject> sed = evaluationSubjectInstance.getEvaluationSubject().getEvaluationObjects();
+
+ Map<Long, EvaluationObject> mle = new HashMap<Long, EvaluationObject>();
+
+ for (EvaluationObject eo : sed){
+ mle.put(eo.getId(), eo);
+ }
+
+
+ User u = ei.getEvaluationDefinition().getOwner();
+
+
+
+ Set<TDomain> std = examenManager.getExamenInstanceScore(evaluationSubjectInstance.getExamenInstance().getId());
+
+ for (TDomain td : std){
+
+ for (Entry<Long, TCompetence> entry: td.getMapCompetences().entrySet()){
+
+ Long idCompetence = entry.getKey();
+ TCompetence tc = entry.getValue();
+
+
+ Float score = tc.getScore();
+
+ Competence c = (Competence) mle.get(idCompetence);
+
+ CompetenceInstance ci = new CompetenceInstance();
+
+ ci.setCompetence(c);
+ ci.setEvaluationSubjectInstance(evaluationSubjectInstance);
+ ci.setEvaluationInstance(ei);
+ ci.setEvaluateur(u);
+ ci.setLastModified(new Date());
+ ci.setState(CompetenceInstance.TRANSMITTED);
+ ci.setOwner(evaluationSubjectInstance.getExamenInstance().getOwner());
+ int size = me.getLevels().size() -1;
+
+
+
+ int index = (int) (score * size) + 1;
+
+
+
+ Level l = ll.get(index);
+
+ if (logger.isDebugEnabled()){
+
+ logger.debug("Size is " + size);
+
+ logger.debug("Index is : " + index);
+ logger.debug("selected Level " + l.getName() + " : " + l.getValue());
+ }
+
+ ci.setLevel(l);
+
+ sci.add(ci);
+
+ }
+
+ }
+
+ competenceInstanceDAO.saveOrUpdateAll(sci);
+
+ }
}