--- /dev/null
+package com.pentila.emawsconnector.dao;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.util.Set;
+
+import com.pentila.emawsconnector.utils.EmaWSConnector;
+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 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 l'identifiant de la campagne crée, ou un code d'erreur.
+ */
+ public Long addEvaluationDefinition(Date dateStart, Date dateEnd,
+ String creator,String name, String description){
+
+ String dateStartTime;
+ String dateEndTime;
+
+ try {
+ name = java.net.URLEncoder.encode(name, "UTF-8");
+ description = java.net.URLEncoder.encode(description, "UTF-8");
+ creator = java.net.URLEncoder.encode(creator, "UTF-8");
+ dateStartTime = java.net.URLEncoder.encode(String.valueOf(dateStart.getTime()/1000), "UTF-8");
+ dateEndTime = java.net.URLEncoder.encode(String.valueOf(dateEnd.getTime()/1000), "UTF-8");
+ }catch (UnsupportedEncodingException e) {
+ //e.printStackTrace();
+ return null;
+ }
+
+ Long result = -6L;
+ result = EmaWSConnector.read("evaluationDefinition/addEvaluationDefinition?" +
+ "name="+name+
+ "&description="+description+
+ "&creator="+creator+
+ "&dateStart="+dateStartTime+
+ "&dateEnd="+dateEndTime+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+
+ return result;
+ }
+
+ /**
+ * Obtenir une campagne existante
+ * @param edid identifiant de la campagne
+ * @return retourne la campagne correspondante, null en cas d'erreur
+ */
+ public EvaluationDefinition getEvaluationDefinition(Long edid) {
+ EvaluationDefinition result = new EvaluationDefinition();
+ result = EmaWSConnector.read("evaluationDefinition/getEvaluationDefinition?" +
+ "id="+edid+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return 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 le code d'erreur correspondant au résultat
+ */
+ public Integer replacePlan(EvaluationDefinition ed, Plan plan) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+ result = EmaWSConnector.read("evaluationDefinition/replacePlan?" +
+ "ed="+ed.getId()+
+ "&plan="+plan.getId()+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * 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 le code d'erreur correspondant au résultat
+ */
+ public Integer replaceScenarioEvaluation(EvaluationDefinition ed, String uuid) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+ result = EmaWSConnector.read("evaluationDefinition/replaceScenarioEvaluation?" +
+ "ed="+ed.getId()+
+ "&scenario="+uuid+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * 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 le code d'erreur correspondant au résultat
+ */
+ public Integer updateScenarioProperty(Long property, String value) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+ result = EmaWSConnector.read("scenario/updateProperty?" +
+ "property="+property+
+ "&value="+value+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * Ajouter un examen dans une compagne d'évaluation.
+ * @param ed la campagne d'évaluation concernée
+ * @param examen l'examen à ajouter
+ * @return retourne le code d'erreur correspondant au résultat
+ */
+ public Integer addExamen(EvaluationDefinition ed, Examen examen) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+ result = EmaWSConnector.read("evaluationDefinition/updateExamen?" +
+ "ed="+ed.getId()+
+ "&examen="+examen.getId()+
+ "&action=add"+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * enlève un examen dans une compagne d'évaluation.
+ * @param ed la campagne d'évaluation concernée
+ * @param e l'examen à enlever
+ * @return retourne le code d'erreur correspondant au résultat
+ */
+ public Integer removeExamen(EvaluationDefinition ed, ExamenDef e) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+ result = EmaWSConnector.read("evaluationDefinition/updateExamen?" +
+ "ed="+ed.getId()+
+ "&examen="+e.getId()+
+ "&action=remove"+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * 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 le code d'erreur correspondant au résultat
+ */
+ public Integer editEvaluationDefinition(EvaluationDefinition ed) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+
+ String url = "";
+ try {
+ url = "evaluationDefinition/editEvaluationDefinition?" +
+ "id="+java.net.URLEncoder.encode(ed.getId().toString(), "UTF-8")+
+ "&name="+java.net.URLEncoder.encode(ed.getName(), "UTF-8")+
+ "&dateStart="+java.net.URLEncoder.encode(String.valueOf(ed.getDateStart().getTime()), "UTF-8")+
+ "&dateEnd="+java.net.URLEncoder.encode(String.valueOf(ed.getDateEnd().getTime()), "UTF-8")+
+ "&login=" + EmaWSConnector.getLogin();
+ } catch (UnsupportedEncodingException e) {
+ return null;
+ }
+
+ result = EmaWSConnector.read(url, result.getClass());
+ return result;
+ }
+
+ /**
+ * 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 retourne le code d'erreur correspondant au résultat
+ */
+ public Integer addEntities(EvaluationDefinition ed, Set<Entity> entities, String role) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+
+ String entitiesString = "";
+ for(Entity e : entities){
+ entitiesString += e.getUid() + ",";
+ }
+ entitiesString = entitiesString.substring(0, entitiesString.length()-1);
+
+ result = EmaWSConnector.read("evaluationDefinition/updateEntities?" +
+ "ed="+ed.getId()+
+ "&entities="+entitiesString+
+ "&role="+role+
+ "&action=add"+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * 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 le code d'erreur correspondant au résultat
+ */
+ public Integer removeEntities(EvaluationDefinition ed, Set<Entity> entities, String role) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+
+ String entitiesString = "";
+ for(Entity e : entities){
+ entitiesString += e.getUid() + ",";
+ }
+ entitiesString = entitiesString.substring(0, entitiesString.length()-1);
+
+ result = EmaWSConnector.read("evaluationDefinition/updateEntities?" +
+ "ed="+ed.getId()+
+ "&entities="+entitiesString+
+ "&action=remove"+
+ "&role="+role+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * 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 le code d'erreur correspondant au résultat
+ */
+ public Integer instantiateED(EvaluationDefinition ed) {
+ Integer result = WsErrors.ERROR_UNDEFINED;
+ result = EmaWSConnector.read("evaluationDefinition/instantiateED?" +
+ "ed="+ed.getId()+
+ "&login=" + EmaWSConnector.getLogin(), result.getClass());
+ return result;
+ }
+
+ /**
+ * Suppression de la campagne. Entraine la suppression des résultats associés
+ * @param ed la campagne d'evaluation à supprimer
+ * @return retourne le code d'erreur correspondant au résultat
+ */
+ public Integer deleteEvaluationDefinition(EvaluationDefinition ed) {
+ return EmaWSConnector.read("evaluationDefinition/deleteEvaluationDefinition?" +
+ "ed="+ed.getId()+
+ "&login=" + EmaWSConnector.getLogin(), Integer.class);
+
+ }
+
+}