Subversion Repositories eFlore/Archives.cel-v1

Rev

Rev 26 | Rev 28 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 ddelon 1
package org.tela_botanica.client;
2
 
3
 
4
// TODO : sortie User vers une classe ...
5
// TODO : sortie les boutons supprimer et exporter et inclure ici
6
 
7
import com.google.gwt.i18n.client.Dictionary;
14 ddelon 8
import com.google.gwt.json.client.JSONArray;
9
import com.google.gwt.json.client.JSONBoolean;
10 ddelon 10
import com.google.gwt.json.client.JSONParser;
11
import com.google.gwt.json.client.JSONString;
12
import com.google.gwt.json.client.JSONValue;
13
import com.google.gwt.user.client.HTTPRequest;
14
import com.google.gwt.user.client.ResponseTextHandler;
12 ddelon 15
import com.google.gwt.user.client.ui.TextBox;
10 ddelon 16
 
26 ddelon 17
public class Mediator implements AutoCompleteAsyncTextBoxListener {
10 ddelon 18
 
19
 
27 ddelon 20
		private String serviceBaseUrl = getServiceBaseUrlFromDictionnary(); // Recherche url de base des services distants
11 ddelon 21
 
27 ddelon 22
		// Utilisateur
23
		private TopPanel topPanel=null; // Information de connexion
24
		private String user = null; // Utilisateur connecte ou bien identifiant de session
25
		private boolean connected=false;
12 ddelon 26
 
27 ddelon 27
		// Filtres
28
		private LeftPanel leftPanel=null; // Containeur filtre date, lieu, lieu-dit ...
29
		private LocationList locationList = null; // Filtre sur lieu de releve
30
		private DateList dateList = null; // Filtre sur date d'observation
31
		private StationList stationList = null; // Filtre sur station d'observation
32
 
33
		// Saisie d'une observation
34
 
35
		private EntryPanel entryPanel=null;  // Formulaire de saisie observation
36
 
37
		private NameAssistant nameAssistant=null; //  Assistant de saisie nom scientifique
38
		private LocationAssistant locationAssistant=null; // Assistant de saisie nom de commune
39
 
40
		private TextBox date = null; // date observation
41
		private TextBox milieu = null;  // milieu observation
42
		private TextBox lieudit = null;  // lieu dit observation
43
		private TextBox comment = null; // commentaire observation
44
		private InventoryItem inventoryItem=null;  // Une observation saisie
12 ddelon 45
 
46
 
27 ddelon 47
		// Liste des observations
48
		private InventoryItemList inventoryItemList = null; // Liste de releves saisis
49
		private ActionPanel actionPanel=null; // Action sur les observations
50
 
51
 
52
		// Informations
53
 
54
		private InfoPopup infoPopup=null; // Information complementaire sur un taxon (photo, repartition)
55
 
56
 
57
		// Point d'entree (pour fin d'initialisation)
58
 
10 ddelon 59
		private Cel cel = null;
60
 
61
 
62
		Mediator() {
63
 
64
		}
27 ddelon 65
 
66
 
67
		// Methodes Private
10 ddelon 68
 
27 ddelon 69
 
70
 
10 ddelon 71
		/**
27 ddelon 72
		 * Recuperation du prefixe d'appel des services
73
		 * @return prefix appel des service
74
		 */
75
 
76
		private String getServiceBaseUrlFromDictionnary() {
77
 
78
			Dictionary theme = Dictionary.getDictionary("Parameters");
79
			return theme.get("serviceBaseUrl");
80
 
81
		}
82
 
83
 
84
		// Appel aux services :
85
 
86
 
87
		/**
88
		 * Recherche distante et asynchrone de l'utilisateur connecte, en retour lancement methode initialisation
89
		 * de l'appellant Cel. (initAsync)
90
		 *
91
		 */
92
 
93
		private void getUserFromService() {
94
 
95
 
96
			HTTPRequest.asyncGet(serviceBaseUrl + "/User/",
97
					new ResponseTextHandler() {
98
 
99
						public void onCompletion(String str) {
100
							JSONValue jsonValue = JSONParser.parse(str);
101
							JSONArray jsonArray;
102
							if ((jsonArray = jsonValue.isArray()) != null) {
103
									user = ((JSONString) jsonArray.get(0)).stringValue(); // Identifiant utilisateur ou identifiant de session si non connecte
104
									connected = ((JSONBoolean) jsonArray.get(1)).booleanValue();  // Drapeau leve si utilisateur identifie
105
							}
106
							cel.initAsync();
107
						}
108
					});
109
 
110
		}
111
 
112
 
113
 
114
 
115
		// Methodes Public
116
 
117
 
118
 
119
		// Information sur Etat du systeme
120
 
121
		/**
10 ddelon 122
		 * Recuperation information utilisateur
123
		 *
124
		 */
125
 
126
		public void initUser() {
26 ddelon 127
			getUserFromService(); // Appel distant recherche de l'utilisateur
10 ddelon 128
		}
12 ddelon 129
 
130
 
27 ddelon 131
		// Actions declanchee par le systeme
132
 
12 ddelon 133
		/**
27 ddelon 134
		 * Action initialisation premier affichage
12 ddelon 135
		 */
136
 
137
		public void onInit() {
138
 
14 ddelon 139
 
140
			locationList.setLocation("all");
141
			locationList.updateCount();
142
 
12 ddelon 143
			this.onLocationSelected("all");
144
 
145
		}
146
 
13 ddelon 147
 
27 ddelon 148
		// Actions sur formulaire de saisie
149
 
26 ddelon 150
 
14 ddelon 151
		/**
27 ddelon 152
		 * Action lancee par la completion d'un nom dans un assistant de saisie
153
		 * Recherche d'information complementaires ....
26 ddelon 154
		 *
155
		 * @return void
156
		 */
157
 
158
		public void onComplete(ResponseTextHandler sender, String str, String value) {
159
 
160
			if (sender instanceof NameAssistant) {
161
				onNameCompleted(value);
162
			}
163
 
164
		}
165
 
166
 
27 ddelon 167
		/**
168
		 * Action suivant la completion d'un nom
169
		 *
170
		 */
26 ddelon 171
 
27 ddelon 172
		public void  onNameCompleted(String value) {
173
			if (infoPopup==null) {
174
				infoPopup = new InfoPopup(this);
175
			}
176
			infoPopup.setImageUrl(value);
177
		}
178
 
179
 
180
 
26 ddelon 181
		/**
27 ddelon 182
		 * Action prealable a l'ajout d'une observation : controle presence champs requis et lancement mise a jour
183
		 *
184
		 */
185
 
186
		public void onAddInventoryItem() {
187
 
188
			// Lazy instantiation
189
			if (inventoryItem==null) {
190
				registerInventoryItem(new InventoryItem());
191
			}
192
 
193
			inventoryItem.setContent(nameAssistant.getText(),nameAssistant.getValue(),locationAssistant.getText(),locationAssistant.getValue(),date.getText(),milieu.getText(),comment.getText(),"null");
194
			inventoryItemList.addelement();
195
 
196
		}
197
 
198
 
199
 
200
		/**
201
		 * Action prealable a la modification d'une observation : controle presence champs requis et lancement mise a jour
202
		 *
203
		 */
204
 
205
		public void onModifyInventoryItem(String ordre) {
206
 
207
		// Lazy instantiation
208
		if (inventoryItem==null) {
209
			registerInventoryItem(new InventoryItem());
210
		}
211
 
212
		inventoryItem.setContent(nameAssistant.getText(),nameAssistant.getValue(),locationAssistant.getText(),locationAssistant.getValue(),date.getText(),milieu.getText(),comment.getText(),ordre);
213
		inventoryItemList.updateElement();
214
 
215
		}
216
 
217
 
218
		public boolean inventoryItemIsValid() {
219
			// TODO : controle date
220
 
221
		    if (inventoryItem.getName().compareTo("")==0) {
222
		    	return false;
223
		    }
224
		    else {
225
		    	return true;
226
		    }
227
 
228
		}
229
 
230
 
231
 
232
		/**
233
		 * Action lancee par la selection d'un nom dans un assistant de saisie. Lance
234
		 * la recherche d'informations complementaires (famille, numero
26 ddelon 235
		 * nomenclaturaux etc) et met a jour l'inventaire (addelement())
236
		 *
237
		 * @return void
238
		 */
27 ddelon 239
 
240
 
26 ddelon 241
		public void onValidate(SourcesAutoCompleteAsyncTextBoxEvents sender,
242
				  String str, String value) {
243
 
27 ddelon 244
		  	if (getEntryPanel().getOrdre()==null) { // Nouvelle observation
26 ddelon 245
				     onAddInventoryItem();
246
			  	}
247
			else {
27 ddelon 248
			     onModifyInventoryItem(getEntryPanel().getOrdre());   // Modification d'une observation
26 ddelon 249
			     getEntryPanel().setOrdre(null);
250
			 }
251
 
252
		}
253
 
254
 
27 ddelon 255
		// Action portant sur la liste des observations
26 ddelon 256
 
257
		/**
27 ddelon 258
		 * Action suite ajout, modification, suppression d'un element inventaire
14 ddelon 259
		 */
13 ddelon 260
 
14 ddelon 261
 
262
		public void onInventoryUpdated(String location) {
263
 
27 ddelon 264
			locationList.setLocation(location); // Mise a jour filtre localite
265
			locationList.updateCount();
14 ddelon 266
 
27 ddelon 267
			this.onLocationSelected(location); // Selection localite
14 ddelon 268
 
269
		}
270
 
271
 
13 ddelon 272
		/**
273
		 * Action sur selection d'une observation : affichage du detail
274
		 */
275
 
276
		public void onInventoryItemSelected(String ordre) {
277
 
27 ddelon 278
			entryPanel.setOrdre(ordre); // Mise a jour du formulaire de saisie avec l'element selectionne
13 ddelon 279
			entryPanel.update();
280
 
281
		}
12 ddelon 282
 
13 ddelon 283
 
284
		/**
27 ddelon 285
		 * Action sur deselection d'une observation : remise a zero
26 ddelon 286
		 */
287
 
288
		public void onInventoryItemUnselected(String ordre) {
289
 
27 ddelon 290
			entryPanel.setOrdre(null); //  Mise a jour du formulaire de saisie avec l'element selectionne
26 ddelon 291
 
292
		}
293
 
294
 
295
 
27 ddelon 296
		// Action sur Filtrage
13 ddelon 297
 
27 ddelon 298
 
299
		// Filtre identification
12 ddelon 300
 
13 ddelon 301
 
10 ddelon 302
		/**
27 ddelon 303
		 * Action sur login : initialisation filtres pour cette utilisateur
14 ddelon 304
		 * @param user
305
		 */
306
 
307
 
308
		public void onLogin(String user) {
309
 
310
 
311
			this.user=user;
312
			topPanel.getSignLabel().setText(user+ " (deconnexion)");
313
			inventoryItemList.setUser(user);
314
			dateList.setUser(user);
315
			stationList.setUser(user);
316
			entryPanel.setUser(user);
317
			locationList.setUser(user);
318
			this.onInit();
319
 
12 ddelon 320
		}
321
 
14 ddelon 322
 
12 ddelon 323
		/**
14 ddelon 324
		 * Action sur logoff
325
		 * @param user
12 ddelon 326
		 */
327
 
14 ddelon 328
 
329
		public void onLogoff(String user) {
12 ddelon 330
 
14 ddelon 331
			this.user=user;
332
			topPanel.getSignLabel().setText("Connexion");
333
			inventoryItemList.setUser(user);
334
			dateList.setUser(user);
335
			stationList.setUser(user);
336
			entryPanel.setUser(user);
337
			locationList.setUser(user);
338
			this.onInit();
27 ddelon 339
		}
340
 
341
 
342
 
343
		// Filtre recherche contenu
344
 
345
		/**
346
		 * Action sur recherche  : affichage de la liste des taxons correspondants
347
		 */
348
 
349
		public void onSearch(String search) {
350
 
351
			if (search.trim().compareTo("")==0) {
352
				search="all";
353
			}
354
			inventoryItemList.setSearch(search);
355
			inventoryItemList.updateCount();
14 ddelon 356
 
10 ddelon 357
		}
12 ddelon 358
 
27 ddelon 359
 
360
 
361
		// Filtre  selection lieu
362
 
10 ddelon 363
		/**
27 ddelon 364
		 * Action sur selection d'un lieu : affichage de la liste des taxons correspondants
365
		 * TODO : gerer asynchronicite ?
10 ddelon 366
		 */
367
 
27 ddelon 368
		public void onLocationSelected(String loc) {
369
 
370
			inventoryItemList.setLocation(loc);
14 ddelon 371
			inventoryItemList.updateCount();
26 ddelon 372
 
373
			inventoryItemList.displayFilter();
374
 
27 ddelon 375
			dateList.setLocation(loc);
376
			dateList.updateCount();
377
 
378
			stationList.setLocation(loc);
379
			stationList.updateCount();
380
 
10 ddelon 381
		}
27 ddelon 382
 
14 ddelon 383
 
27 ddelon 384
		// Filtre station
10 ddelon 385
 
386
		/**
27 ddelon 387
		 * Action sur selection d'une station : affichage de la liste des taxons correspondants
12 ddelon 388
		 */
14 ddelon 389
 
27 ddelon 390
		public void onStationSelected(String station) {
12 ddelon 391
 
27 ddelon 392
			inventoryItemList.setStation(station);
14 ddelon 393
			inventoryItemList.updateCount();
26 ddelon 394
 
395
			inventoryItemList.displayFilter();
396
 
12 ddelon 397
 
25 ddelon 398
 
12 ddelon 399
		}
14 ddelon 400
 
27 ddelon 401
		// Filtre date d'observation
25 ddelon 402
 
12 ddelon 403
 
404
		/**
27 ddelon 405
		 * Action sur selection d'une date : affichage de la liste des taxons correspondants
12 ddelon 406
		 */
407
 
27 ddelon 408
		public void onDateSelected(String date) {
409
 
410
			inventoryItemList.setDate(date);
411
			inventoryItemList.updateCount();
12 ddelon 412
 
27 ddelon 413
			inventoryItemList.displayFilter();
12 ddelon 414
 
415
 
13 ddelon 416
 
417
		}
418
 
27 ddelon 419
		// Declaration, enregistrement
12 ddelon 420
 
421
		/**
27 ddelon 422
		 * Declaration InventoryItem  : une observation
12 ddelon 423
		 * @param cel
424
		 */
425
 
426
		public void registerInventoryItem(InventoryItem inventoryItem) {
427
 
428
			this.inventoryItem=inventoryItem;
429
		}
430
 
431
 
432
 
433
		/**
27 ddelon 434
		 * Declaration InventoryItemList  : liste d'observation
11 ddelon 435
		 * @param inventoryItemList
10 ddelon 436
		 */
437
 
11 ddelon 438
		public void registerInventoryItemList(InventoryItemList inventoryItemList) {
10 ddelon 439
 
11 ddelon 440
			this.inventoryItemList=inventoryItemList;
10 ddelon 441
 
442
		}
443
 
444
		/**
27 ddelon 445
		 * Declaration LocationList : filtre lieu observation
10 ddelon 446
		 * @param locationList
447
		 */
448
 
449
		public void registerLocationList(LocationList locationList) {
450
 
451
			this.locationList=locationList;
452
		}
12 ddelon 453
 
10 ddelon 454
 
12 ddelon 455
 
10 ddelon 456
		/**
27 ddelon 457
		 * Declaration DateList : filtre date observation
12 ddelon 458
		 * @param locationList
459
		 */
460
 
461
		public void registerDateList(DateList dateList) {
462
 
463
			this.dateList=dateList;
464
		}
465
 
466
 
14 ddelon 467
		/**
27 ddelon 468
		 * Declaration InfoPopup : information complementaire taxon en cours
25 ddelon 469
		 * @param infoPopup
470
		 */
471
 
472
		public void registerInfoPopup(InfoPopup infoPopup) {
473
 
474
			this.infoPopup=infoPopup;
475
		}
476
 
477
 
478
 
479
		/**
27 ddelon 480
		 * Declaration StationList : filtre par station
14 ddelon 481
		 * @param locationList
482
		 */
12 ddelon 483
 
14 ddelon 484
		public void registerStationList(StationList stationList) {
485
 
486
			this.stationList=stationList;
487
		}
488
 
489
 
490
 
12 ddelon 491
		/**
27 ddelon 492
		 * Declaration Cel : point d'entree
10 ddelon 493
		 * @param cel
494
		 */
495
 
496
		public void registerCel(Cel cel) {
497
 
498
			this.cel=cel;
499
		}
500
 
501
 
11 ddelon 502
		/**
27 ddelon 503
		 * Declaration NameAssistant  : completion nom scientifique
11 ddelon 504
		 * @param nameassistant
505
		 */
506
 
507
		public void registerNameAssistant(NameAssistant nameAssistant) {
508
			this.nameAssistant=nameAssistant;
509
 
510
		}
511
 
512
		/**
27 ddelon 513
		 * Declaration LocationAssistant : completion commune
11 ddelon 514
		 * @param locationassistant
515
		 */
516
 
517
		public void registerLocationAssistant(LocationAssistant locationAssistant) {
518
			this.locationAssistant=locationAssistant;
519
 
520
		}
12 ddelon 521
 
27 ddelon 522
 
11 ddelon 523
 
12 ddelon 524
		/**
27 ddelon 525
		 * Declaration date : date observation
12 ddelon 526
		 * @param date
527
		 */
528
 
529
		public void registerDate(TextBox date) {
530
			this.date=date;
531
 
532
		}
533
 
27 ddelon 534
 
12 ddelon 535
 
27 ddelon 536
		/**
537
		 * Declaration lieu dit : lieu dit d'observation
538
		 *
539
		 * @param milieu
540
		 */
12 ddelon 541
 
27 ddelon 542
		public void registerLieudit(TextBox lieudit) {
543
			this.lieudit=lieudit;
544
 
545
		}
546
 
547
 
548
 
12 ddelon 549
		/**
27 ddelon 550
		 * Declaration milieu : milieu d'observation
551
		 *
552
		 * @param milieu
12 ddelon 553
		 */
554
 
27 ddelon 555
		public void registerMilieu(TextBox milieu) {
556
			this.milieu=milieu;
12 ddelon 557
 
558
		}
27 ddelon 559
 
560
		/**
561
		 * Declaration Entry Panel : formulaire de saisie observation
562
		 */
563
 
12 ddelon 564
 
565
	    public void  registerEntryPanel(EntryPanel entryPanel) {
566
	    	this.entryPanel=entryPanel;
567
		}
10 ddelon 568
 
27 ddelon 569
 
570
		/**
571
		 * Declaration Action Panel : actions sur liste des observations
572
		 */
573
 
13 ddelon 574
 
25 ddelon 575
	    public void  registerActionPanel(ActionPanel actionPanel) {
576
	    	this.actionPanel=actionPanel;
577
		}
13 ddelon 578
 
27 ddelon 579
 
580
		/**
581
		 * Declaration TopPanel : panneau de connexion
582
		 */
25 ddelon 583
 
584
 
14 ddelon 585
	    public void  registerTopPanel(TopPanel topPanel) {
586
	    	this.topPanel=topPanel;
587
		}
13 ddelon 588
 
14 ddelon 589
 
590
 
10 ddelon 591
		/**
12 ddelon 592
		 * Declaration commentaire
593
		 * @param commentaire
594
		 */
595
 
596
		public void registerComment(TextBox comment) {
597
			this.comment=comment;
598
 
599
		}
600
 
601
 
27 ddelon 602
		/*
603
		 * Declaration LeftPanel Panneau gauche filtre sur liste d'observation
25 ddelon 604
		 *
605
		 */
12 ddelon 606
 
25 ddelon 607
		public void registerLeftPanel(LeftPanel leftPanel) {
608
			this.leftPanel=leftPanel;
609
 
610
		}
611
 
612
 
27 ddelon 613
		// Accesseurs et setteurs
25 ddelon 614
 
10 ddelon 615
 
616
		/**
617
		 * Accesseur Url de base
618
		 * @return Url de base
619
		 */
620
 
621
		public String getServiceBaseUrl() {
622
 
623
			return serviceBaseUrl;
624
 
625
		}
626
 
27 ddelon 627
 
10 ddelon 628
		/**
629
		 *  Accesseur Utilisateur
26 ddelon 630
		 * @return utilisateur connecte ou identifiant de session
10 ddelon 631
		 */
632
 
633
		public String getUser() {
634
			return user;
635
		}
14 ddelon 636
 
637
		public void setUser(String user) {
638
			this.user=user;
639
		}
640
 
11 ddelon 641
 
642
		public InventoryItemList getInventoryItemList() {
643
			return inventoryItemList;
644
		}
10 ddelon 645
 
11 ddelon 646
		public LocationList getLocationList() {
647
			return locationList;
648
		}
10 ddelon 649
 
12 ddelon 650
		public DateList getDateList() {
651
			return dateList;
652
		}
653
 
654
 
11 ddelon 655
		public NameAssistant getNameAssistant() {
656
			return nameAssistant;
657
		}
658
 
659
		public LocationAssistant getLocationAssistant() {
660
			return locationAssistant;
661
		}
662
 
12 ddelon 663
		public InventoryItem getInventoryItem() {
664
			return inventoryItem;
665
		}
11 ddelon 666
 
12 ddelon 667
		public EntryPanel getEntryPanel() {
668
			return entryPanel;
669
		}
11 ddelon 670
 
12 ddelon 671
 
25 ddelon 672
		public LeftPanel getLeftPanel() {
673
			return leftPanel;
674
		}
675
 
676
		public InfoPopup getInfoPopup() {
26 ddelon 677
			if (infoPopup==null) {
678
				infoPopup = new InfoPopup(this);
679
			}
25 ddelon 680
			return infoPopup;
681
		}
682
 
14 ddelon 683
		public void setConnected(boolean connected) {
684
 
685
			this.connected=connected;
686
		}
687
 
688
		public boolean getConnected() {
689
 
690
			return this.connected;
691
		}
12 ddelon 692
 
25 ddelon 693
 
694
		public ActionPanel getActionPanel() {
695
 
696
			return this.actionPanel;
697
		}
14 ddelon 698
 
10 ddelon 699
	}