Subversion Repositories eFlore/Applications.coel

Rev

Rev 1909 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
60 jpm 1
package org.tela_botanica.client;
2
 
1562 jpm 3
import java.util.ArrayList;
1468 jpm 4
import java.util.HashMap;
231 jp_milcent 5
import java.util.Iterator;
134 jpm 6
import java.util.List;
1562 jpm 7
import java.util.logging.Level;
8
import java.util.logging.Logger;
134 jpm 9
 
1860 aurelien 10
import org.mortbay.util.ajax.JSON;
61 jpm 11
import org.tela_botanica.client.composants.AideFenetre;
60 jpm 12
import org.tela_botanica.client.composants.IdentificationFenetre;
1210 cyprien 13
import org.tela_botanica.client.composants.InfoLogger;
898 gduche 14
import org.tela_botanica.client.composants.LicenceFenetre;
1023 jpm 15
import org.tela_botanica.client.composants.AproposFenetre;
907 jpm 16
import org.tela_botanica.client.configuration.APropos;
17
import org.tela_botanica.client.configuration.Configuration;
358 jp_milcent 18
import org.tela_botanica.client.i18n.Constantes;
466 gduche 19
import org.tela_botanica.client.i18n.ErrorMessages;
119 jpm 20
import org.tela_botanica.client.interfaces.Rafraichissable;
156 jp_milcent 21
import org.tela_botanica.client.modeles.Information;
327 jp_milcent 22
import org.tela_botanica.client.modeles.MenuApplicationId;
61 jpm 23
import org.tela_botanica.client.modeles.Utilisateur;
1014 gduche 24
import org.tela_botanica.client.modeles.Valeur;
935 jpm 25
import org.tela_botanica.client.modeles.collection.Collection;
989 jpm 26
import org.tela_botanica.client.modeles.collection.CollectionACommentaire;
27
import org.tela_botanica.client.modeles.collection.CollectionACommentaireAsyncDao;
28
import org.tela_botanica.client.modeles.collection.CollectionACommentaireListe;
935 jpm 29
import org.tela_botanica.client.modeles.collection.CollectionAPersonne;
30
import org.tela_botanica.client.modeles.collection.CollectionAPersonneListe;
31
import org.tela_botanica.client.modeles.collection.CollectionAPublication;
32
import org.tela_botanica.client.modeles.collection.CollectionAPublicationListe;
33
import org.tela_botanica.client.modeles.collection.CollectionListe;
985 jpm 34
import org.tela_botanica.client.modeles.commentaire.Commentaire;
35
import org.tela_botanica.client.modeles.commentaire.CommentaireListe;
935 jpm 36
import org.tela_botanica.client.modeles.personne.Personne;
37
import org.tela_botanica.client.modeles.personne.PersonneListe;
38
import org.tela_botanica.client.modeles.publication.Publication;
39
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
1860 aurelien 40
import org.tela_botanica.client.modeles.publication.PublicationAPersonneAsyncDao;
935 jpm 41
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
1860 aurelien 42
import org.tela_botanica.client.modeles.publication.PublicationAsyncDao;
935 jpm 43
import org.tela_botanica.client.modeles.publication.PublicationListe;
44
import org.tela_botanica.client.modeles.structure.Structure;
45
import org.tela_botanica.client.modeles.structure.StructureAPersonne;
46
import org.tela_botanica.client.modeles.structure.StructureAPersonneListe;
47
import org.tela_botanica.client.modeles.structure.StructureConservation;
48
import org.tela_botanica.client.modeles.structure.StructureListe;
49
import org.tela_botanica.client.modeles.structure.StructureValorisation;
1324 gduche 50
import org.tela_botanica.client.synchronisation.Sequenceur;
1818 mathias 51
import org.tela_botanica.client.util.Analytics;
1428 cyprien 52
import org.tela_botanica.client.util.Debug;
1562 jpm 53
import org.tela_botanica.client.util.Log;
54
import org.tela_botanica.client.util.UtilArray;
936 jpm 55
import org.tela_botanica.client.vues.ContenuVue;
444 jp_milcent 56
import org.tela_botanica.client.vues.EnteteVue;
1613 aurelien 57
import org.tela_botanica.client.vues.FenetreForm;
641 jp_milcent 58
import org.tela_botanica.client.vues.Formulaire;
1210 cyprien 59
import org.tela_botanica.client.vues.FenetreJournal;
1780 aurelien 60
import org.tela_botanica.client.vues.MenuHorizontalVue;
332 gduche 61
import org.tela_botanica.client.vues.PopupChargement;
443 jp_milcent 62
import org.tela_botanica.client.vues.StatutVue;
912 jpm 63
import org.tela_botanica.client.vues.accueil.AccueilVue;
1790 aurelien 64
import org.tela_botanica.client.vues.accueil.StatistiquesVue;
934 jpm 65
import org.tela_botanica.client.vues.collection.CollectionForm;
66
import org.tela_botanica.client.vues.collection.CollectionListeVue;
67
import org.tela_botanica.client.vues.collection.CollectionVue;
989 jpm 68
import org.tela_botanica.client.vues.commentaire.CommentaireForm;
985 jpm 69
import org.tela_botanica.client.vues.commentaire.CommentaireVue;
935 jpm 70
import org.tela_botanica.client.vues.personne.PersonneForm;
71
import org.tela_botanica.client.vues.personne.PersonneVue;
72
import org.tela_botanica.client.vues.publication.PublicationForm;
1860 aurelien 73
import org.tela_botanica.client.vues.publication.PublicationImportForm;
74
import org.tela_botanica.client.vues.publication.PublicationListeVue;
935 jpm 75
import org.tela_botanica.client.vues.publication.PublicationVue;
76
import org.tela_botanica.client.vues.structure.StructureForm;
77
import org.tela_botanica.client.vues.structure.StructureVue;
467 jp_milcent 78
 
60 jpm 79
import com.extjs.gxt.ui.client.Registry;
80
import com.extjs.gxt.ui.client.Style.LayoutRegion;
1780 aurelien 81
import com.extjs.gxt.ui.client.Style.Orientation;
315 gduche 82
import com.extjs.gxt.ui.client.event.Listener;
502 gduche 83
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
60 jpm 84
import com.extjs.gxt.ui.client.util.Margins;
1780 aurelien 85
import com.extjs.gxt.ui.client.widget.ContentPanel;
315 gduche 86
import com.extjs.gxt.ui.client.widget.Dialog;
87
import com.extjs.gxt.ui.client.widget.MessageBox;
60 jpm 88
import com.extjs.gxt.ui.client.widget.Viewport;
315 gduche 89
import com.extjs.gxt.ui.client.widget.button.Button;
60 jpm 90
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
91
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
1780 aurelien 92
import com.extjs.gxt.ui.client.widget.layout.LayoutData;
93
import com.extjs.gxt.ui.client.widget.layout.RowData;
94
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
91 jpm 95
import com.google.gwt.core.client.GWT;
1860 aurelien 96
import com.google.gwt.dev.jjs.ast.js.JsonArray;
97
import com.google.gwt.dev.json.JsonObject;
98
import com.google.gwt.dev.json.JsonValue;
1509 jpm 99
import com.google.gwt.event.logical.shared.ValueChangeEvent;
100
import com.google.gwt.event.logical.shared.ValueChangeHandler;
1562 jpm 101
import com.google.gwt.http.client.URL;
599 gduche 102
import com.google.gwt.i18n.client.Dictionary;
1860 aurelien 103
import com.google.gwt.json.client.JSONArray;
104
import com.google.gwt.json.client.JSONObject;
105
import com.google.gwt.json.client.JSONParser;
106
import com.google.gwt.json.client.JSONValue;
1509 jpm 107
import com.google.gwt.user.client.History;
60 jpm 108
import com.google.gwt.user.client.Window;
109
import com.google.gwt.user.client.ui.RootPanel;
1860 aurelien 110
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
111
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
60 jpm 112
 
