Subversion Repositories eFlore/Applications.coel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
219 aurelien 1
package org.tela_botanica.client.vues;
2
 
227 aurelien 3
import java.util.ArrayList;
4
import java.util.Iterator;
365 jp_milcent 5
import java.util.List;
227 aurelien 6
 
219 aurelien 7
import org.tela_botanica.client.Mediateur;
822 jpm 8
import org.tela_botanica.client.images.Images;
219 aurelien 9
import org.tela_botanica.client.interfaces.Rafraichissable;
705 aurelien 10
import org.tela_botanica.client.modeles.Information;
775 jpm 11
import org.tela_botanica.client.modeles.MenuApplicationId;
239 aurelien 12
import org.tela_botanica.client.modeles.Personne;
227 aurelien 13
import org.tela_botanica.client.modeles.PersonneListe;
219 aurelien 14
import org.tela_botanica.client.modeles.Publication;
749 aurelien 15
import org.tela_botanica.client.modeles.PublicationAPersonne;
16
import org.tela_botanica.client.modeles.PublicationAPersonneListe;
219 aurelien 17
import org.tela_botanica.client.modeles.Structure;
227 aurelien 18
import org.tela_botanica.client.modeles.StructureListe;
792 jpm 19
import org.tela_botanica.client.util.Pattern;
782 jpm 20
import org.tela_botanica.client.util.UtilArray;
884 jpm 21
import org.tela_botanica.client.util.UtilString;
219 aurelien 22
 
505 jp_milcent 23
import com.extjs.gxt.ui.client.event.ButtonEvent;
219 aurelien 24
import com.extjs.gxt.ui.client.event.SelectionListener;
25
import com.extjs.gxt.ui.client.store.ListStore;
227 aurelien 26
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
219 aurelien 27
import com.extjs.gxt.ui.client.widget.LayoutContainer;
705 aurelien 28
import com.extjs.gxt.ui.client.widget.MessageBox;
219 aurelien 29
import com.extjs.gxt.ui.client.widget.button.Button;
30
import com.extjs.gxt.ui.client.widget.form.ComboBox;
31
import com.extjs.gxt.ui.client.widget.form.FieldSet;
32
import com.extjs.gxt.ui.client.widget.form.TextField;
33
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
34
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
35
import com.extjs.gxt.ui.client.widget.layout.FormData;
36
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
705 aurelien 37
import com.google.gwt.core.client.GWT;
219 aurelien 38
 
877 aurelien 39
 
775 jpm 40
public class PublicationForm extends Formulaire implements Rafraichissable {
219 aurelien 41
 
786 jpm 42
	private Publication publication;
43
	private PublicationAPersonneListe publicationAPersonneListe = null;
822 jpm 44
	private boolean publicationAPersonneListeChargementOk = false;
219 aurelien 45
 
775 jpm 46
	private FieldSet auteursFieldset = null;
47
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
48
	private LayoutContainer conteneurChamps;
49
	private ListStore<Personne> auteursStorePartage = null;
822 jpm 50
	private boolean auteurStorePartageChargementOk = false;
227 aurelien 51
 
775 jpm 52
	private FieldSet generalitesFieldset = null;
786 jpm 53
	private TextField<String> titreChp = null;
54
	private TextField<String> collectionChp = null;
55
	private TextField<String> uriChp = null;
219 aurelien 56
 
775 jpm 57
	private FieldSet editionFieldset = null;
792 jpm 58
	private ComboBox<Structure> editeurCombobox = null;
786 jpm 59
	private TextField<String> datePublicationChp = null;
60
	private TextField<String> tomeChp = null;
61
	private TextField<String> fasciculeChp = null;
62
	private TextField<String> pagesChp = null;
219 aurelien 63
 
775 jpm 64
	private String idStructureEdition = "";
65
	private String idAuteurs = "";
786 jpm 66
 
822 jpm 67
	private boolean formulaireValideOk = false;
68
	private boolean publicationValideOk = false;
69
	private boolean auteursValideOk = false;
786 jpm 70
 
781 jpm 71
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
782 jpm 72
		initialiserPublicationForm(mediateurCourrant, publicationId);
73
	}
74
 
75
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
822 jpm 76
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
782 jpm 77
		initialiserPublicationForm(mediateurCourrant, publicationId);
78
	}
79
 
80
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
799 jpm 81
		publication = new Publication();
822 jpm 82
		publication.setId(publicationId);
83
 
