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