1509 jpm 113
public class Mediateur implements Rafraichissable, ValueChangeHandler<String> {
60 jpm 114
 
358 jp_milcent 115
	private Viewport viewport;
119 jpm 116
	private Modele modele = null;
582 jp_milcent 117
	public static final Constantes i18nC = getI18nConstante();
118
	public static final ErrorMessages i18nM = getI18nMessage();
1637 aurelien 119
	public static final boolean DEBUG = false;
120
	public static final boolean DEBUG_CHARGEMENT = false;
119 jpm 121
 
1562 jpm 122
	private String requeteUrl = null;
123
 
444 jp_milcent 124
	private EnteteVue panneauNord = null;
125
	private ContenuVue panneauCentre = null;
443 jp_milcent 126
	private StatutVue panneauSud = null;
1210 cyprien 127
	private FenetreJournal fenetreJournal = null;
1780 aurelien 128
	private MenuHorizontalVue panneauNavigation = null;
60 jpm 129
 
1468 jpm 130
	private HashMap<Object, Integer> fileDAttenteChargement = null;
131
 
358 jp_milcent 132
	private IdentificationFenetre fenetreIdentification = null;
1041 gduche 133
	private int nbElements = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
1156 jpm 134
 
1468 jpm 135
	private Sequenceur sequenceur = null;
1939 mathias 136
	//private boolean premierChargement = true;
137
	protected String codeMenuPrecedent = null;
1468 jpm 138
 
60 jpm 139
	public Mediateur() {
140
		// Enregistrement du Médiateur dans le Registre
141
		Registry.register(RegistreId.MEDIATEUR, this);
765 jpm 142
 
143
		//Initialisation du Registre
144
		initialiserRegistre();
466 gduche 145
 
60 jpm 146
		// Création du Modèle qui s'enregistre lui même dans le Registre
119 jpm 147
		modele = new Modele();
1468 jpm 148
 
149
		// Séquenceur (local au médiateur)
150
		sequenceur = new Sequenceur();
535 jp_milcent 151
 
60 jpm 152
		// Création du Viewport qui contient la disposition globale de l'application
153
		viewport = new Viewport();
154
		viewport.setLayout(new BorderLayout());
1780 aurelien 155
 
156
		panneauNavigation = new MenuHorizontalVue(this);
552 jp_milcent 157
 
60 jpm 158
		// Création des différents panneaux
159
	    creerPanneauNord();
160
	    creerPanneauCentral();
358 jp_milcent 161
	    creerPanneauSud();
1210 cyprien 162
	    fenetreJournal = new FenetreJournal(this);
535 jp_milcent 163
 
1906 mathias 164
		// Connexion de l'utilisateur
165
	    getEtatUtilisateur();
166
 
1468 jpm 167
		// Creer la table qui gère le panneau de chargement/déchargement
168
		fileDAttenteChargement = new HashMap<Object, Integer>();
169
 
1509 jpm 170
		// Gestion de l'historique du navigateur
171
	    History.addValueChangeHandler(this);// Ajout du médiateur comme écouteur des changements de l'historique
172
		if ("".equals(History.getToken())) {
173
			History.newItem(MenuApplicationId.ACCUEIL);
174
		} else {
175
			History.fireCurrentHistoryState();
176
		}
177
 
60 jpm 178
		// Retour à GWT du Viewport une fois constuit
179
		RootPanel.get().add(viewport);
180
	}
181
 
156 jp_milcent 182
	//+----------------------------------------------------------------------------------------------------------------+
535 jp_milcent 183
	//												GESTION de l'I18N et du REGISTRE
184
	//+----------------------------------------------------------------------------------------------------------------+
582 jp_milcent 185
	protected static Constantes getI18nConstante() {
535 jp_milcent 186
		return GWT.create(Constantes.class);
187
	}
188
 
582 jp_milcent 189
	protected static ErrorMessages getI18nMessage() {
535 jp_milcent 190
		return GWT.create(ErrorMessages.class);
191
	}
192
 
193
	protected void initialiserRegistre() {
1107 jpm 194
		APropos apropos = new APropos();
907 jpm 195
 
1107 jpm 196
		Registry.register(RegistreId.APPLI_NOM, apropos.getAppliNom());
197
		Registry.register(RegistreId.APPLI_CODE, apropos.getAppliCode());
1108 jpm 198
		Registry.register(RegistreId.APPLI_VERSION, apropos.getAppliVersionCode());
199
		Registry.register(RegistreId.APPLI_VERSION_NOM, apropos.getAppliVersionNom());
1107 jpm 200
 
1023 jpm 201
		Registry.register(RegistreId.APPLI_DEVELOPPEURS, apropos.getDeveloppeurs());
202
		Registry.register(RegistreId.APPLI_TRADUCTEURS, apropos.getTraducteurs());
1417 jpm 203
		Registry.register(RegistreId.APPLI_TESTEURS, apropos.getTesteurs());
1023 jpm 204
		Registry.register(RegistreId.APPLI_LICENCE, apropos.getLicence());
1417 jpm 205
 
907 jpm 206
		Registry.register(RegistreId.APPLI_REVISION, apropos.getRevisionGlobale());
1549 jpm 207
		Registry.register(RegistreId.SERVICES_REVISION, apropos.getRevisionGlobaleServices());
907 jpm 208
		Registry.register(RegistreId.APPLI_COMPILATION_JAVA_VERSION, apropos.getVersionJavaCompilation());
209
		Registry.register(RegistreId.APPLI_COMPILATION_DATE_HEURE, apropos.getDateHeureCompilation());
535 jp_milcent 210
 
211
		Registry.register(RegistreId.CONFIG, new Configuration());
537 jp_milcent 212
		Registry.register(RegistreId.POPUP_CHARGEMENT, new PopupChargement(this));
766 jpm 213
		Registry.register(RegistreId.UTILISATEUR_COURANT, new Utilisateur());
535 jp_milcent 214
	}
215
 
216
	//+----------------------------------------------------------------------------------------------------------------+
156 jp_milcent 217
	//												GESTION des PANNEAUX PRINCIPAUX
218
	//+----------------------------------------------------------------------------------------------------------------+
119 jpm 219
 
60 jpm 220
	private void creerPanneauNord() {
444 jp_milcent 221
		panneauNord = new EnteteVue(this);
60 jpm 222
 
223
		BorderLayoutData regionNord = new BorderLayoutData(LayoutRegion.NORTH, 100);
224
		regionNord.setCollapsible(true);
225
		regionNord.setFloatable(true);
226
		regionNord.setSplit(false);
227
		regionNord.setMargins(new Margins(5, 5, 0, 5));
228
 
229
		viewport.add(panneauNord, regionNord);
230
	}
231
 
232
	private void creerPanneauCentral() {
1780 aurelien 233
 
234
		ContentPanel panneauIntermediaire = new ContentPanel();
235
		panneauIntermediaire.setLayout(new RowLayout(Orientation.VERTICAL));
236
		panneauIntermediaire.setHeaderVisible(false);
237
 
444 jp_milcent 238
		panneauCentre = new ContenuVue(this);
60 jpm 239
 
240
		BorderLayoutData regionCentre = new BorderLayoutData(LayoutRegion.CENTER);
241
		regionCentre.setMargins(new Margins(5, 5, 5, 0));
1780 aurelien 242
 
243
		panneauNavigation.setHeight(28);
244
		panneauNavigation.setBodyBorder(false);
245
		panneauNavigation.setBorders(false);
246
 
247
		panneauIntermediaire.add(panneauNavigation, new RowData(1, -1, new Margins(0)));
248
		panneauIntermediaire.add(panneauCentre, new RowData(1, 1, new Margins(0)));
60 jpm 249
 
1780 aurelien 250
		viewport.add(panneauIntermediaire, regionCentre);
60 jpm 251
	}
358 jp_milcent 252
 
253
	private void creerPanneauSud() {
443 jp_milcent 254
		panneauSud = new StatutVue();
358 jp_milcent 255
 
369 jp_milcent 256
		BorderLayoutData regionSud = new BorderLayoutData(LayoutRegion.SOUTH, 20);
358 jp_milcent 257
		regionSud.setCollapsible(true);
258
		regionSud.setFloatable(true);
259
		regionSud.setSplit(false);
260
		regionSud.setMargins(new Margins(0));
261
 
262
		viewport.add(panneauSud, regionSud);
263
	}
60 jpm 264
 
369 jp_milcent 265
	public void actualiserPanneauCentral() {
266
		panneauCentre.layout();
267
	}
268
 
1210 cyprien 269
	public Rafraichissable obtenirFenetreJournal()	{
270
		return this.fenetreJournal;
271
	}
272
 
273
	public void ouvrirFenetreJournal()	{
274
		fenetreJournal.show();
275
	}
276
 
277
	public StatutVue obtenirPanneauSud()	{
278
		return this.panneauSud;
279
	}
280
 
156 jp_milcent 281
	//+----------------------------------------------------------------------------------------------------------------+
282
	//												GESTION du MENU
283
	//+----------------------------------------------------------------------------------------------------------------+
1939 mathias 284
 
327 jp_milcent 285
	public void clicMenu(String codeMenuClique) {
1509 jpm 286
		boolean codeOk = true;
1210 cyprien 287
		if (codeMenuClique.equals(MenuApplicationId.ACCUEIL)) {
910 jpm 288
			afficherAccueil();
289
		} else if (codeMenuClique.equals(MenuApplicationId.STRUCTURE)) {
1691 raphael 290
			selectionnerStructure(panneauCentre, null, null, false);
553 jp_milcent 291
		} else if (codeMenuClique.equals(MenuApplicationId.COLLECTION)) {
1367 cyprien 292
			selectionnerCollection(panneauCentre, null, null, null);
553 jp_milcent 293
		} else if (codeMenuClique.equals(MenuApplicationId.PERSONNE)) {
1763 aurelien 294
			selectionnerPersonne(panneauCentre, null, null);
327 jp_milcent 295
		} else if (codeMenuClique.equals(MenuApplicationId.PUBLICATION)) {
1324 gduche 296
			selectionnerPublication(panneauCentre, null, null);
985 jpm 297
		} else if (codeMenuClique.equals(MenuApplicationId.COMMENTAIRE)) {
1367 cyprien 298
			selectionnerCommentaire(panneauCentre, null, null);
1790 aurelien 299
		} else if (codeMenuClique.equals(MenuApplicationId.STATS)) {
300
			// l'affichage des statistiques ne nécessite pas de chargement
301
			afficherStats();
379 jp_milcent 302
		} else {
1562 jpm 303
			Log.debug(i18nM.nonImplemente(codeMenuClique));
1509 jpm 304
			codeOk = false;
60 jpm 305
		}
1509 jpm 306
 
307
		// Le code menu est valide
308
		if (codeOk == true) {
309
			// Sélection du menu
1780 aurelien 310
			panneauNavigation.selectionMenu(codeMenuClique);
1509 jpm 311
			// Gestion de l'historique
1939 mathias 312
			//Coel.LogVersFirebug("CC: [" + codeMenuClique + "], CP: [" + codeMenuPrecedent + "]");
313
			if (codeMenuPrecedent != codeMenuClique) {
314
				//Coel.LogVersFirebug("Création d'historique!");
1562 jpm 315
				History.newItem(codeMenuClique);
1939 mathias 316
				codeMenuPrecedent = codeMenuClique;
1562 jpm 317
			}
1818 mathias 318
			// Ajout des stats Google Analytics
319
			Analytics.pageVisitee(codeMenuClique);
1509 jpm 320
			// Rafraichissement du panneau central
321
			panneauCentre.layout();
1780 aurelien 322
			viewport.layout();
1509 jpm 323
		}
60 jpm 324
	}
1324 gduche 325
 
1468 jpm 326
	public void activerChargement(Object caller, String message) {
327
		if (fileDAttenteChargement.get(caller) == null) fileDAttenteChargement.put(caller, 1);
328
		else fileDAttenteChargement.put(caller, fileDAttenteChargement.get(caller)+1);
329
		activerChargement(message);
330
	}
331
 
332
	private void activerChargement(String message) {
333
		if (DEBUG_CHARGEMENT) System.out.println("[CHARGEMENT] ActiverChargement");
334
		if (DEBUG_CHARGEMENT) debugFileAttente();
1155 jpm 335
		afficherPopinChargement();
336
		panneauCentre.disable();
369 jp_milcent 337
		panneauSud.showBusy(i18nC.chargement()+" "+message);
358 jp_milcent 338
	}
339
 
1468 jpm 340
	public void desactiverChargement(Object caller) {
341
		if (fileDAttenteChargement.get(caller) == null) {
342
			if (DEBUG_CHARGEMENT) System.out.println("[CHARGEMENT] Problème : l'objet "+caller+" essaie de désactiver le chargement alors qu'il ne l'a pas initié.");
343
		}
344
		else fileDAttenteChargement.put(caller, fileDAttenteChargement.get(caller)-1);
345
 
346
		if (!chargementsEnCours()) desactiverChargement();
1513 jpm 347
		else if (DEBUG_CHARGEMENT) {
348
			System.out.println("[CHARGEMENT] Patienter, il y a encore un chargement en cours.");
349
			debugFileAttente();
350
		}
1468 jpm 351
	}
352
 
353
	private void desactiverChargement() {
354
		if (DEBUG_CHARGEMENT) System.out.println("[CHARGEMENT] Désactiver Chargement");
355
		if (DEBUG_CHARGEMENT) debugFileAttente();
358 jp_milcent 356
		masquerPopinChargement();
1155 jpm 357
		panneauCentre.enable();
358 jp_milcent 358
		panneauSud.clear();
359
	}
1468 jpm 360
 
361
	private boolean chargementsEnCours() {
362
		boolean chargementEnCours = false;
363
		Iterator<Object> it = fileDAttenteChargement.keySet().iterator();
364
		while (it.hasNext() && !chargementEnCours) {
365
			chargementEnCours = (fileDAttenteChargement.get(it.next()) > 0);
366
		}
367
		return chargementEnCours;
368
	}
369
 
370
	private void debugFileAttente() {
371
		System.out.println("[CHARGEMENT]--< StackTrace >------------------------------------------------------");
372
		if (fileDAttenteChargement.size() == 0) System.out.println("(Empty)");
373
		Iterator<Object> it = fileDAttenteChargement.keySet().iterator();
374
		while (it.hasNext()) {
375
			Object o = it.next();
1513 jpm 376
			System.out.println("      ["+o+"] = "+fileDAttenteChargement.get(o));
1468 jpm 377
		}
378
	}
646 jp_milcent 379
 
156 jp_milcent 380
	//+----------------------------------------------------------------------------------------------------------------+
381
	//												GESTION DES FENÊTRES
382
	//+----------------------------------------------------------------------------------------------------------------+
60 jpm 383
 
61 jpm 384
	public void ouvrirAide() {
385
		AideFenetre aideFenetre = new AideFenetre();
386
		aideFenetre.show();
66 jpm 387
		// FIXME : apparament le fade In/Fade Out pose problème sur les navigateurs...
388
		//aideFenetre.el().fadeIn(FxConfig.NONE);
61 jpm 389
	}
390
 
391
	public void ouvrirParametres() {
1023 jpm 392
		AproposFenetre parametresFenetre = new AproposFenetre();
66 jpm 393
		parametresFenetre.show();
61 jpm 394
	}
395
 
396
	public void ouvrirIdentification() {
1017 jpm 397
		fenetreIdentification = new IdentificationFenetre(this);
358 jp_milcent 398
		fenetreIdentification.show();
61 jpm 399
	}
400
 
989 jpm 401
	public void ouvrirUrlExterne(String id) {
61 jpm 402
		if (id.equals(ComposantId.MENU_CEL)) {
989 jpm 403
			Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("cel"), "Carnet en ligne", "");
1773 mathias 404
		} else if (id.equals(ComposantId.MENU_CONTACT)) {
405
			String urlWidgetRemarques = ((Configuration) Registry.get(RegistreId.CONFIG)).getUrl("remarques")
1854 mathias 406
					+ "?service=coel&pageSource=" + URL.encodeQueryString(Window.Location.getHref());
1773 mathias 407
			Window.open(urlWidgetRemarques, "Remarques", "");
61 jpm 408
		}
409
	}
410
 
898 gduche 411
	public void afficherFenetreLicence(IdentificationFenetre vue)	{
1509 jpm 412
		new LicenceFenetre(vue);
898 gduche 413
	}
414
 
415
	public void accepterLicence(Rafraichissable vue)	{
416
		modele.accepterLicence(vue);
417
	}
156 jp_milcent 418
	//+----------------------------------------------------------------------------------------------------------------+
419
	//												GESTION de l'UTILISATEUR et de l'IDENTIFICATION
420
	//+----------------------------------------------------------------------------------------------------------------+
245 jp_milcent 421
	/**
422
	 * Retourne l'identifiant de l'utilisateur courrant de l'application.
423
	 */
156 jp_milcent 424
	public String getUtilisateurId() {
277 jp_milcent 425
		String id = null;
426
		Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
427
		if (!utilisateurCourant.getId().equals("")) {
428
			id = utilisateurCourant.getId();
429
		}
430
		return id;
156 jp_milcent 431
	}
432
 
912 jpm 433
	public Utilisateur getUtilisateur() {
434
		Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
435
		return utilisateurCourant;
436
	}
437
 
65 jpm 438
	public void connecterUtilisateur(String login, String mdp) {
277 jp_milcent 439
		modele.connecterUtilisateur(this, login, mdp);
64 jpm 440
	}
441
 
65 jpm 442
	public void deconnecterUtilisateur() {
277 jp_milcent 443
		modele.deconnecterUtilisateur(this);
64 jpm 444
	}
1906 mathias 445
 
446
	public void getEtatUtilisateur() {
447
		modele.getEtatUtilisateur(this);
448
	}
65 jpm 449
 
