Subversion Repositories eFlore/Applications.coel

Rev

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