Subversion Repositories eFlore/Applications.coel

Rev

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