932 jpm 450
	public void repandreEtatIdentification(Utilisateur utilisateur) {
156 jp_milcent 451
		// Mise à jour du registre
277 jp_milcent 452
		Registry.register(RegistreId.UTILISATEUR_COURANT, utilisateur);
932 jpm 453
		// Propagation de l'information de mise à jour de l'utilisateur
454
		repandreInfoMiseAJourUtilisateur();
455
	}
456
 
457
	public void repandreInfoMiseAJourUtilisateur() {
912 jpm 458
		// Création de l'information de mise à jour de l'utilisateur
459
		Information info = new Information("maj_utilisateur");
460
 
461
		// Rafraichissement de la fenêtre d'Identification
941 jpm 462
		if (fenetreIdentification != null && fenetreIdentification.isVisible()) {
912 jpm 463
			fenetreIdentification.rafraichir(info);
464
		}
898 gduche 465
 
912 jpm 466
		// Rafraichissement du panneau Nord
467
		panneauNord.rafraichir(info);
1292 cyprien 468
 
912 jpm 469
		// Rafraichissement du panneau Centre
470
		if (panneauCentre != null) {
471
			panneauCentre.rafraichir(info);
932 jpm 472
		}
912 jpm 473
	}
1292 cyprien 474
 
912 jpm 475
	public void modifierUtilisateur()	{
476
		Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
477
		panneauNord.rafraichir(utilisateurCourant);
478
		modele.modifierUtilisateur(this, utilisateurCourant);
61 jpm 479
	}
1292 cyprien 480
 
156 jp_milcent 481
	//+----------------------------------------------------------------------------------------------------------------+
447 jp_milcent 482
	//												GESTION DES VALEURS ET LISTES
483
	//+----------------------------------------------------------------------------------------------------------------+
1367 cyprien 484
 
485
	/** Cette méthode est un "wrapper" **/
1324 gduche 486
	public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, String listeId, Sequenceur sequenceur)	{
487
		obtenirListeValeurEtRafraichir(vueARafraichir, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId), sequenceur);
1292 cyprien 488
	}
1367 cyprien 489
 
1324 gduche 490
	public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, int listeId, Sequenceur sequenceur)	{
1367 cyprien 491
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  ValeurListe");
1324 gduche 492
		Integer numeroSequence = null;
493
		if (sequenceur != null)	{
494
			numeroSequence = sequenceur.lancerRequeteSynchrone(vueARafraichir);
495
			vueARafraichir = sequenceur;
496
		}
497
		modele.obtenirListeValeurs(vueARafraichir, listeId, numeroSequence);
453 jp_milcent 498
	}
1367 cyprien 499
 
1324 gduche 500
	public void obtenirListeValeurEtRafraichir(Rafraichissable vueARafraichir, String nomListe, boolean pagination, String recherche, int start, int nbElements, Sequenceur sequenceur)	{
1367 cyprien 501
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  ValeurListe");
1324 gduche 502
		Integer numeroSequence = null;
503
		if (sequenceur != null)	{
504
			numeroSequence = sequenceur.lancerRequeteSynchrone(vueARafraichir);
505
			vueARafraichir = sequenceur;
506
		}
507
		modele.obtenirListeValeurs(vueARafraichir, ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(nomListe), pagination, recherche, start, nbElements, numeroSequence);
508
	}
1367 cyprien 509
 
510
	public void obtenirValeurEtRafraichir(Rafraichissable vueARafraichir, String listeId, String identifiantValeur, Sequenceur sequenceur)	{
511
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  ValeurListe");
1324 gduche 512
		Integer numeroSequence = null;
513
		if (sequenceur != null)	{
1367 cyprien 514
			numeroSequence = sequenceur.lancerRequeteSynchrone(vueARafraichir);
515
			vueARafraichir = sequenceur;
1324 gduche 516
		}
1373 cyprien 517
		modele.obtenirValeur(vueARafraichir, "identifiant", ((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeId), identifiantValeur, numeroSequence);
453 jp_milcent 518
	}
1367 cyprien 519
 
447 jp_milcent 520
	//+----------------------------------------------------------------------------------------------------------------+
910 jpm 521
	//												GESTION des APPLETS de l'ACCUEIL
522
	//+----------------------------------------------------------------------------------------------------------------+
523
 
524
	public void afficherAccueil() {
1210 cyprien 525
		if (!(panneauCentre.getContenu() instanceof AccueilVue)) {
910 jpm 526
			panneauCentre.removeAll();
527
			panneauCentre.add(new AccueilVue(this));
528
		}
1210 cyprien 529
		else {
530
			desactiverChargement();
531
		}
910 jpm 532
	}
533
 
534
	//+----------------------------------------------------------------------------------------------------------------+
447 jp_milcent 535
	//												GESTION DES STRUCTURES
536
	//+----------------------------------------------------------------------------------------------------------------+
537
 
453 jp_milcent 538
	public void afficherListeStructures(StructureListe structuresACharger) {
646 jp_milcent 539
		if (!(panneauCentre.getContenu() instanceof StructureVue))	{
626 gduche 540
			panneauCentre.removeAll();
646 jp_milcent 541
			panneauCentre.add(new StructureVue(this));
626 gduche 542
		}
646 jp_milcent 543
		panneauCentre.getContenu().rafraichir(structuresACharger);
453 jp_milcent 544
	}
545
 
580 jp_milcent 546
	public void afficherFormStructure(String structureId) {
641 jp_milcent 547
		String mode = Formulaire.MODE_AJOUTER;
580 jp_milcent 548
		if (structureId != null) {
641 jp_milcent 549
			mode = Formulaire.MODE_MODIFIER;
580 jp_milcent 550
		}
551
 
1613 aurelien 552
		final FenetreForm fenetre = new FenetreForm("");
1324 gduche 553
		Sequenceur sequenceur = new Sequenceur();
1613 aurelien 554
		StructureForm structureForm = new StructureForm(this, mode, sequenceur) {
555
			@Override
556
			public void surFermetureFormulaire() {
557
				fenetre.hide();
558
			}
559
		};
560
		structureForm.vueExterneARafraichirApresValidation = panneauCentre.getContenu();
561
		fenetre.add(structureForm);
562
		fenetre.show();
580 jp_milcent 563
 
641 jp_milcent 564
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
1691 raphael 565
			selectionnerStructure(structureForm, structureId, sequenceur, false);
1324 gduche 566
			selectionnerStructureAPersonne(structureForm, structureId, StructureAPersonne.ROLE_EQUIPE, sequenceur);
580 jp_milcent 567
		}
568
 
569
		panneauCentre.layout();
570
	}
571
 
447 jp_milcent 572
	public void clicListeStructure(Structure structure) {
646 jp_milcent 573
		panneauCentre.getContenu().rafraichir(structure);
609 jp_milcent 574
		if (structure != null && structure.getPersonnel() == null) {
1324 gduche 575
			selectionnerStructureAPersonne(panneauCentre.getContenu(), structure.getId(), StructureAPersonne.ROLE_EQUIPE, null);
1802 aurelien 576
			selectionnerCollectionAStructure(panneauCentre.getContenu(), structure.getId());
919 jpm 577
		}
447 jp_milcent 578
	}
579
 
580
	public void clicAjouterStructure() {
580 jp_milcent 581
		afficherFormStructure(null);
447 jp_milcent 582
	}
583
 
584
	public void clicModifierStructure(List<Structure> structureSelection) {
585
		if (structureSelection.size() == 0) {
1210 cyprien 586
			InfoLogger.display("Information", "Veuillez sélectionner une structure.");
447 jp_milcent 587
		} else if (structureSelection.size() > 1) {
1210 cyprien 588
			InfoLogger.display("Information", "Veuillez sélectionner une seule structure à la fois.");
447 jp_milcent 589
		} else if (structureSelection.size() == 1) {
609 jp_milcent 590
			afficherFormStructure(structureSelection.get(0).getId());
447 jp_milcent 591
		} else {
1210 cyprien 592
			InfoLogger.display("Erreur", "Une erreur est survenue dans la méthode clicModifierStructure() du Médiateur.");
447 jp_milcent 593
		}
594
	}
595
 
596
	public void clicSupprimerStructure(final Rafraichissable vue, final List<Structure> structureSelection) {
597
		if (structureSelection.size() == 0) {
1210 cyprien 598
			InfoLogger.display("Information", "Veuillez sélectionner une structure.");
447 jp_milcent 599
		} else if(structureSelection.size() > 0) {
609 jp_milcent 600
			String titre = "Supprimer des structures";
447 jp_milcent 601
			String message = "Êtes vous sur de vouloir supprimer les structures sélectionnées ?";
602
			if (structureSelection.size() == 1) {
609 jp_milcent 603
				titre = "Supprimer une structure";
447 jp_milcent 604
				message = "Êtes vous sur de vouloir supprimer la structure sélectionnée ?";
605
			}
606
 
502 gduche 607
			final Listener<MessageBoxEvent> suppressionEcouteur = new Listener<MessageBoxEvent>() {
608
				public void handleEvent(MessageBoxEvent ce) {
609
					Dialog dialog = (Dialog) ce.getComponent();
610
					Button btn = ce.getButtonClicked();
453 jp_milcent 611
 
1680 raphael 612
					if (btn.getHtml().equals(dialog.yesText))	{
453 jp_milcent 613
						String idStr = "" ;
614
						for(int i = 0 ; i < structureSelection.size() ; i++) {
609 jp_milcent 615
							idStr += structureSelection.get(i).getId()+",";
453 jp_milcent 616
						}
923 jpm 617
						supprimerStructure(vue, idStr);
453 jp_milcent 618
					}
619
				}
620
			};
447 jp_milcent 621
 
609 jp_milcent 622
			MessageBox.confirm(titre, message, suppressionEcouteur);
447 jp_milcent 623
		} else {
1210 cyprien 624
			InfoLogger.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerStructure() du Médiateur.");
447 jp_milcent 625
		}
626
	}
1329 cyprien 627
 
628
	/** selectionnerStructure(Rafraichissable vueARafraichir, String recherche, int start, int nbElements)
629
	 * Action :
630
	 * --------
631
	 * -	Récupère un nombre défini de structures en s'aidant du nom partiel ou complet de la structure.
632
	 *
633
	 * Description des paramètres :
634
	 * ----------------------------
635
	 *  -	'vueARafraichir' référence l'objet à mettre à jour après réception des données.
636
	 *  -	'recherche' est une chaîne de caractères représentant tout ou partie du nom d'une structure.
637
	 *  		Si la chaîne est vide, alors toutes les structures sont recherchées.
638
	 *  -	'start' et 'nbElements' sont les paramètres indispensables à la pagination. 'start'
639
	 *  		est le paramètre qui décrit le numéro du tuple de départ et 'nbElements' le nombre
640
	 *  		d'éléments à collecter.
641
	 *
642
	 * Préconditions :
643
	 * ---------------
644
	 *  -	'vueARafraichir' doit être non NULL et référencer un objet implémentant l'interface
645
	 *  		'Rafraichissable'
646
	 *  -	'recherche' doit être non NULL.
647
	 *  -	'start' doit être supérieur ou égal à zéro. 'nbElements' doit être supérieur à zéro.
648
	 *
1526 jpm 649
	 */
1691 raphael 650
	public void selectionnerStructure(Rafraichissable vueARafraichir, String recherche, int start, int nbElements, Sequenceur sequenceur, boolean searchCity) {
1526 jpm 651
		if (Mediateur.DEBUG) {
652
			System.out.println("MEDIATEUR - selectionner  Structure");
653
		}
1367 cyprien 654
		Integer seqId = null;
1526 jpm 655
		if (sequenceur != null)	{
1367 cyprien 656
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
657
			vueARafraichir = sequenceur;
658
		}
1691 raphael 659
		modele.selectionnerStructure(vueARafraichir, recherche, start, nbElements, seqId, searchCity);
1329 cyprien 660
	}
447 jp_milcent 661
 
1691 raphael 662
	public void selectionnerStructure(Rafraichissable vueARafraichir, String structureId, Sequenceur sequenceur, boolean searchCity) {
1526 jpm 663
		if (Mediateur.DEBUG) {
664
			System.out.println("MEDIATEUR - selectionner  Structure");
665
		}
1324 gduche 666
		Integer seqId = null;
1526 jpm 667
		if (sequenceur != null)	{
1324 gduche 668
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
669
			vueARafraichir = sequenceur;
670
		}
1633 aurelien 671
 
1763 aurelien 672
		modele.selectionnerStructure(vueARafraichir, structureId, null, 0, nbElements, seqId, searchCity);
447 jp_milcent 673
	}
674
 
