Subversion Repositories eFlore/Archives.cel-v1

Rev

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