884 jpm 84
		String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
775 jpm 85
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
781 jpm 86
 
775 jpm 87
		panneauFormulaire.setLayout(new FlowLayout());
822 jpm 88
		String titre = genererTitreFormulaire();
775 jpm 89
		panneauFormulaire.setHeading(titre);
705 aurelien 90
 
775 jpm 91
		creerZoneAuteurs();
92
		panneauFormulaire.add(auteursFieldset);
219 aurelien 93
 
775 jpm 94
		creerZoneGeneralites();
95
		panneauFormulaire.add(generalitesFieldset);
239 aurelien 96
 
775 jpm 97
		creerZoneEdition();
98
		panneauFormulaire.add(editionFieldset);
822 jpm 99
 
100
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
101
			mediateurCourrant.selectionnerPublication(this, publicationId);
102
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR);
103
		}
781 jpm 104
	}
782 jpm 105
 
822 jpm 106
	private String genererTitreFormulaire() {
107
		String titre = "Ajout d'une publication";
108
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
109
			 titre = "Modification d'une publication - "+i18nC.id()+": "+publication.getId();
110
		}
111
		return titre;
112
	}
113
 
775 jpm 114
	private void creerZoneAuteurs() {
115
		FormLayout layout = new FormLayout();
116
		layout.setLabelWidth(200);
117
 
118
		// Fieldset Auteur
119
		auteursFieldset = new FieldSet();
120
		auteursFieldset.setHeading("Auteur(s)");
121
		auteursFieldset.setCollapsible(true);
122
		auteursFieldset.setLayout(layout);
123
 
124
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
125
		auteursStorePartage = new ListStore<Personne>();
792 jpm 126
		mediateur.clicObtenirListeAuteurs(this);
775 jpm 127
 
822 jpm 128
		creerChampsAuteur();
775 jpm 129
	}
130
 
822 jpm 131
	private void creerChampsAuteur() {
775 jpm 132
		auteursFieldset.removeAll();
133
 
134
		conteneurChamps = new LayoutContainer();
135
 
822 jpm 136
		Button ajouterAuteurBouton = new Button("Ajouter un auteur");
137
		ajouterAuteurBouton.setIcon(Images.ICONES.ajouter());
138
		ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
775 jpm 139
			@Override
140
			public void componentSelected(ButtonEvent be) {
822 jpm 141
				creerChampAuteurEtBoutonSupprimer(null);
775 jpm 142
			}
143
		});
219 aurelien 144
 
775 jpm 145
		auteursFieldset.add(conteneurChamps);
822 jpm 146
		auteursFieldset.add(ajouterAuteurBouton);
775 jpm 147
		auteursFieldset.layout(true);
219 aurelien 148
 
822 jpm 149
		if (mode.equals(Formulaire.MODE_AJOUTER)) {
150
			creerChampAuteurEtBoutonSupprimer(null);
775 jpm 151
		}
152
	}
153
 
822 jpm 154
	public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
775 jpm 155
		final HorizontalPanel panneauHorizontal = new HorizontalPanel();
156
		panneauHorizontal.setLayout(new FormLayout());
219 aurelien 157
 
775 jpm 158
		final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
159
		if (auteur != null) {
160
			GWT.log(auteur.getId(), null);
161
			auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
162
		}
163
		auteurComboboxListe.add(auteursSaisisComboBox);
822 jpm 164
		auteursSaisisComboBox.setFieldLabel("Auteur "+auteurComboboxListe.size());
758 aurelien 165
 
822 jpm 166
		LayoutContainer panneauChampTxtEtBouton = new LayoutContainer();
167
		panneauChampTxtEtBouton.setLayout(new FormLayout());
168
		panneauChampTxtEtBouton.add(auteursSaisisComboBox, new FormData(300, 0));
169
		panneauHorizontal.add(panneauChampTxtEtBouton);
219 aurelien 170
 
822 jpm 171
		Button supprimerAuteurBouton = new Button();
172
		supprimerAuteurBouton.setIcon(Images.ICONES.supprimer());
173
		supprimerAuteurBouton.setToolTip(i18nC.supprimer());
174
		supprimerAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
775 jpm 175
			@Override
176
			public void componentSelected(ButtonEvent be) {
177
				auteurComboboxListe.remove(auteursSaisisComboBox);
178
				conteneurChamps.remove(panneauHorizontal);
822 jpm 179
 
180
				int numeroAuteurs = 1;
181
				for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
182
					it.next().setFieldLabel("Auteur "+numeroAuteurs);
183
					numeroAuteurs++;
184
				}