1763 aurelien 675
	public void selectionnerStructure(Rafraichissable vueARafraichir, String structureId, String nom, int start, int nbElements, Sequenceur sequenceur, boolean searchCity) {
1526 jpm 676
		if (Mediateur.DEBUG) {
677
			System.out.println("MEDIATEUR - selectionner  Structure");
678
		}
1367 cyprien 679
		Integer seqId = null;
1526 jpm 680
		if (sequenceur != null)	{
1367 cyprien 681
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
682
			vueARafraichir = sequenceur;
683
		}
1763 aurelien 684
		modele.selectionnerStructure(vueARafraichir, structureId, nom, start, nbElements, seqId, searchCity);
1040 gduche 685
	}
686
 
1763 aurelien 687
	public void selectionnerStructureAvecPaginationProgressive(Rafraichissable vueARafraichir, String structureId, String nom, String formatRetour, int start, int nbElements, Sequenceur sequenceur, boolean searchCity) {
1526 jpm 688
		if (Mediateur.DEBUG) {
689
			System.out.println("MEDIATEUR - selectionner  Structure");
690
		}
691
		Integer seqId = null;
692
		if (sequenceur != null)	{
693
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
694
			vueARafraichir = sequenceur;
695
		}
1763 aurelien 696
		modele.selectionnerStructureAvecPaginationProgressive(vueARafraichir, structureId, nom, formatRetour, start, nbElements, seqId, searchCity);
1526 jpm 697
	}
698
 
1802 aurelien 699
 
700
	private void selectionnerCollectionAStructure(Rafraichissable vueARafraichir, String structureId) {
701
		if (Mediateur.DEBUG) {
702
			System.out.println("MEDIATEUR - selectionner  Collection à structure");
703
		}
704
		Integer seqId = null;
705
		if (sequenceur != null)	{
706
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
707
			vueARafraichir = sequenceur;
708
		}
709
		modele.selectionnerCollectionAStructure(vueARafraichir, structureId, 0, 10, seqId);
710
	}
711
 
1367 cyprien 712
	/** AJOUTER **/
