--- /dev/null
+package com.pentila.emawsconnector.manager;
+
+import java.util.Date;
+import java.util.Set;
+
+import com.pentila.emawsconnector.dao.EvaluationDefinitionDAO;
+import com.pentila.evalcomp.domain.Entity;
+import com.pentila.evalcomp.domain.definition.EvaluationDefinition;
+import com.pentila.evalcomp.domain.examen.Examen;
+import com.pentila.evalcomp.domain.examen.ExamenDef;
+import com.pentila.evalcomp.domain.plan.Plan;
+import com.pentila.evalcomp.service.ws.WsErrors;
+
+public class EvaluationDefinitionManager {
+
+ EvaluationDefinitionDAO edDAO = new EvaluationDefinitionDAO();
+
+ /**
+ * Créer une nouvelle campagne d'évaluation. Après cet appel,
+ * la campagne ne sera pas instantié. Il faut lui ajouter un plan,
+ * un scénario d'évaluation, des candidats, des examens, etc. Et
+ * ensuite la lancer.
+ * @param dateStart Date de début de la campagne. Avant cette date, les candidats ne recevrons pas de tâche à effectuer
+ * @param dateEnd Date de fin de la campagne
+ * @param creator Créateur de la campagne
+ * @param name Nom de la campagne
+ * @param description description de la campagne
+ * @return retourne la campagne d'évaluation créée
+ */
+ public EvaluationDefinition addEvaluationDefinition(Date dateStart, Date dateEnd,
+ String creator,String name, String description){
+ Long result = edDAO.addEvaluationDefinition(dateStart, dateEnd, creator, name, description);
+ if(null == result){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(result);
+ }
+ }
+
+
+ /**
+ * Suppression de la campagne. Entraine la suppression des résultats associés
+ * @param ed la campagne d'evaluation à supprimer
+ */
+ public void deleteEvaluationDefinition(EvaluationDefinition ed){
+ Integer result = edDAO.deleteEvaluationDefinition(ed);
+
+ if(result != null && result != WsErrors.WS_OK){
+ System.out.println(WsErrors.getError(result));
+ }
+ }
+
+ /**
+ * Mettre à jour le plan de formation dans lequel s'inscrit la campagne.
+ * @param ed la campagne d'évaluation concernée
+ * @param plan le nouveau plan de formation
+ * @return retourne la campagne mise à jour
+ */
+ public EvaluationDefinition replacePlan(EvaluationDefinition ed, Plan plan) {
+ Integer result = edDAO.replacePlan(ed,plan);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+ /**
+ * Mettre à jour le scénario d'évaluation dans une campagne
+ * @param ed identifiant de la campagne concernée
+ * @param uuid identifiant du nouveau scénario
+ * @return retourne la campagne mise à jour
+ */
+ public EvaluationDefinition replaceScenarioEvaluation(EvaluationDefinition ed, String uuid) {
+ Integer result = edDAO.replaceScenarioEvaluation(ed, uuid);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+ /**
+ * Obtenir une campagne existante
+ * @param id identifiant de la campagne
+ * @return retourne la campagne correspondante, null en cas d'erreur
+ */
+ public EvaluationDefinition getEvaluationDefinition(Long id) {
+ return edDAO.getEvaluationDefinition(id);
+ }
+
+ /**
+ * Mettre à jour la valeur d'une propriété d'un scénario dans une campagne
+ * @param property identifiant de la propriété à modifier
+ * @param value la nouvelle valeur
+ * @return retourne true en cas de succès
+ */
+ public Boolean updateScenarioProperty(Long property, String value){
+ Integer result = edDAO.updateScenarioProperty(property, value);
+ if(null == result || result != WsErrors.WS_OK){
+ return false;
+ }
+ else{
+ return true;
+ }
+ }
+
+ /**
+ * Ajouter un examen dans une compagne d'évaluation.
+ * @param ed la campagne d'évaluation concernée
+ * @param examen l'examen à ajouter
+ * @return retourne la campagne mise à jour
+ */
+ public EvaluationDefinition addExamen(EvaluationDefinition ed, Examen examen){
+ Integer result = edDAO.addExamen(ed,examen);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+ /**
+ * enlève un examen dans une compagne d'évaluation.
+ * @param ed la campagne d'évaluation concernée
+ * @param e l'examen à enlever
+ * @return retourne la campagne mise à jour
+ */
+ public EvaluationDefinition removeExamen(EvaluationDefinition ed, ExamenDef e){
+ Integer result = edDAO.removeExamen(ed,e);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+ /**
+ * Mettre à jour des attributs de la campagne. Notez que si
+ * la campagne a déjà été instantié, cette modification n'aura pas
+ * d'effet pour les utilisateurs : leurs tâches sont déjà instanciés
+ * avec les paramètres au moment de l'instantiation. Pour que ces
+ * nouvelles valeurs soit prises en compte dans les tâches d'un
+ * candidat, il faut réinialiser l'instance du candidat.
+ * @param ed l'evaluationDefinition à sauvegarder
+ * @return retourne la campagne mise à jour
+ */
+ public EvaluationDefinition editEvaluationDefinition(EvaluationDefinition ed){
+ Integer result = edDAO.editEvaluationDefinition(ed);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+ /**
+ * Ajouter des personnes/groupes dans une campagne d'évaluation
+ * @param ed l'evaluationDefinition concernée
+ * @param entities entités à ajouter
+ * @param role rôle des entités. Par exemple, "Candidats".
+ * @return la campagne mise à jour
+ */
+ public EvaluationDefinition addEntities(EvaluationDefinition ed, Set<Entity> entities, String role){
+ Integer result = edDAO.addEntities(ed, entities, role);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+ /**
+ * supprime des personnes/groupes dans une campagne d'évaluation
+ * @param ed l'evaluationDefinition concernée
+ * @param entities entités à supprimer
+ * @param role rôle des entités. Par exemple, "Candidats".
+ * @return retourne la campagne mise à jour
+ */
+ public EvaluationDefinition removeEntities(EvaluationDefinition ed, Set<Entity> entities, String role){
+ Integer result = edDAO.removeEntities(ed, entities, role);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+ /**
+ * Instantiation de la campagne. Va générer les tâches pour les users.
+ * Correspond au "lancement" de la campagne
+ * @param ed l'evaluationDefinition à instantier
+ * @return retourne la campagne mise à jour
+ */
+ public EvaluationDefinition instantiateED(EvaluationDefinition ed){
+ Integer result = edDAO.instantiateED(ed);
+ if(null == result || result != WsErrors.WS_OK){
+ return null;
+ }
+ else{
+ return getEvaluationDefinition(ed.getId());
+ }
+ }
+
+}