185
 
775 jpm 186
				auteursFieldset.layout(true);
187
			}
188
		});
822 jpm 189
		panneauHorizontal.add(supprimerAuteurBouton);
190
 
775 jpm 191
		conteneurChamps.add(panneauHorizontal);
192
		auteursFieldset.layout(true);
193
	}
194
 
195
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
196
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
860 jpm 197
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
775 jpm 198
		comboBox.setEditable(true);
199
		comboBox.setForceSelection(true);
200
		comboBox.setDisplayField("fmt_nom_complet");
201
		comboBox.setTriggerAction(TriggerAction.ALL);
202
		comboBox.setStore(auteursStorePartage);
203
 
204
		return comboBox;
205
	}
206
 
207
	private void creerZoneGeneralites() {
208
		FormLayout layout = new FormLayout();
209
		layout.setLabelWidth(200);
219 aurelien 210
 
211
		// Fieldset Infos Générales
775 jpm 212
		generalitesFieldset = new FieldSet();
213
		generalitesFieldset.setHeading("Informations générales");
214
		generalitesFieldset.setCollapsible(true);
215
		generalitesFieldset.setLayout(layout);
219 aurelien 216
 
786 jpm 217
		titreChp = new TextField<String>();
218
		titreChp.setName("cpu");
219
		titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
792 jpm 220
		generalitesFieldset.add(titreChp, new FormData(450, 0));
219 aurelien 221
 
786 jpm 222
		collectionChp = new TextField<String>();
792 jpm 223
		collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
224
		generalitesFieldset.add(collectionChp, new FormData(450, 0));
219 aurelien 225
 
786 jpm 226
		uriChp = new TextField<String>();
792 jpm 227
		uriChp.setFieldLabel("URL de la publication");
228
		generalitesFieldset.add(uriChp, new FormData(450, 0));
775 jpm 229
	}
230
 
231
	private void creerZoneEdition() {
232
		FormLayout layout = new FormLayout();
233
		layout.setLabelWidth(200);
234
 
219 aurelien 235
		// Fieldset Edition
775 jpm 236
		editionFieldset = new FieldSet();
792 jpm 237
		editionFieldset.setHeading("Édition");
775 jpm 238
		editionFieldset.setCollapsible(true);
239
		editionFieldset.setLayout(layout);
219 aurelien 240
 
792 jpm 241
		ListStore<Structure> editeurStore = new ListStore<Structure>();
242
		editeurCombobox = new ComboBox<Structure>();
243
		editeurCombobox.setEmptyText("Sélectionner un éditeur...");
244
		editeurCombobox.setFieldLabel("Éditeur de la publication");
245
		editeurCombobox.setDisplayField("nom");
246
		editeurCombobox.setStore(editeurStore);
247
		editeurCombobox.setEditable(true);
248
		editeurCombobox.setTriggerAction(TriggerAction.ALL);
249
		editionFieldset.add(editeurCombobox, new FormData(450, 0));
250
		mediateur.clicObtenirListeEditeurs(this);
219 aurelien 251
 
786 jpm 252
		datePublicationChp = new TextField<String>();
253
		datePublicationChp.setMaxLength(4);
254
		datePublicationChp.setMinLength(4);
255
		datePublicationChp.setFieldLabel("Année de publication");
792 jpm 256
		editionFieldset.add(datePublicationChp, new FormData(40, 0));
219 aurelien 257
 
786 jpm 258
		tomeChp = new TextField<String>();
792 jpm 259
		tomeChp.setFieldLabel("Série de la revue ou tome");
260
		editionFieldset.add(tomeChp, new FormData(75, 0));
219 aurelien 261
 
786 jpm 262
		fasciculeChp = new TextField<String>();
792 jpm 263
		fasciculeChp.setFieldLabel("Fascicule de la revue");
264
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
219 aurelien 265
 
786 jpm 266
		pagesChp = new TextField<String>();
267
		pagesChp.setFieldLabel("Pages");
887 aurelien 268
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
792 jpm 269
		editionFieldset.add(pagesChp, new FormData(100, 0));
219 aurelien 270
	}
775 jpm 271
 