769 jpm 713
	public void ajouterStructure(Rafraichissable vueARafraichir, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {
714
		modele.ajouterStructure(vueARafraichir, structure, conservation, valorisation);
447 jp_milcent 715
	}
716
 
1367 cyprien 717
	/** MODIFIER **/
769 jpm 718
	public void modifierStructure(Rafraichissable vueARafraichir, String structureId, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {
719
		modele.modifierStructure(vueARafraichir, structureId, structure, conservation, valorisation);
447 jp_milcent 720
	}
453 jp_milcent 721
 
1367 cyprien 722
	/** SUPPRIMER **/
453 jp_milcent 723
	public void supprimerStructure(Rafraichissable vueARafraichir, String IdentifiantsStructureSepareParVirgule) {
769 jpm 724
		modele.supprimerStructure(vueARafraichir, IdentifiantsStructureSepareParVirgule);
453 jp_milcent 725
	}
726
 
447 jp_milcent 727
	//+----------------------------------------------------------------------------------------------------------------+
728
	// GESTION de la relation STRUCTURE A PERSONNE
1468 jpm 729
 
730
	public void selectionnerStructureAPersonne(Rafraichissable vueARafraichir, String structureId, String roleId, String nom, int start, int nbElements, Sequenceur sequenceur) {
731
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  StructureAPersonne");
732
		Integer seqId = null;
733
		if (sequenceur!=null)	{
734
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
735
			vueARafraichir = sequenceur;
736
		}
737
		modele.selectionnerStructureAPersonne(vueARafraichir, structureId, roleId, nom, start, nbElements, seqId);
738
	}
739
 
1324 gduche 740
	public void selectionnerStructureAPersonne(Rafraichissable vueARafraichir, String structureId, String roleId, Sequenceur sequenceur) {
1367 cyprien 741
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  StructureAPersonne");
1324 gduche 742
		Integer seqId = null;
1367 cyprien 743
		if (sequenceur!=null)	{
1324 gduche 744
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
745
			vueARafraichir = sequenceur;
746
		}
747
		modele.selectionnerStructureAPersonne(vueARafraichir, structureId, roleId, seqId);
447 jp_milcent 748
	}
749
 
1367 cyprien 750
	/** AJOUTER **/
769 jpm 751
	public void ajouterStructureAPersonne(Rafraichissable vueARafraichir, String structureId, StructureAPersonneListe personnelAjoute) {
453 jp_milcent 752
		if (personnelAjoute != null && personnelAjoute.size() > 0) {
753
			for (Iterator<String> it = personnelAjoute.keySet().iterator(); it.hasNext();) {
769 jpm 754
				modele.ajouterStructureAPersonne(vueARafraichir, structureId, (StructureAPersonne) personnelAjoute.get(it.next()));
453 jp_milcent 755
			}
756
		}
757
	}
758
 
1367 cyprien 759
	/** MODIFIER **/
769 jpm 760
	public void modifierStructureAPersonne(Rafraichissable vueARafraichir, StructureAPersonneListe personnelModifie) {
447 jp_milcent 761
		if (personnelModifie != null && personnelModifie.size() > 0) {
762
			for (Iterator<String> it = personnelModifie.keySet().iterator(); it.hasNext();) {
769 jpm 763
				modele.modifierStructureAPersonne(vueARafraichir, (StructureAPersonne) personnelModifie.get(it.next()));
447 jp_milcent 764
			}
765
		}
766
	}
767
 
1367 cyprien 768
	/** SUPPRIMER **/
769 jpm 769
	public void supprimerStructureAPersonne(Rafraichissable vueARafraichir, StructureAPersonneListe personnelSupprime) {
447 jp_milcent 770
		if (personnelSupprime != null && personnelSupprime.size() > 0) {
769 jpm 771
			String idStructureAPersonneSepareParVirgule = "" ;
923 jpm 772
			Iterator<String> it = personnelSupprime.keySet().iterator();
773
			while (it.hasNext()) {
901 jpm 774
				idStructureAPersonneSepareParVirgule += personnelSupprime.get(it.next()).getId();
923 jpm 775
				idStructureAPersonneSepareParVirgule += (it.hasNext()) ? "," : "";
447 jp_milcent 776
			}
923 jpm 777
			supprimerStructureAPersonne(vueARafraichir, idStructureAPersonneSepareParVirgule);
447 jp_milcent 778
		}
779
	}
923 jpm 780
 
781
	public void supprimerStructureAPersonne(Rafraichissable vueARafraichir, String idStructureAPersonneSeparesParVirgule) {
782
		modele.supprimerStructureAPersonne(vueARafraichir, idStructureAPersonneSeparesParVirgule);
783
	}
784
 
785
	public void supprimerStructureAPersonne(final Rafraichissable vueARafraichir, final List<Structure> structuresListe) {
786
		if (structuresListe.size() != 0) {
787
			String idStructureSepareParVirgule = "" ;
788
			Iterator<Structure> it = structuresListe.iterator();
789
			while (it.hasNext()) {
790
				Structure structure = it.next();
791
				idStructureSepareParVirgule += structure.getId();
792
				idStructureSepareParVirgule += it.hasNext() ? "," : "";
793
			}
794
			supprimerStructureAPersonne(vueARafraichir, idStructureSepareParVirgule);
795
		}
796
	}
797
 
447 jp_milcent 798
	//+----------------------------------------------------------------------------------------------------------------+
799
	//												GESTION des COLLECTIONS
800
	//+----------------------------------------------------------------------------------------------------------------+
801
 
453 jp_milcent 802
	public void afficherListeCollections(CollectionListe collectionsACharger) {
646 jp_milcent 803
		if (!(panneauCentre.getContenu() instanceof CollectionVue)) {
626 gduche 804
			panneauCentre.removeAll();
646 jp_milcent 805
			panneauCentre.add(new CollectionVue(this));
806
		}
626 gduche 807
 
646 jp_milcent 808
		panneauCentre.getContenu().rafraichir(collectionsACharger);
453 jp_milcent 809
	}
810
 
641 jp_milcent 811
	public void afficherFormCollection(String collectionId) {
1613 aurelien 812
		final FenetreForm fenetre = new FenetreForm("");
813
		CollectionForm collectionForm = new CollectionForm(this, collectionId)  {
814
			@Override
815
			public void surFermetureFormulaire() {
816
				fenetre.hide();
817
			}
818
		};
819
		collectionForm.vueExterneARafraichirApresValidation = panneauCentre.getContenu();
820
		fenetre.add(collectionForm);
821
		fenetre.show();
641 jp_milcent 822
	}
823
 
453 jp_milcent 824
	public void clicListeCollection(Collection collectionCliquee) {
646 jp_milcent 825
		panneauCentre.getContenu().rafraichir(collectionCliquee);
883 jpm 826
		if (collectionCliquee != null) {
1468 jpm 827
			selectionnerCollectionAPersonne(panneauCentre.getContenu(), collectionCliquee.getId(), null, sequenceur);
828
			selectionnerCollectionAPublication(panneauCentre.getContenu(), collectionCliquee.getId(), sequenceur);
829
			selectionnerCollectionACommentaire(panneauCentre.getContenu(), collectionCliquee.getId(), sequenceur);
883 jpm 830
		}
453 jp_milcent 831
	}
832
 
447 jp_milcent 833
	public void clicAjouterCollection() {
775 jpm 834
		afficherFormCollection(null);
447 jp_milcent 835
	}
836
 
837
	public void clicModifierCollection(List<Collection> selection) {
641 jp_milcent 838
		if (selection.size() == 0) {
1210 cyprien 839
			InfoLogger.display("Information", "Veuillez sélectionner une collection.");
641 jp_milcent 840
		} else if (selection.size() > 1) {
1210 cyprien 841
			InfoLogger.display("Information", "Veuillez sélectionner une seule collection à la fois.");
641 jp_milcent 842
		} else if (selection.size() == 1) {
843
			afficherFormCollection(selection.get(0).getId());
844
		} else {
1210 cyprien 845
			InfoLogger.display("Erreur", "Une erreur est survenue dans la méthode clicModifierCollection() du Médiateur.");
641 jp_milcent 846
		}
447 jp_milcent 847
	}
848
 
968 jpm 849
	public void clicSupprimerCollection(CollectionListeVue collectionListeVue, final List<Collection> collectionsASupprimer) {
850
		if (collectionsASupprimer.size() <= 0) {
851
			MessageBox.alert("Attention", "Vous devez sélectionner au moins une collection", null);
852
		} else {
853
			String message = "Voulez-vous vraiment supprimer ces collections ?";
854
			if (collectionsASupprimer.size() == 1) {
855
				message = "Voulez-vous vraiment supprimer cette collection ?";
856
			}
857
 
858
			final Listener<MessageBoxEvent> listenerSuppression = new Listener<MessageBoxEvent>() {
859
				public void handleEvent(MessageBoxEvent ce) {
860
					Dialog dialog = (Dialog) ce.getComponent();
861
				    Button btn = ce.getButtonClicked();
862
 
1680 raphael 863
				    if (btn.getHtml().equals(dialog.yesText)) {
968 jpm 864
				    	supprimerCollection(panneauCentre.getContenu(), collectionsASupprimer);
865
				    }
866
				}
867
			};
868
 
869
			MessageBox.confirm("Supprimer une collection", message, listenerSuppression);
870
		}
447 jp_milcent 871
	}
872
 
1367 cyprien 873
	/** Cette méthode est un "wrapper" **/
874
	public void selectionnerCollection(Rafraichissable vueARafraichir, String collectionId, String nom, Sequenceur sequenceur) {
875
		selectionnerCollection(vueARafraichir, collectionId, nom, 0, nbElements, sequenceur);
453 jp_milcent 876
	}
877
 
1367 cyprien 878
	public void selectionnerCollection(Rafraichissable vueARafraichir, String collectionId, String nom, int start, int nbElements, Sequenceur sequenceur)	{
879
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Collection");
880
		Integer seqId = null;
881
		if (sequenceur!=null)	{
882
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
883
			vueARafraichir = sequenceur;
884
		}
1763 aurelien 885
		modele.selectionnerCollection(vueARafraichir, collectionId, nom, start, nbElements, seqId);
1041 gduche 886
	}
887
 
1329 cyprien 888
	/****************************************************************************************************
889
	/** selectionnerCollection(Rafraichissable vueARafraichir, String recherche, int start, int nbElements)
890
	/****************************************************************************************************
891
	 * Action :
892
	 * --------
893
	 * -	Récupère un nombre défini de collections en s'aidant du nom partiel ou complet de la collection.
894
	 *
895
	 * Description des paramètres :
896
	 * ----------------------------
897
	 *  -	'vueARafraichir' référence l'objet à mettre à jour après réception des données.
898
	 *  -	'recherche' est une chaîne de caractères représentant tout ou partie du nom d'une collection.
899
	 *  		Si la chaîne est vide, alors toutes les collections sont recherchées.
900
	 *  -	'start' et 'nbElements' sont les paramètres indispensables à la pagination. 'start'
901
	 *  		est le paramètre qui décrit le numéro du tuple de départ et 'nbElements' le nombre
902
	 *  		d'éléments à collecter.
903
	 *
904
	 * Préconditions :
905
	 * ---------------
906
	 *  -	'vueARafraichir' doit être non NULL et référencer un objet implémentant l'interface
907
	 *  		'Rafraichissable'
908
	 *  -	'recherche' doit être non NULL.
909
	 *  -	'start' doit être supérieur ou égal à zéro. 'nbElements' doit être supérieur à zéro.
910
	 *
911
	 *****************************************************************************************************/
1367 cyprien 912
	public void selectionnerCollection(Rafraichissable vueARafraichir, String recherche, int start, int nbElements, Sequenceur sequenceur)	{
913
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Collection");
914
		Integer seqId = null;
915
		if (sequenceur!=null)	{
916
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
917
			vueARafraichir = sequenceur;
918
		}
919
		modele.selectionnerCollection(vueARafraichir, recherche, start, nbElements, seqId);
1428 cyprien 920
	}
1329 cyprien 921
 
1367 cyprien 922
	/** AJOUTER **/
453 jp_milcent 923
	public void ajouterCollection(Rafraichissable vueARafraichir, Collection collection) {
968 jpm 924
		modele.ajouterCollection(vueARafraichir, collection);
453 jp_milcent 925
	}
926
 
1367 cyprien 927
	/** MODIFIER **/
453 jp_milcent 928
	public void modifierCollection(Rafraichissable vueARafraichir, Collection collection) {
872 jpm 929
		modele.modifierCollection(vueARafraichir, collection);
453 jp_milcent 930
	}
931
 
1367 cyprien 932
	/** SUPPRIMER **/
968 jpm 933
	public void supprimerCollection(Rafraichissable vueARafraichir, List<Collection> collectionsListe) {
934
		if (collectionsListe != null && collectionsListe.size() > 0) {
935
			String idCollectionSeparesParVirgule = "" ;
936
			Iterator<Collection> it = collectionsListe.iterator();
937
			while (it.hasNext()) {
938
				idCollectionSeparesParVirgule += it.next().getId();
939
				if (it.hasNext()) {
940
					idCollectionSeparesParVirgule += ",";
941
				}
942
			}
943
			modele.supprimerCollection(vueARafraichir, idCollectionSeparesParVirgule);
944
			modele.supprimerCollectionAPersonne(vueARafraichir, idCollectionSeparesParVirgule);
945
			modele.supprimerCollectionAPublication(vueARafraichir, idCollectionSeparesParVirgule);
946
			//modele.supprimerCollectionACommentaire(vueARafraichir, idCollectionSeparesParVirgule);
947
		}
948
 
453 jp_milcent 949
	}
950
 
447 jp_milcent 951
	//+----------------------------------------------------------------------------------------------------------------+
875 jpm 952
	// GESTION de la relation COLLECTION A PERSONNE
953
 
1468 jpm 954
	public void selectionnerCollectionAPersonne(Rafraichissable vueARafraichir, String collectionId, String roleId, String recherche, int start, int nbElements, Sequenceur sequenceur)	{
955
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  CollectionAPersonne");
956
		Integer seqId = null;
957
		if (sequenceur!=null)	{
958
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
959
			vueARafraichir = sequenceur;
960
		}
961
		modele.selectionnerCollectionAPersonne(vueARafraichir, collectionId, roleId, recherche, start, nbElements, seqId);
962
	}
963
 
1367 cyprien 964
	public void selectionnerCollectionAPersonne(Rafraichissable vueARafraichir, String collectionId, String roleId, Sequenceur sequenceur) {
965
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  CollectionAPersonne");
966
		Integer seqId = null;
967
		if (sequenceur!=null)	{
968
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
969
			vueARafraichir = sequenceur;
970
		}
971
		modele.selectionnerCollectionAPersonne(vueARafraichir, collectionId, roleId, seqId);
875 jpm 972
	}
973
 
1367 cyprien 974
	/** AJOUTER **/
875 jpm 975
	public void ajouterCollectionAPersonne(Rafraichissable vueARafraichir, String collectionId, CollectionAPersonneListe personnesAjoutees) {
976
		if (personnesAjoutees != null && personnesAjoutees.size() > 0) {
977
			for (Iterator<String> it = personnesAjoutees.keySet().iterator(); it.hasNext();) {
978
				modele.ajouterCollectionAPersonne(vueARafraichir, collectionId, (CollectionAPersonne) personnesAjoutees.get(it.next()));
979
			}
980
		}
981
	}
982
 
1367 cyprien 983
	/** MODIFIER **/
875 jpm 984
	public void modifierCollectionAPersonne(Rafraichissable vueARafraichir, CollectionAPersonneListe personnesModifiees) {
985
		if (personnesModifiees != null && personnesModifiees.size() > 0) {
986
			for (Iterator<String> it = personnesModifiees.keySet().iterator(); it.hasNext();) {
987
				modele.modifierCollectionAPersonne(vueARafraichir, (CollectionAPersonne) personnesModifiees.get(it.next()));
988
			}
989
		}
990
	}
991
 
1367 cyprien 992
	/** SUPPRIMER **/
875 jpm 993
	public void supprimerCollectionAPersonne(Rafraichissable vueARafraichir, CollectionAPersonneListe personnesSupprimees) {
994
		if (personnesSupprimees != null && personnesSupprimees.size() > 0) {
995
			String idCollectionAPersonneSeparesParVirgule = "" ;
996
			for (Iterator<String> it = personnesSupprimees.keySet().iterator(); it.hasNext();) {
901 jpm 997
				idCollectionAPersonneSeparesParVirgule += personnesSupprimees.get(it.next()).getId();
998
				if (it.hasNext()) {
999
					idCollectionAPersonneSeparesParVirgule += ",";
1000
				}
875 jpm 1001
			}
1002
			modele.supprimerCollectionAPersonne(vueARafraichir, idCollectionAPersonneSeparesParVirgule);
1003
		}
1004
	}
1005
 
1006
	//+----------------------------------------------------------------------------------------------------------------+
1007
	// GESTION de la relation COLLECTION A PUBLICATION
1008
 
1513 jpm 1009
	public void selectionnerCollectionAPublication(Rafraichissable vueARafraichir, String collectionId, String recherche, int start, int nbElements, Sequenceur sequenceur)	{
1010
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  CollectionAPublication");
1011
		Integer seqId = null;
1012
		if (sequenceur!=null)	{
1013
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1014
			vueARafraichir = sequenceur;
1015
		}
1016
		modele.selectionnerCollectionAPublication(vueARafraichir, collectionId, recherche, start, nbElements, seqId);
1017
	}
1018
 
1367 cyprien 1019
	public void selectionnerCollectionAPublication(Rafraichissable vueARafraichir, String collectionId, Sequenceur sequenceur) {
1020
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  CollectionAPublication");
1021
		Integer seqId = null;
1022
		if (sequenceur!=null)	{
1023
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1024
			vueARafraichir = sequenceur;
1025
		}
1026
		modele.selectionnerCollectionAPublication(vueARafraichir, collectionId, seqId);
883 jpm 1027
	}
1028
 
1029
	public void ajouterCollectionAPublication(Rafraichissable vueARafraichir, String collectionId, CollectionAPublicationListe publicationsAjoutees) {
1030
		if (publicationsAjoutees != null && publicationsAjoutees.size() > 0) {
1031
			for (Iterator<String> it = publicationsAjoutees.keySet().iterator(); it.hasNext();) {
1032
				modele.ajouterCollectionAPublication(vueARafraichir, collectionId, (CollectionAPublication) publicationsAjoutees.get(it.next()));
1033
			}
1034
		}
1035
	}
1036
 
1037
	public void modifierCollectionAPublication(Rafraichissable vueARafraichir, CollectionAPublicationListe publicationsModifiees) {
1038
		if (publicationsModifiees != null && publicationsModifiees.size() > 0) {
1039
			for (Iterator<String> it = publicationsModifiees.keySet().iterator(); it.hasNext();) {
1040
				modele.modifierCollectionAPublication(vueARafraichir, (CollectionAPublication) publicationsModifiees.get(it.next()));
1041
			}
1042
		}
1043
	}
1044
 
907 jpm 1045
	public void supprimerCollectionAPublication(Rafraichissable vueARafraichir, CollectionAPublicationListe publicationsSupprimees) {
883 jpm 1046
		if (publicationsSupprimees != null && publicationsSupprimees.size() > 0) {
1047
			String idCollectionAPublicationSeparesParVirgule = "" ;
1048
			for (Iterator<String> it = publicationsSupprimees.keySet().iterator(); it.hasNext();) {
901 jpm 1049
				idCollectionAPublicationSeparesParVirgule += publicationsSupprimees.get(it.next()).getId();
1050
				if (it.hasNext()) {
1051
					idCollectionAPublicationSeparesParVirgule += ",";
1052
				}
883 jpm 1053
			}
1054
			modele.supprimerCollectionAPublication(vueARafraichir, idCollectionAPublicationSeparesParVirgule);
1055
		}
1056
	}
941 jpm 1057
 
875 jpm 1058
	//+----------------------------------------------------------------------------------------------------------------+
1059
	// GESTION de la relation COLLECTION A COMMENTAIRE
1060
 
1367 cyprien 1061
	public void selectionnerCollectionACommentaire(Rafraichissable vueARafraichir, String collectionId, Sequenceur sequenceur) {
1062
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  CollectionACommentaire");
1063
		Integer seqId = null;
1064
		if (sequenceur!=null)	{
1065
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1066
			vueARafraichir = sequenceur;
1067
		}
1068
		modele.selectionnerCollectionACommentaire(vueARafraichir, collectionId, seqId);
989 jpm 1069
	}
1070
 
1513 jpm 1071
	public void selectionnerCollectionACommentaire(Rafraichissable vueARafraichir, String collectionId, String recherche, int pageCourante, int nbElements, Sequenceur sequenceur) {
1072
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner CollectionACommentaire");
1073
		Integer seqId = null;
1074
		if (sequenceur != null)	{
1075
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1076
			vueARafraichir = sequenceur;
1077
		}
1078
		modele.selectionnerCollectionACommentaire(vueARafraichir, collectionId, recherche, pageCourante, nbElements, seqId);
1079
	}
1080
 
1367 cyprien 1081
	/** AJOUTER **/
997 jpm 1082
	public void ajouterCollectionACommentaire(Rafraichissable vueARafraichir, String collectionId, CollectionACommentaireListe commentairesAjoutees) {
989 jpm 1083
		if (commentairesAjoutees != null && commentairesAjoutees.size() > 0) {
1084
			for (Iterator<String> it = commentairesAjoutees.keySet().iterator(); it.hasNext();) {
997 jpm 1085
				modele.ajouterCollectionACommentaire(vueARafraichir, collectionId, (CollectionACommentaire) commentairesAjoutees.get(it.next()));
989 jpm 1086
			}
1087
		}
1088
	}
1089
 
1367 cyprien 1090
	/** MODIFIER **/
989 jpm 1091
	public void modifierCollectionACommentaire(Rafraichissable vueARafraichir, CollectionACommentaireListe commentairesModifiees) {
1092
		if (commentairesModifiees != null && commentairesModifiees.size() > 0) {
1093
			for (Iterator<String> it = commentairesModifiees.keySet().iterator(); it.hasNext();) {
1094
				modele.modifierCollectionACommentaire(vueARafraichir, (CollectionACommentaire) commentairesModifiees.get(it.next()));
1095
			}
1096
		}
1097
	}
1098
 
1367 cyprien 1099
	/** SUPPRIMER **/
989 jpm 1100
	public void supprimerCollectionACommentaire(Rafraichissable vueARafraichir, CollectionACommentaireListe commentairesSupprimees) {
1101
		if (commentairesSupprimees != null && commentairesSupprimees.size() > 0) {
1102
			String idCollectionACommentaireSeparesParVirgule = "" ;
1103
			for (Iterator<String> it = commentairesSupprimees.keySet().iterator(); it.hasNext();) {
1104
				idCollectionACommentaireSeparesParVirgule += commentairesSupprimees.get(it.next()).getId();
1105
				if (it.hasNext()) {
1106
					idCollectionACommentaireSeparesParVirgule += ",";
1107
				}
1108
			}
1109
			modele.supprimerCollectionACommentaire(vueARafraichir, idCollectionACommentaireSeparesParVirgule, CollectionACommentaireAsyncDao.SUPPRESSION_PAR_COLLECTION);
1110
		}
1111
	}
875 jpm 1112
	//+----------------------------------------------------------------------------------------------------------------+
156 jp_milcent 1113
	//												GESTION DES PERSONNES
1114
	//+----------------------------------------------------------------------------------------------------------------+
1115
 
278 jp_milcent 1116
	public void afficherListePersonnes(PersonneListe personnesACharger)	{
646 jp_milcent 1117
		if (!(panneauCentre.getContenu() instanceof PersonneVue))	{
626 gduche 1118
			panneauCentre.removeAll();
646 jp_milcent 1119
			panneauCentre.add(new PersonneVue(this));
673 aurelien 1120
			panneauCentre.setId(ComposantId.PANNEAU_PERSONNE_LISTES);
626 gduche 1121
		}
599 gduche 1122
 
646 jp_milcent 1123
		panneauCentre.getContenu().rafraichir(personnesACharger);
156 jp_milcent 1124
	}
918 jpm 1125
 
1613 aurelien 1126
	public void afficherFormPersonne(String personneId)	{
1127
		final FenetreForm fenetre = new FenetreForm("");
1128
		PersonneForm personneForm = new PersonneForm(this, personneId)  {
1129
			@Override
1130
			public void surFermetureFormulaire() {
1131
				fenetre.hide();
1132
			}
1133
		};
1134
		personneForm.vueExterneARafraichirApresValidation = panneauCentre.getContenu();
1135
		fenetre.add(personneForm);
1136
		fenetre.show();
918 jpm 1137
	}
156 jp_milcent 1138
 
918 jpm 1139
	public void clicListePersonne(Personne personne)	{
1140
		panneauCentre.getContenu().rafraichir(personne);
1141
	}
1142
 
128 gduche 1143
	public void clicAjouterPersonne()	{
918 jpm 1144
		afficherFormPersonne(null);
128 gduche 1145
	}
1146
 
918 jpm 1147
	public void clicModifierPersonne(List<Personne> selection)	{
1148
		if (selection.size() == 0) {
1210 cyprien 1149
			InfoLogger.display("Information", "Veuillez sélectionner une personne.");
918 jpm 1150
		} else if (selection.size() > 1) {
1210 cyprien 1151
			InfoLogger.display("Information", "Veuillez sélectionner une seule personne à la fois.");
918 jpm 1152
		} else if (selection.size() == 1) {
1153
			afficherFormPersonne(selection.get(0).getId());
1154
		} else {
1210 cyprien 1155
			InfoLogger.display("Erreur", "Une erreur est survenue dans la méthode clicModifierPersonne() du Médiateur.");
918 jpm 1156
		}
841 gduche 1157
	}
1158
 
285 gduche 1159
 
919 jpm 1160
	public void clicSupprimerPersonne(final Rafraichissable vue, final List<Personne> personneSelection) {
663 gduche 1161
		//Empecher suppression utilisateur
1162
		for (int i=0; i < personneSelection.size(); i++)	{
1163
			Personne courante = personneSelection.get(i);
1164
			if (courante.getId().equals(getUtilisateurId()))	{
1210 cyprien 1165
				InfoLogger.display("Information", "Vous ne pouvez pas supprimer votre compte");
663 gduche 1166
				personneSelection.remove(courante);
1167
			}
1168
		}
1169
 
245 jp_milcent 1170
		if (personneSelection.size() == 0) {
1210 cyprien 1171
			InfoLogger.display("Information", "Veuillez sélectionner une personne.");
245 jp_milcent 1172
		} else if(personneSelection.size() > 0) {
1173
			String message = "Êtes vous sur de vouloir supprimer les personnes sélectionnées ?";
1174
			if (personneSelection.size() == 1) {
1175
				message = "Êtes vous sur de vouloir supprimer la personne sélectionnée ?";
1176
			}
315 gduche 1177
 
502 gduche 1178
			final Listener<MessageBoxEvent> listenerSuppression = new Listener<MessageBoxEvent>() {
1179
				public void handleEvent(MessageBoxEvent ce) {
1180
					Dialog dialog = (Dialog) ce.getComponent();
1181
					Button btn = ce.getButtonClicked();
327 jp_milcent 1182
 
1680 raphael 1183
					if (btn.getHtml().equals(dialog.yesText)) {
772 jpm 1184
						String idPersonneSepareParVirgule = "" ;
347 gduche 1185
						Iterator<Personne> itPersonne = personneSelection.iterator();
1186
						while (itPersonne.hasNext()) {
1187
							Personne personneCourante = itPersonne.next();
772 jpm 1188
							idPersonneSepareParVirgule += personneCourante.getId();
1189
							idPersonneSepareParVirgule +=",";
327 jp_milcent 1190
						}
772 jpm 1191
						modele.supprimerPersonne(vue, idPersonneSepareParVirgule);
327 jp_milcent 1192
					}
1193
				}
1194
			};
453 jp_milcent 1195
 
315 gduche 1196
			MessageBox.confirm("Supprimer une personne", message, listenerSuppression);
245 jp_milcent 1197
		} else {
1210 cyprien 1198
			InfoLogger.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerPersonne() du Médiateur.");
245 jp_milcent 1199
		}
1200
	}
277 jp_milcent 1201
 
1329 cyprien 1202
	/****************************************************************************************************
1203
	/** selectionnerPersonne(Rafraichissable vueARafraichir, String recherche, int start, int nbElements)
1204
	/****************************************************************************************************
1205
	 * Action :
1206
	 * --------
1207
	 * -	Récupère un nombre défini de personnes en s'aidant du nom partiel ou complet de la personne.
1208
	 *
1209
	 * Description des paramètres :
1210
	 * ----------------------------
1211
	 *  -	'vueARafraichir' référence l'objet à mettre à jour après réception des données.
1212
	 *  -	'recherche' est une chaîne de caractères représentant tout ou partie du nom d'une personne.
1213
	 *  		Si la chaîne est vide, alors toutes les personnes sont recherchées.
1214
	 *  -	'start' et 'nbElements' sont les paramètres indispensables à la pagination. 'start'
1215
	 *  		est le paramètre qui décrit le numéro du tuple de départ et 'nbElements' le nombre
1216
	 *  		d'éléments à collecter.
1217
	 *
1218
	 * Préconditions :
1219
	 * ---------------
1220
	 *  -	'vueARafraichir' doit être non NULL et référencer un objet implémentant l'interface
1221
	 *  		'Rafraichissable'
1222
	 *  -	'recherche' doit être non NULL.
1223
	 *  -	'start' doit être supérieur ou égal à zéro. 'nbElements' doit être supérieur à zéro.
1224
	 *
1225
	 *****************************************************************************************************/
1367 cyprien 1226
	public void selectionnerPersonne(Rafraichissable vueARafraichir, String recherche, int start, int nbElements, Sequenceur sequenceur) {
1227
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Personne");
1228
		Integer seqId = null;
1229
		if (sequenceur!=null)	{
1230
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1231
			vueARafraichir = sequenceur;
1232
		}
1233
		modele.selectionnerPersonne(vueARafraichir, recherche, start, nbElements, seqId);
1329 cyprien 1234
	}
775 jpm 1235
 
1763 aurelien 1236
	public void selectionnerPersonne(Rafraichissable vueARafraichir, Personne personne, int start, int nbElements, Sequenceur sequenceur)	{
1367 cyprien 1237
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Personne");
1324 gduche 1238
		Integer seqId = null;
1239
		if (sequenceur!=null)	{
1240
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1241
			vueARafraichir = sequenceur;
1242
		}
1243
		String personneId = null;
1244
		String personneNom = null;
1245
		if (personne != null)	{
1246
			personneId = personne.getId();
1247
			personneNom = personne.getNom();
1248
		}
1763 aurelien 1249
		modele.selectionnerPersonne(vueARafraichir, personneId, personneNom, start, nbElements, seqId);
1324 gduche 1250
	}
1251
 
1428 cyprien 1252
	public void selectionnerPersonne(Rafraichissable vueARafraichir, String idPersonne, Sequenceur sequenceur)	{
1253
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Personne");
1254
		Integer seqId = null;
1255
		if (sequenceur!=null)	{
1256
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1257
			vueARafraichir = sequenceur;
1258
		}
1763 aurelien 1259
		modele.selectionnerPersonne(vueARafraichir, idPersonne, null, 0, nbElements, seqId);
1428 cyprien 1260
	}
1261
 
1763 aurelien 1262
	public void selectionnerPersonneParNomComplet(Rafraichissable vueARafraichir, String nomComplet, Sequenceur sequenceur) {
1367 cyprien 1263
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Personne");
1264
		Integer seqId = null;
1265
		if (sequenceur!=null)	{
1266
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1267
			vueARafraichir = sequenceur;
775 jpm 1268
		}
1763 aurelien 1269
		modele.selectionnerPersonne(vueARafraichir, null, nomComplet, 0, -1, seqId);
775 jpm 1270
	}
1271
 
1367 cyprien 1272
	/** ENREGISTRER **/
389 gduche 1273
	public void enregistrerPersonne(Rafraichissable vue, Personne personne){
774 jpm 1274
		if (personne.getId() != null && !personne.getId().trim().equals("")) {
429 gduche 1275
			modele.modifierPersonne(vue, personne);
1276
		}	else {
1324 gduche 1277
			modele.ajouterPersonne(vue, personne);
429 gduche 1278
		}
389 gduche 1279
	}
1280
 
156 jp_milcent 1281
	//+----------------------------------------------------------------------------------------------------------------+
1282
	//												GESTION DES PUBLICATIONS
1283
	//+----------------------------------------------------------------------------------------------------------------+
1284
 
107 aurelien 1285
	public void afficherListePublication(PublicationListe nouvelleDonnees) {
673 aurelien 1286
		if (!(panneauCentre.getContenu() instanceof PublicationVue))	{
626 gduche 1287
			panneauCentre.removeAll();
918 jpm 1288
			panneauCentre.add(new PublicationVue(this));
626 gduche 1289
		}
1290
 
646 jp_milcent 1291
		panneauCentre.getContenu().rafraichir(nouvelleDonnees);
107 aurelien 1292
	}
715 aurelien 1293
 
775 jpm 1294
	public void afficherFormPublication(String publicationId) {
1613 aurelien 1295
		final FenetreForm fenetre = new FenetreForm("");
1296
		PublicationForm publicationForm = new PublicationForm(this, publicationId) {
1297
			@Override
1298
			public void surFermetureFormulaire()  {
1299
				fenetre.hide();
1300
			}
1301
		};
1302
		publicationForm.vueExterneARafraichirApresValidation = panneauCentre.getContenu();
1303
		fenetre.add(publicationForm);
1304
		fenetre.show();
715 aurelien 1305
	}
775 jpm 1306
 
107 aurelien 1307
	public void clicListePublication(Publication publication) {
775 jpm 1308
		if (publication != null) {
675 aurelien 1309
			panneauCentre.getContenu().rafraichir(publication);
1310
		}
107 aurelien 1311
	}
1312
 
1313
	public void clicAjouterPublication() {
775 jpm 1314
		afficherFormPublication(null);
107 aurelien 1315
	}
156 jp_milcent 1316
 
775 jpm 1317
	public void clicModifierPublication(List<Publication> selection) {
1318
		if (selection.size() == 0) {
1210 cyprien 1319
			InfoLogger.display("Information", "Veuillez sélectionner une publication.");
775 jpm 1320
		} else if (selection.size() > 1) {
1210 cyprien 1321
			InfoLogger.display("Information", "Veuillez sélectionner une seule publication à la fois.");
775 jpm 1322
		} else if (selection.size() == 1) {
1323
			afficherFormPublication(selection.get(0).getId());
379 jp_milcent 1324
		} else {
1210 cyprien 1325
			InfoLogger.display("Erreur", "Une erreur est survenue dans la méthode clicModifierPublication() du Médiateur.");
245 jp_milcent 1326
		}
1327
	}
1328
 
315 gduche 1329
	public void clicSupprimerPublication(final List<Publication> publicationListe) {
453 jp_milcent 1330
		if (publicationListe.size() <= 0) {
315 gduche 1331
			MessageBox.alert("Attention", "Vous devez sélectionner une publication", null);
379 jp_milcent 1332
		} else {
1607 aurelien 1333
			String messageComplement = "(ceci supprimera également les liens avec leurs auteurs et leurs collections)";
1606 aurelien 1334
			String message = "Voulez-vous vraiment supprimer ces publications "+messageComplement+" ?";
775 jpm 1335
			if (publicationListe.size() == 1) {
1606 aurelien 1336
				message = "Voulez-vous vraiment supprimer cette publication "+messageComplement+" ?";
245 jp_milcent 1337
			}
315 gduche 1338
 
502 gduche 1339
			final Listener<MessageBoxEvent> listenerSuppression = new Listener<MessageBoxEvent>() {
1340
				public void handleEvent(MessageBoxEvent ce) {
1341
					Dialog dialog = (Dialog) ce.getComponent();
1342
				    Button btn = ce.getButtonClicked();
315 gduche 1343
 
1680 raphael 1344
				    if (btn.getHtml().equals(dialog.yesText)) {
919 jpm 1345
				    	supprimerPublication(panneauCentre.getContenu(), publicationListe);
315 gduche 1346
				    }
1347
				}
1348
			};
1349
 
1350
			MessageBox.confirm("Supprimer une publication", message, listenerSuppression);
245 jp_milcent 1351
		}
1352
	}
709 jp_milcent 1353
 
1367 cyprien 1354
	/** Cette méthode est un "wrapper" */
1324 gduche 1355
	public void selectionnerPublication(Rafraichissable vueARafraichir, String publicationId, Sequenceur sequenceur) {
1763 aurelien 1356
		selectionnerPublication(vueARafraichir, publicationId, null, 0, nbElements, sequenceur);
709 jp_milcent 1357
	}
1358
 
1367 cyprien 1359
	/** Cette méthode est un "wrapper" */
1763 aurelien 1360
	public void selectionnerPublicationParNomComplet(Rafraichissable vueARafraichir, String nomComplet) {
1361
		selectionnerPublication(vueARafraichir, null, nomComplet, 0, nbElements, null);
709 jp_milcent 1362
	}
1363
 
1763 aurelien 1364
	public void selectionnerPublication(Rafraichissable vueARafraichir, String publicationId, String nomComplet, int pageCourante, int nbElements, Sequenceur sequenceur) {
1367 cyprien 1365
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Publication");
1366
		Integer seqId = null;
1367
		if (sequenceur!=null)	{
1368
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1369
			vueARafraichir = sequenceur;
1370
		}
1763 aurelien 1371
		modele.selectionnerPublication(vueARafraichir, publicationId, nomComplet, pageCourante, nbElements, seqId);
1046 gduche 1372
	}
1367 cyprien 1373
 
1513 jpm 1374
	public void selectionnerPublication(Rafraichissable vueARafraichir, String recherche, int start, int nbElements, Sequenceur sequenceur) {
1375
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Publication");
1376
		Integer seqId = null;
1377
		if (sequenceur!=null)	{
1378
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1379
			vueARafraichir = sequenceur;
1380
		}
1381
		modele.selectionnerPublication(vueARafraichir, recherche, start, nbElements, seqId);
1382
	}
1383
 
1367 cyprien 1384
	/** AJOUTER **/
1324 gduche 1385
	public void ajouterPublication(Rafraichissable vueARafraichir, Publication publication, Integer seqId) {
1386
		modele.ajouterPublication(vueARafraichir, publication, seqId);
245 jp_milcent 1387
	}
1388
 
1367 cyprien 1389
	/** MODIFIER **/
1324 gduche 1390
	public void modifierPublication(Rafraichissable vueARafraichir, Publication publication, Integer seqId) {
1391
		modele.modifierPublication(vueARafraichir, publication, seqId);
245 jp_milcent 1392
	}
919 jpm 1393
 
1367 cyprien 1394
	/** SUPPRIMER **/
1324 gduche 1395
	public void supprimerPublication(Rafraichissable vueARafraichir, List<Publication> publicationsListe) {
919 jpm 1396
		if (publicationsListe != null && publicationsListe.size() > 0) {
1397
			String idPublicationSeparesParVirgule = "" ;
1398
			Iterator<Publication> it = publicationsListe.iterator();
1399
			while (it.hasNext()) {
1400
				idPublicationSeparesParVirgule += it.next().getId();
1401
				if (it.hasNext()) {
1402
					idPublicationSeparesParVirgule += ",";
1403
				}
1404
			}
1405
			modele.supprimerPublication(vueARafraichir, idPublicationSeparesParVirgule);
1406
		}
1407
	}
245 jp_milcent 1408
 
1860 aurelien 1409
	public void clicImporterPublication(final PublicationListeVue publiListeVue) {
1410
		final FenetreForm fenetre = new FenetreForm(Mediateur.i18nC.importDePubli());
1411
		fenetre.add(new PublicationImportForm(this) {
1412
 
1413
			@Override
1414
			public void surSoumissionFormulaire(SubmitEvent event) {
1415
				afficherPopinChargement();
1416
			}
1417
 
1418
			@Override
1863 aurelien 1419
			public void surFormulaireEnvoye(JSONValue responseValue) {
1420
				traiterRetourImportFormulaire(responseValue);
1421
				publiListeVue.afficherDernierePage();
1422
				fenetre.hide();
1860 aurelien 1423
			}
1424
 
1425
			@Override
1426
			public void surClicAnnuler() {
1427
				fenetre.hide();
1428
			}
1429
		});
1430
		fenetre.setTailleFenetre(75, 300);
1431
		fenetre.show();
1432
	}
1433
 
1863 aurelien 1434
	private void traiterRetourImportFormulaire(JSONValue responseValue) {
1435
		String message = "";
1436
 
1437
		if(PublicationAsyncDao.importEstUnSucces(responseValue)) {
1438
			String nbPubliImportee = PublicationAsyncDao.getNbPublisImportees(responseValue);
1439
			int nbPublint = Integer.parseInt(nbPubliImportee);
1440
			message = (nbPublint == 1) ? i18nM.retourSuccesImportPublication(nbPubliImportee) :
1441
										 i18nM.retourSuccesImportPublicationPluriel(nbPubliImportee);
1442
 
1443
			// Tri artificiel par id de publications pour voir apparaître ce qui vient d'être importé
1444
			PublicationAsyncDao.tri = "cpu_id_publication";
1445
		} else {
1446
			message = i18nM.retourEchecImportPublication(PublicationAsyncDao.getErreursImport(responseValue));
1447
		}
1448
		Window.alert(message);
1449
		masquerPopinChargement();
1450
	}
1451
 
156 jp_milcent 1452
	//+----------------------------------------------------------------------------------------------------------------+
822 jpm 1453
	// GESTION de la relation PUBLICATION A PERSONNE
1454
 
1324 gduche 1455
	public void selectionnerPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, String roleId, Sequenceur sequenceur) {
1367 cyprien 1456
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  PublicationAPersonne");
1324 gduche 1457
		Integer seqId = null;
1458
		if (sequenceur != null)	{
1459
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1460
			vueARafraichir = sequenceur;
1461
		}
1462
		modele.selectionPublicationAPersonne(vueARafraichir, publicationId, personnesId, roleId, seqId);
822 jpm 1463
	}
1464
 
1367 cyprien 1465
	public void selectionnerPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, String personnesId, List<Valeur> roleId, Sequenceur sequenceur) {
1466
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  PublicationAPersonne");
1467
		Integer seqId = null;
1468
		if (sequenceur != null)	{
1469
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1470
			vueARafraichir = sequenceur;
1471
		}
1472
 
1014 gduche 1473
		String roleIds = "";
1474
		Iterator<Valeur> itRole = roleId.iterator();
1475
		while (itRole.hasNext())	{
1476
			roleIds+= itRole.next().getId();
1477
			if (itRole.hasNext())	{
1478
				roleIds+=",";
1479
			}
1480
		}
1367 cyprien 1481
		modele.selectionPublicationAPersonne(vueARafraichir, publicationId, personnesId, roleIds, seqId);
1014 gduche 1482
	}
