Subversion Repositories eFlore/Applications.coel

Rev

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