705 aurelien 272
	public void rafraichir(Object nouvellesDonnees) {
273
		if (nouvellesDonnees instanceof Publication) {
782 jpm 274
			// Si on a reçu les details d'une publication
275
			rafraichirPublication((Publication) nouvellesDonnees);
276
		} else if (nouvellesDonnees instanceof StructureListe) {
277
			// Si on a reçu une liste des editeurs
278
			rafraichirListeEditeurs((StructureListe) nouvellesDonnees);
279
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
280
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
281
		} else if (nouvellesDonnees instanceof Information) {
282
			rafraichirInformation((Information) nouvellesDonnees);
283
		} else {
284
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
227 aurelien 285
		}
286
 
822 jpm 287
		if (etrePretAAfficherAuteurs()) {
288
			afficherAuteurs();
289
		}
290
 
782 jpm 291
		if (etreValide()) {
822 jpm 292
			initialiserValidation();
782 jpm 293
			repandreRafraichissement();
294
			controlerFermetureApresRafraichissement();
219 aurelien 295
		}
782 jpm 296
	}
297
 
786 jpm 298
	private void rafraichirPublication(Publication publi) {
299
		publication = publi;
822 jpm 300
		peuplerFormulaire();
782 jpm 301
	}
302
 
303
	private void rafraichirListeEditeurs(StructureListe editeurs) {
792 jpm 304
		editeurCombobox.getStore().removeAll();
305
		editeurCombobox.getStore().add((List<Structure>) editeurs.toList());
782 jpm 306
 
307
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
792 jpm 308
			editeurCombobox.setValue((Structure) editeurs.get(idStructureEdition));
782 jpm 309
		}
792 jpm 310
		editeurCombobox.expand();
782 jpm 311
	}
312
 
313
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
786 jpm 314
		publicationAPersonneListe = auteurs;
822 jpm 315
		publicationAPersonneListeChargementOk = true;
782 jpm 316
	}
317
 
318
	private void rafraichirInformation(Information info) {
319
		if (info.getType().equals("liste_personne")) {
822 jpm 320
			PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
321
 
782 jpm 322
			List<Personne> liste = listePersonneAuteur.toList();
323
			auteursStorePartage.removeAll();
324
			auteursStorePartage.add(liste);
822 jpm 325
 
326
			auteurStorePartageChargementOk = true;
782 jpm 327
		} else if (info.getType().equals("publication_valide")) {
822 jpm 328
			publicationValideOk = true;
786 jpm 329
			publication.setId((String) info.getDonnee(0));
705 aurelien 330
 
782 jpm 331
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
822 jpm 332
				mediateur.ajouterPublicationAPersonne(this, publication.getId(), idAuteurs, PublicationAPersonne.ROLE_AUTEUR);
782 jpm 333
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
822 jpm 334
				mediateur.modifierPublicationAPersonne(this, publication.getId(), idAuteurs, PublicationAPersonne.ROLE_AUTEUR);
239 aurelien 335
			}
782 jpm 336
		} else if (info.getType().equals("auteur_valide")) {
822 jpm 337
			auteursValideOk = true;
782 jpm 338
		}
339
	}
340
 
822 jpm 341
	private void afficherAuteurs() {
342
		Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
343
		while (itap.hasNext()) {
344
			creerChampAuteurEtBoutonSupprimer(publicationAPersonneListe.get(itap.next()).getPersonne());
345
		}
346
		initialiserAffichageAuteurs();
347
	}
348
 
349
	private void initialiserAffichageAuteurs() {
350
		auteurStorePartageChargementOk = false;
351
		publicationAPersonneListeChargementOk = false;
352
	}
353
 
354
	private boolean etrePretAAfficherAuteurs() {
355
		boolean ok = false;
356
		if (auteurStorePartageChargementOk && publicationAPersonneListeChargementOk) {
357
			ok = true;
358
		}
359
		return ok;
360
	}
361
 
782 jpm 362
	private Boolean etreValide() {
363
		Boolean valide = false;
822 jpm 364
		GWT.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null);
365
		if (formulaireValideOk && publicationValideOk && auteursValideOk) {
782 jpm 366
			valide = true;
367
		}
368
		return valide;
369
	}
370
 
822 jpm 371
	private void initialiserValidation() {
372
		formulaireValideOk = false;
373
		publicationValideOk = false;
374
		auteursValideOk = false;
782 jpm 375
	}
376
 
377
	private void repandreRafraichissement() {
378
		if (vueExterneARafraichirApresValidation != null) {
786 jpm 379
			String type = "publication_modifiee";
380
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
381
				type = "publication_ajoutee";
382
			}
383
			Information info = new Information(type);
384
			info.setDonnee(0, publication);
782 jpm 385
			vueExterneARafraichirApresValidation.rafraichir(info);
386
		}
