--- /dev/null
+/*****************************************************************************
+ * Copyright Igor Barma, Eric Brun, Alexandre Desoubeaux, Christian Martel,
+ * (2 décembre 2008)
+ *
+ * Ce logiciel est un programme informatique servant à l'évaluation des
+ * compétences.
+ *
+ * Ce logiciel est régi par la licence CeCILL soumise au droit français et
+ * respectant les principes de diffusion des logiciels libres. Vous pouvez
+ * utiliser, modifier et/ou redistribuer ce programme sous les conditions
+ * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
+ * sur le site "http://www.cecill.info".
+ *
+ * En contrepartie de l'accessibilité au code source et des droits de copie,
+ * de modification et de redistribution accordés par cette licence, il n'est
+ * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
+ * seule une responsabilité restreinte pèse sur l'auteur du programme, le
+ * titulaire des droits patrimoniaux et les concédants successifs.
+ *
+ * A cet égard l'attention de l'utilisateur est attirée sur les risques
+ * associés au chargement, à l'utilisation, à la modification et/ou au
+ * développement et à la reproduction du logiciel par l'utilisateur étant
+ * donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+ * manipuler et qui le réserve donc à des développeurs et des professionnels
+ * avertis possédant des connaissances informatiques approfondies. Les
+ * utilisateurs sont donc invités à charger et tester l'adéquation du
+ * logiciel à leurs besoins dans des conditions permettant d'assurer la
+ * sécurité de leurs systèmes et ou de leurs données et, plus généralement,
+ * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
+ *
+ * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
+ * pris connaissance de la licence CeCILL, et que vous en avez accepté les
+ * termes.
+ *******************************************************************************/
+package com.pentila.evalcomp.client.services;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.URL;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.gwtext.client.core.UrlParam;
+import com.gwtextux.client.widgets.upload.UploadDialog;
+import com.gwtextux.client.widgets.upload.UploadDialogListenerAdapter;
+import com.pentila.evalcomp.client.ConnexionServer;
+import com.pentila.evalcomp.client.i18n.Messages;
+import com.pentila.evalcomp.client.services.widget.AssociateRessourcesWidget;
+import com.pentila.evalcomp.client.utilities.Tools;
+import com.pentila.evalcomp.client.utilities.UserTools;
+import com.pentila.evalcomp.domain.Ressource;
+import com.pentila.evalcomp.domain.instance.EvaluationSubjectInstance;
+import com.pentila.evalcomp.domain.instance.ScenarioInstance;
+import com.pentila.evalcomp.domain.transit.RessourceItem;
+import com.pentila.evalcomp.domain.transit.Todo;
+
+/**
+ * The Class RessourceServiceAbstract.
+ */
+public class RessourceServiceAbstract extends ServiceAbstract
+implements IRessourceService {
+
+ /** The ARW. */
+ private AssociateRessourcesWidget ARW = null;
+
+ /**
+ * Instantiates a new ressource service abstract.
+ */
+ public RessourceServiceAbstract() {
+ super();
+ ARW = new AssociateRessourcesWidget(this);
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.client.services.IRessourceService#addRessource(com.pentila.evalcomp.domain.transit.RessourceItem)
+ */
+ public void addRessource(RessourceItem r) {
+
+ final ScenarioInstance si = (ScenarioInstance) getTodo()
+ .getScenarioInstanceAbstract();
+
+ AsyncCallback callback = new AsyncCallback() {
+
+ public void onFailure(Throwable caught) {
+ System.out.println(caught.getMessage());
+ }
+
+ public void onSuccess(Object result) {
+ if (result != null) {
+ Ressource res = (Ressource) result;
+
+ si.getEvaluationSubjectInstance().getRessources().add(res);
+
+ ARW.updateRessources(si.getEvaluationSubjectInstance()
+ .getRessources());
+
+ if (ARW.getRessourcesCount() > 0) {
+ getTransitionPanel().showButtons();
+ } else {
+ getTransitionPanel().hideButtons();
+ }
+ }
+ }
+ };
+
+ EvaluationSubjectInstance esi = si.getEvaluationSubjectInstance();
+
+ ConnexionServer.ressourceService.addRessourceToESI(UserTools.getUser(),
+ r, esi, callback);
+
+ }
+
+ /**
+ * Delete ressource.
+ *
+ * @param sr the sr
+ */
+ public void deleteRessources(final Set<Ressource> sr) {
+
+ Set<Long> rids = new HashSet<Long>();
+ for (Ressource r : sr) {
+
+ rids.add(r.getId());
+
+ }
+
+ AsyncCallback callback = new AsyncCallback() {
+
+ public void onFailure(Throwable caught) {
+ System.out.println("Probleme dans Suppression des ressources"); //$NON-NLS-1$
+ }
+
+ public void onSuccess(Object result) {
+ // on supprime les ressources du todo
+ ScenarioInstance si = (ScenarioInstance) getTodo()
+ .getScenarioInstanceAbstract();
+ si.getEvaluationSubjectInstance().getRessources().removeAll(sr);
+
+ if (ARW.getRessourcesCount() > 0) {
+ getTransitionPanel().showButtons();
+ } else {
+ getTransitionPanel().hideButtons();
+ }
+
+ }
+ };
+ ConnexionServer.ressourceService.removeRessourceFromESI(UserTools
+ .getUser().getUid(), rids, callback);
+
+ }
+
+ /**
+ * Gets the aRW.
+ *
+ * @return the aRW
+ */
+ public AssociateRessourcesWidget getARW() {
+ return ARW;
+ }
+
+ /* (non-Javadoc)
+ * @see com.pentila.evalcomp.client.services.IRessourceService#uploadRessources()
+ */
+ public void uploadRessources(){
+
+
+ final ScenarioInstance si = (ScenarioInstance) getTodo()
+ .getScenarioInstanceAbstract();
+
+
+ UploadDialog dialog = new UploadDialog();
+ dialog.setUrl("uploadWSFile");
+
+ UrlParam param[] = new UrlParam[5];
+ param[0] = new UrlParam("login", UserTools.getUser().getUid());
+ param[1] = new UrlParam(
+ "dirpath", URL.encode(""));
+ param[2] = new UrlParam("type", "associateUpload");
+ param[3] = new UrlParam("pluginkey", "");
+ param[4] = new UrlParam("esiid", si.getEvaluationSubjectInstance().getId().toString());
+ dialog.setBaseParams(param);
+
+ dialog.setPostVarName("file");
+
+ dialog.addListener(new UploadDialogListenerAdapter() {
+
+ @Override
+ public void onUploadComplete(UploadDialog source) {
+
+ AsyncCallback callback = new AsyncCallback() {
+
+ public void onFailure(Throwable arg0) {
+
+ Tools.hideLoadingRegion(ARW.getId());
+ }
+
+ public void onSuccess(Object result) {
+
+
+ Todo t = (Todo) result;
+ todo.setScenarioInstanceAbstract(t.getScenarioInstanceAbstract());
+ ScenarioInstance si = (ScenarioInstance) getTodo()
+ .getScenarioInstanceAbstract();
+
+ ARW.updateRessources(si.getEvaluationSubjectInstance()
+ .getRessources());
+
+ if (ARW.getRessourcesCount() > 0) {
+ getTransitionPanel().showButtons();
+ } else {
+ getTransitionPanel().hideButtons();
+ }
+ Tools.hideLoadingRegion(ARW.getId());
+ }
+
+ };
+
+ Tools.showLoadingRegion(ARW.getId(), Messages.getString("MAJ"), Messages
+ .getString("Chargement"));
+
+ RequestBuilder rb = ConnexionServer.instanceService.updateTodo(todo, 0, 1, null, null, callback);
+ rb.setHeader("code", "A9");
+ ConnexionServer.doSend(rb);
+
+ }
+ });
+
+ dialog.show();
+ }
+
+
+}