1513 jpm 1483
 
1484
	public void selectionnerPublicationsAPersonne(Rafraichissable vueARafraichir, String personneId, List<Valeur> roleId, String recherche, int pageCourante, int nbElements, Sequenceur sequenceur) {
1485
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner PublicationAPersonne");
1486
		Integer seqId = null;
1487
		if (sequenceur != null)	{
1488
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1489
			vueARafraichir = sequenceur;
1490
		}
1491
 
1492
		String roleIds = "";
1493
		Iterator<Valeur> itRole = roleId.iterator();
1494
		while (itRole.hasNext())	{
1495
			roleIds+= itRole.next().getId();
1496
			if (itRole.hasNext())	{
1497
				roleIds+=",";
1498
			}
1499
		}
1500
		modele.selectionPublicationsAPersonne(vueARafraichir, personneId, roleIds, recherche, pageCourante, nbElements, seqId);
1501
	}
1502
 
1503
	public void selectionnerPersonnesAPublication(Rafraichissable vueARafraichir, String publicationId, String recherche, int pageCourante, int nbElements, Sequenceur sequenceur) {
1504
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner PublicationAPersonne");
1505
		Integer seqId = null;
1506
		if (sequenceur != null)	{
1507
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1508
			vueARafraichir = sequenceur;
1509
		}
1510
		modele.selectionPersonnesAPublication(vueARafraichir, publicationId, recherche, pageCourante, nbElements, seqId);
1511
	}