387
	}
388
 
786 jpm 389
	public boolean soumettreFormulaire() {
822 jpm 390
		formulaireValideOk = verifierFormulaire();
391
		GWT.log("Form?"+formulaireValideOk, null);
392
		if (formulaireValideOk) {
786 jpm 393
			Publication publicationCollectee = collecterPublication();
394
			if (publicationCollectee != null) {
822 jpm 395
				GWT.log("Info collectée ? ok", null);
786 jpm 396
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
397
					mediateur.ajouterPublication(this, publicationCollectee);
398
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
399
					mediateur.modifierPublication(this, publicationCollectee);
741 aurelien 400
				}
239 aurelien 401
			}
402
		}
822 jpm 403
		return formulaireValideOk;
219 aurelien 404
	}
405
 
787 jpm 406
	protected boolean verifierFormulaire() {
782 jpm 407
		boolean valide = true;
408
		ArrayList<String> messages = new ArrayList<String>();
409
 
786 jpm 410
		boolean auteurErreur = true;
775 jpm 411
		for (int i = 0; i < auteurComboboxListe.size(); i++) {
412
			if (auteurComboboxListe.get(i).getValue() != null) {
786 jpm 413
				auteurErreur = false;
782 jpm 414
				break;
227 aurelien 415
			}
416
		}
782 jpm 417
		if (auteurErreur) {
418
			messages.add("Veuillez saisir au moins un auteur !");
705 aurelien 419
		}
420
 
786 jpm 421
		String titre = titreChp.getValue();
782 jpm 422
		if (titre == null || titre.equals("")) {
423
			messages.add("Veuillez saisir le titre de la publication !");
705 aurelien 424
		}
425
 
792 jpm 426
		String uri = uriChp.getValue();
427
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
428
			messages.add("L'URL saisie n'est pas valide !");
429
		}
430
 
799 jpm 431
		String datePublication = datePublicationChp.getRawValue();
432
		if (datePublication == null || datePublication.equals("")) {
433
			messages.add("Veuillez saisir une année de parution !");
725 aurelien 434
		} else {
799 jpm 435
			if (!etreDateValide(datePublication)) {
792 jpm 436
				messages.add("Le format de l'année saisie est incorrect !");
725 aurelien 437
			}
705 aurelien 438
		}
717 aurelien 439
 
792 jpm 440
		String pages = pagesChp.getValue();
441
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
799 jpm 442
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
792 jpm 443
			messages.add("Le format des pages est incorrect !");
444
		}
445
 
782 jpm 446
		if (messages.size() != 0) {
447
			String[] tableauDeMessages = {};
448
			tableauDeMessages = messages.toArray(tableauDeMessages);
799 jpm 449
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
782 jpm 450
			valide = false;
705 aurelien 451
		}
782 jpm 452
		return valide;
775 jpm 453
	}
454
 
822 jpm 455
	private void peuplerFormulaire() {
456
		creerChampsAuteur();
457
		titreChp.setValue(publication.getTitre());
458
		collectionChp.setValue(publication.getCollection());
459
		uriChp.setValue(publication.getURI());
460
		datePublicationChp.setRawValue(reduireDateParAnnee(publication.getDateParution()));
461
		tomeChp.setValue(publication.getIndicationNvt());
462
		fasciculeChp.setValue(publication.getFascicule());
463
		pagesChp.setValue(publication.getPages());
464
 
465
		if (publication.getEditeur().matches("^[0-9]+$")) {
466
			editeurCombobox.setValue(editeurCombobox.getStore().findModel("id_structure", publication.getEditeur()));
467
			idStructureEdition = publication.getEditeur();
468
		} else {
469
			editeurCombobox.setRawValue(publication.getEditeur());
470
		}
471
	}
472
 