1428 cyprien 1512
 
1367 cyprien 1513
	/** AJOUTER **/
1428 cyprien 1514
	// Lier une publication à plusieurs personnes
1324 gduche 1515
	public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, PublicationAPersonneListe personnesAjoutees, String roleId, Integer seqId) {
901 jpm 1516
		if (personnesAjoutees != null && personnesAjoutees.size() > 0) {
1517
			String idPublicationAPersonneSepareParVirgule = "" ;
1428 cyprien 1518
			String ordreAuteursSepareParVirgule = "";
901 jpm 1519
			for (Iterator<String> it = personnesAjoutees.keySet().iterator(); it.hasNext();) {
1428 cyprien 1520
				PublicationAPersonne publi = personnesAjoutees.get(it.next());
1521
				idPublicationAPersonneSepareParVirgule += publi.getIdPersonne();
1522
				ordreAuteursSepareParVirgule += publi.getOrdreAuteurs();
901 jpm 1523
				if (it.hasNext()) {
1524
					idPublicationAPersonneSepareParVirgule += ",";
1428 cyprien 1525
					ordreAuteursSepareParVirgule += ",";
901 jpm 1526
				}
1527
			}
1428 cyprien 1528
			modele.ajouterPublicationAPersonne(vueARafraichir, publicationId, idPublicationAPersonneSepareParVirgule, ordreAuteursSepareParVirgule, roleId, seqId);
1324 gduche 1529
		}
822 jpm 1530
	}
901 jpm 1531
 
1428 cyprien 1532
	// Lier plusieurs publication à une personne
1533
	public void ajouterPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe listePublications, String personneId, String roleId, Integer seqId) {
1468 jpm 1534
		if (listePublications != null && listePublications.size() > 0)	{
1428 cyprien 1535
			String idsPubli = "";
1536
			String rolesIds = "";
1537
			String ordreAuteurs = "";
1538
			for (Iterator<String> it = listePublications.keySet().iterator(); it.hasNext();) {
1539
				PublicationAPersonne publiAPersonne = listePublications.get(it.next());
1468 jpm 1540
				idsPubli += publiAPersonne.getIdPublication();
1428 cyprien 1541
				rolesIds += publiAPersonne.getRole();
1542
				ordreAuteurs += publiAPersonne.getOrdreAuteurs();
1543
				if (it.hasNext()) {
1544
					idsPubli += ",";
1545
					rolesIds += ",";
1546
					ordreAuteurs += ",";
1547
				}
1548
			}
1549
			modele.ajouterPublicationAPersonne(vueARafraichir, idsPubli, personneId, ordreAuteurs, rolesIds, seqId);
1550
		}
1551
	}
1552
 
1553
	/** MODIFIER **/
1554
	public void modifierPublicationAPersonne(Rafraichissable vueARafraichir, String publicationId, PublicationAPersonneListe personnesModifiees, String roleId, Integer seqId) {
1555
		if (personnesModifiees != null && personnesModifiees.size() > 0) {
1556
			String idPublicationAPersonneSepareParVirgule = "" ;
1557
			String ordreAuteursSepareParVirgule = "";
1558
			for (Iterator<String> it = personnesModifiees.keySet().iterator(); it.hasNext();) {
1559
				PublicationAPersonne publi = personnesModifiees.get(it.next());
1560
				idPublicationAPersonneSepareParVirgule += publi.getIdPersonne();
1561
				ordreAuteursSepareParVirgule += publi.getOrdreAuteurs();
1562
				if (it.hasNext()) {
1563
					idPublicationAPersonneSepareParVirgule += ",";
1564
					ordreAuteursSepareParVirgule += ",";
1565
				}
1566
			}
1567
			modele.modifierPublicationAPersonne(vueARafraichir, publicationId, idPublicationAPersonneSepareParVirgule, ordreAuteursSepareParVirgule, roleId, seqId);
1568
		}
1569
	}
1367 cyprien 1570
 
1571
	/** SUPPRIMER **/
1324 gduche 1572
	public void supprimerPublicationAPersonne(Rafraichissable vueARafraichir, PublicationAPersonneListe personnesSupprimees) {
901 jpm 1573
		if (personnesSupprimees != null && personnesSupprimees.size() > 0) {
1574
			String idPublicationAPersonneSepareParVirgule = "" ;
1575
			for (Iterator<String> it = personnesSupprimees.keySet().iterator(); it.hasNext();) {
1576
				idPublicationAPersonneSepareParVirgule += personnesSupprimees.get(it.next()).getId();
1577
				if (it.hasNext()) {
1578
					idPublicationAPersonneSepareParVirgule += ",";
1579
				}
1580
			}
1428 cyprien 1581
 
968 jpm 1582
			modele.supprimerPublicationAPersonne(vueARafraichir, idPublicationAPersonneSepareParVirgule);
1324 gduche 1583
		}
822 jpm 1584
	}
1585
 
1586
	//+----------------------------------------------------------------------------------------------------------------+
985 jpm 1587
	//												GESTION DES COMMENTAIRES
1588
	//+----------------------------------------------------------------------------------------------------------------+
1589
 
1590
	public void afficherListeCommentaire(CommentaireListe nouvelleDonnees) {
1591
		if (!(panneauCentre.getContenu() instanceof CommentaireVue)) {
1592
			panneauCentre.removeAll();
1593
			panneauCentre.add(new CommentaireVue(this));
1594
		}
1595
 
1596
		panneauCentre.getContenu().rafraichir(nouvelleDonnees);
1597
	}
1598
 
1599
	public void afficherFormCommentaire(String commentaireId) {
1613 aurelien 1600
		final FenetreForm fenetre = new FenetreForm("");
1601
		CommentaireForm commentaireForm = new CommentaireForm(this, commentaireId)  {
1602
			@Override
1603
			public void surFermetureFormulaire() {
1604
				fenetre.hide();
1605
			}
1606
		};
1607
		commentaireForm.vueExterneARafraichirApresValidation = panneauCentre.getContenu();
1608
		fenetre.add(commentaireForm);
1609
		fenetre.show();
985 jpm 1610
	}
1611
 
1612
	public void clicListeCommentaire(Commentaire commentaire) {
1613
		if (commentaire != null) {
1614
			panneauCentre.getContenu().rafraichir(commentaire);
1615
		}
1616
	}
1617
 
1618
	public void clicAjouterCommentaire() {
1619
		afficherFormCommentaire(null);
1620
	}
1621
 
1622
	public void clicModifierCommentaire(List<Commentaire> selection) {
1623
		if (selection.size() == 0) {
1210 cyprien 1624
			InfoLogger.display("Information", "Veuillez sélectionner un commentaire.");
985 jpm 1625
		} else if (selection.size() > 1) {
1210 cyprien 1626
			InfoLogger.display("Information", "Veuillez sélectionner un seul commentaire à la fois.");
985 jpm 1627
		} else if (selection.size() == 1) {
1628
			afficherFormCommentaire(selection.get(0).getId());
1629
		} else {
1210 cyprien 1630
			InfoLogger.display("Erreur", "Une erreur est survenue dans la méthode clicModifierCommentaire() du Médiateur.");
985 jpm 1631
		}
1632
	}
1633
 
1634
	public void clicSupprimerCommentaire(final List<Commentaire> commentaireListe) {
1635
		if (commentaireListe.size() <= 0) {
1636
			MessageBox.alert("Attention", "Vous devez sélectionner un commentaire", null);
1637
		} else {
1638
			String message = "Voulez-vous vraiment supprimer ces commentaires ?";
1639
			if (commentaireListe.size() == 1) {
1640
				message = "Voulez-vous vraiment supprimer ce commentaire ?";
1641
			}
1642
 
1643
			final Listener<MessageBoxEvent> listenerSuppression = new Listener<MessageBoxEvent>() {
1644
				public void handleEvent(MessageBoxEvent ce) {
1645
					Dialog dialog = (Dialog) ce.getComponent();
1646
				    Button btn = ce.getButtonClicked();
1647
 
1680 raphael 1648
				    if (btn.getHtml().equals(dialog.yesText)) {
985 jpm 1649
				    	supprimerCommentaire(panneauCentre.getContenu(), commentaireListe);
1650
				    }
1651
				}
1652
			};
1653
 
1654
			MessageBox.confirm("Supprimer un commentaire", message, listenerSuppression);
1655
		}
1656
	}
1657
 
1367 cyprien 1658
	/** Cette méthode est un wrapper **/
1659
	public void selectionnerCommentaire(Rafraichissable vueARafraichir, String commentaireId, Sequenceur sequenceur) {
1660
		selectionnerCommentaire(vueARafraichir, commentaireId, null, 0, nbElements, sequenceur);
985 jpm 1661
	}
1367 cyprien 1662
 
1663
	public void selectionnerCommentaire(Rafraichissable vueARafraichir, String commentaireId, String titre, int pageCourante, int nbElements, Sequenceur sequenceur) {
1664
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Commentaire");
1665
		Integer seqId = null;
1666
		if (sequenceur != null)	{
1667
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1668
			vueARafraichir = sequenceur;
1669
		}
1763 aurelien 1670
		modele.selectionnerCommentaire(vueARafraichir, commentaireId, titre, pageCourante, nbElements, seqId);
1048 gduche 1671
	}
985 jpm 1672
 
1513 jpm 1673
	public void selectionnerCommentaire(Rafraichissable vueARafraichir, String recherche, int pageCourante, int nbElements, Sequenceur sequenceur) {
1674
		if (Mediateur.DEBUG) System.out.println("MEDIATEUR - selectionner  Commentaire");
1675
		Integer seqId = null;
1676
		if (sequenceur != null)	{
1677
			seqId = sequenceur.lancerRequeteSynchrone(vueARafraichir);
1678
			vueARafraichir = sequenceur;
1679
		}
1680
		modele.selectionnerCommentaire(vueARafraichir, recherche, pageCourante, nbElements, seqId);
1681
	}
1682
 
1367 cyprien 1683
	/** Cette méthode est un wrapper **/
1684
	public void selectionnerCommentaireParTitre(Rafraichissable vueARafraichir, String titre, Sequenceur sequenceur) {
1685
		selectionnerCommentaire(vueARafraichir, null, titre, 0, nbElements, sequenceur);
997 jpm 1686
	}
1687
 
1367 cyprien 1688
	/** AJOUTER **/
985 jpm 1689
	public void ajouterCommentaire(Rafraichissable vueARafraichir, Commentaire commentaire) {
1690
		modele.ajouterCommentaire(vueARafraichir, commentaire);
1691
	}
1692
 
1367 cyprien 1693
	/** MODIFIER **/
985 jpm 1694
	public void modifierCommentaire(Rafraichissable vueARafraichir, Commentaire commentaire) {
1695
		modele.modifierCommentaire(vueARafraichir, commentaire);
1696
	}
1697
 
1367 cyprien 1698
	/** SUPPRIMER **/
985 jpm 1699
	public void supprimerCommentaire(Rafraichissable vueARafraichir, List<Commentaire> commentairesListe) {
1700
		if (commentairesListe != null && commentairesListe.size() > 0) {
1701
			String idCommentaireSeparesParVirgule = "" ;
1702
			Iterator<Commentaire> it = commentairesListe.iterator();
1703
			while (it.hasNext()) {
1704
				idCommentaireSeparesParVirgule += it.next().getId();
1705
				if (it.hasNext()) {
1706
					idCommentaireSeparesParVirgule += ",";
1707
				}
1708
			}
1709
			modele.supprimerCommentaire(vueARafraichir, idCommentaireSeparesParVirgule);
989 jpm 1710
			modele.supprimerCollectionACommentaire(vueARafraichir, idCommentaireSeparesParVirgule, CollectionACommentaireAsyncDao.SUPPRESSION_PAR_COMMENTAIRE);
985 jpm 1711
		}
1712
	}
1713
 
1714
	//+----------------------------------------------------------------------------------------------------------------+
1790 aurelien 1715
	//												GESTION DES STATS
1716
	//+----------------------------------------------------------------------------------------------------------------+
1717
	public void afficherStats() {
1718
		if (!(panneauCentre.getContenu() instanceof StatistiquesVue)) {
1719
			panneauCentre.removeAll();
1720
			panneauCentre.add(new StatistiquesVue(this));
1721
		}
1722
	}
1723
 
1724
	//+----------------------------------------------------------------------------------------------------------------+
447 jp_milcent 1725
	//												RAFRAICHISSEMENT
156 jp_milcent 1726
	//+----------------------------------------------------------------------------------------------------------------+
1727
 
898 gduche 1728
	public void rafraichir(Object nouvellesDonnees) {
1909 mathias 1729
		//Coel.LogVersFirebug("rafraichit mediateur");
898 gduche 1730
		if (nouvellesDonnees instanceof Utilisateur) {
1908 mathias 1731
			Utilisateur infoUtil = (Utilisateur) nouvellesDonnees;
1909 mathias 1732
			//Coel.LogVersFirebug("Licence dans util : " + infoUtil.avoirLicenceAcceptee());
1733
			//Coel.LogVersFirebug("Licence dans util : " + infoUtil.getLicence());
1908 mathias 1734
			if (infoUtil.getLicence().equals("0")) {
1735
				this.afficherFenetreLicence(this.fenetreIdentification);
1736
			} else {
1737
				repandreEtatIdentification(infoUtil);
1738
			}
932 jpm 1739
		} else if (nouvellesDonnees instanceof Information) {
1740
			Information info = (Information) nouvellesDonnees;
1741
			if (info.getType().equals("modification_personne")) {
1742
				repandreInfoMiseAJourUtilisateur();
1743
			}
1744
		} else {
898 gduche 1745
			GWT.log(i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
277 jp_milcent 1746
		}
1747
	}
281 gduche 1748
 
453 jp_milcent 1749
	//+----------------------------------------------------------------------------------------------------------------+
1750
	//												GESTION du STATUT
1751
	//+----------------------------------------------------------------------------------------------------------------+
288 gduche 1752
 
332 gduche 1753
	public void afficherPopinChargement()	{
1754
		((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).center();
1755
	}
453 jp_milcent 1756
 
332 gduche 1757
	public void masquerPopinChargement()	{
1758
		((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).hide();
1759
	}
1063 gduche 1760
 
1761
	public String obtenirClasseContenu()	{
1762
		String classeContenu = null;
1763
		if (panneauCentre.getContenu() != null)	{
1764
			classeContenu = panneauCentre.getContenu().getClass().toString();
1765
		}
1766
		return classeContenu;
1509 jpm 1767
	}
1768
 
1769
	//+----------------------------------------------------------------------------------------------------------------+
1770
	//												GESTION de l'HISTORIQUE du navigateur
1771
	//+----------------------------------------------------------------------------------------------------------------+
1939 mathias 1772
 
1773
	/**
1774
	 * Encore une bonne bouse sidérale codée avec les pieds dans le plâtre
1775
	 * @param event
1776
	 */
1509 jpm 1777
	@Override
1778
	public void onValueChange(ValueChangeEvent<String> event) {
1779
		String token = event.getValue();
1939 mathias 1780
		//Coel.LogVersFirebug("--changement d'URL; token : [" + token + "]");
1781
		if (token != null) {
1782
			// QUI met des "?" après des "#" ?? Méfions-nous tout de même, si ça
1783
			// y était, y a probablement une raison (mode naïf)
1784
			if (token.lastIndexOf("?") != -1) {
1785
				token = token.substring(0, token.lastIndexOf("?"));
1786
				//Coel.LogVersFirebug("token sans le ? : [" + token + "]");
1787
			}
1788
			// "chemin" : #TypeEntité/ID_Entité/action
1789
			String[] rondelles = token.split("/");
1790
			//Coel.LogVersFirebug(rondelles);
1791
			// type d'entité mentionné ?
1792
			if (rondelles != null && rondelles.length > 0) {
1793
				String typeEntite = rondelles[0];
1794
				// @TODO vérifier la validité du type, et par défaut ne rien faire
1795
				//Coel.LogVersFirebug("=> on va dans [" + typeEntite + "]");
1796
				codeMenuPrecedent = typeEntite;
1797
				// Si on a un ID d'entité à pointer
1798
				if (rondelles.length > 1) {
1799
					String idEntite = rondelles[1];
1800
					//Coel.LogVersFirebug("=> on sélectionne [" + idEntite + "]");
1801
					// On sélectionne l'entité demandée, si elle existe
1802
					this.clicMenu(typeEntite);
1633 aurelien 1803
				} else {
1939 mathias 1804
					// On se rend juste dans le menu du type d'entité demandé
1805
					this.clicMenu(typeEntite);
1633 aurelien 1806
				}
1939 mathias 1807
			}
1808
			if (rondelles != null && rondelles.length > 2) {
1809
				String action = rondelles[2];
1810
				//Coel.LogVersFirebug("=> on exécute l'action [" + action + "]");
1811
				// On se rend dans le menu du type d'entité demandé
1812
				// -- bonjour l'angoisse pour faire ça (2/2)
1813
				// => attendre le callback des WS pour le faire :'(
1814
			}
1815
			this.requeteUrl = null; // à quoi sert ce truc ?
1633 aurelien 1816
		}
1562 jpm 1817
	}
1818
 
1819
	private void analyseRequeteURL() {
1820
		String[] params = requeteUrl.split("&");
1821
		for (int i = 0; i < params.length; i++) {
1822
			if (params[i].startsWith("logLevel=")) {
1823
				String logLevel =  params[i].replaceFirst("^logLevel=", "");
1824
				Log.setNiveau(logLevel);
1825
			}
1826
		}
1827
	}
1654 raphael 1828
}