786 jpm 473
	private Publication collecterPublication() {
474
		Publication publicationARetourner = null;
475
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
476
 
822 jpm 477
		String auteurIntituleFormate = "";
478
		int auteursNombre = auteurComboboxListe.size();
479
		for (int i = 0; i < auteursNombre; i++) {
786 jpm 480
			if (auteurComboboxListe.get(i).getValue() != null) {
822 jpm 481
				Personne auteur = auteurComboboxListe.get(i).getValue();
482
				idAuteurs += auteur.getId();
483
				auteurIntituleFormate += auteur.getNom()+ " "+auteur.getPrenom();
484
				if (i != (auteursNombre - 1)) {
485
					auteurIntituleFormate += ", ";
786 jpm 486
					idAuteurs += ",";
487
				}
488
			}
489
		}
822 jpm 490
		GWT.log("Auteurs formaté :"+auteurIntituleFormate, null);
491
		GWT.log("Auteurs ids :"+idAuteurs, null);
492
		publicationCollectee.setAuteur(auteurIntituleFormate);
786 jpm 493
 
494
		String titre = titreChp.getValue();
495
		publicationCollectee.setTitre(titre);
496
 
497
		String collection = collectionChp.getValue();
498
		publicationCollectee.setCollection(collection);
499
 
500
		String nomComplet = titreChp.getValue()+" "+collectionChp.getValue();
501
		publicationCollectee.setNomComplet(nomComplet);
502
 
503
		String uri = uriChp.getValue();
504
		publicationCollectee.setUri(uri);
505
 
506
		String editeur = "";
792 jpm 507
		if (editeurCombobox.getValue() != null) {
508
			editeur = editeurCombobox.getValue().getId();
799 jpm 509
			publicationCollectee.setStructureEditeur(editeurCombobox.getValue());
792 jpm 510
		} else if (editeurCombobox.getRawValue() != "") {
511
			editeur = editeurCombobox.getRawValue();
786 jpm 512
		}
513
		publicationCollectee.setEditeur(editeur);
514
 
792 jpm 515
		String anneePublication = datePublicationChp.getRawValue();
516
		String datePublication = anneePublication+"-00-00";
517
		publicationCollectee.setDateParution(datePublication);
786 jpm 518
 
519
		String tome = tomeChp.getValue();
520
		publicationCollectee.setIndicationNvt(tome);
521
 
522
		String fascicule = fasciculeChp.getValue();
523
		publicationCollectee.setFascicule(fascicule);
524
 
525
		String pages = pagesChp.getValue();
526
		publicationCollectee.setPages(pages);
527
 
528
		if (!publicationCollectee.comparer(publication)) {
529
			publicationARetourner = publication = publicationCollectee;
530
		}
531
 
532
		return publicationARetourner;
533
	}
534
 
775 jpm 535
	protected void reinitialiserFormulaire() {
781 jpm 536
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
786 jpm 537
			mediateur.afficherFormPublication(publication.getId());
775 jpm 538
		} else {
539
			mediateur.afficherFormPublication(null);
219 aurelien 540
		}
541
	}
227 aurelien 542
 
792 jpm 543
	private boolean etreDateValide(String anneePublication) {
782 jpm 544
		boolean valide = true;
792 jpm 545
		if (!anneePublication.matches("^[0-2][0-9]{3}$")) {
782 jpm 546
			valide = false;
725 aurelien 547
		}
782 jpm 548
		return valide;
725 aurelien 549
	}
758 aurelien 550
 
551
	private String reduireDateParAnnee(String datePar) {
775 jpm 552
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
758 aurelien 553
			return datePar.split("-")[0];
505 jp_milcent 554
		} else {
758 aurelien 555
			return "";
227 aurelien 556
		}
758 aurelien 557
	}
227 aurelien 558
 
775 jpm 559
	@Override
560
	protected SelectionListener<ButtonEvent> creerEcouteurValidation() {
561
		SelectionListener<ButtonEvent> ecouteur = new SelectionListener<ButtonEvent>() {
227 aurelien 562
			@Override
775 jpm 563
			public void componentSelected(ButtonEvent ce) {
564
				String code = ((Button) ce.getComponent()).getData("code");
565
				if (code.equals(FormulaireBarreValidation.CODE_BOUTON_VALIDER)) {
782 jpm 566
					soumettreFormulaire();
775 jpm 567
					clicBoutonvalidation = true;
568
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_APPLIQUER)) {
782 jpm 569
					soumettreFormulaire();
775 jpm 570
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_ANNULER)) {
571
					mediateur.clicMenu(menuIdCourant);
572
				} else if (code.equals(FormulaireBarreValidation.CODE_BOUTON_REINITIALISER)) {
573
					reinitialiserFormulaire();
227 aurelien 574
				}
575
			}
775 jpm 576
		};
227 aurelien 577
 
775 jpm 578
		return ecouteur;
227 aurelien 579
	}
781 jpm 580
 
505 jp_milcent 581
}