Subversion Repositories eFlore/Applications.coel

Rev

Rev 1124 | Rev 1133 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1124 Rev 1131
1
package org.tela_botanica.client.vues.publication;
1
package org.tela_botanica.client.vues.publication;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.Iterator;
4
import java.util.Iterator;
5
import java.util.List;
5
import java.util.List;
6
 
6
 
7
import org.tela_botanica.client.ComposantClass;
7
import org.tela_botanica.client.ComposantClass;
8
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.Mediateur;
9
import org.tela_botanica.client.images.Images;
9
import org.tela_botanica.client.images.Images;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
11
import org.tela_botanica.client.modeles.Information;
11
import org.tela_botanica.client.modeles.Information;
12
import org.tela_botanica.client.modeles.MenuApplicationId;
12
import org.tela_botanica.client.modeles.MenuApplicationId;
13
import org.tela_botanica.client.modeles.personne.Personne;
13
import org.tela_botanica.client.modeles.personne.Personne;
14
import org.tela_botanica.client.modeles.personne.PersonneListe;
14
import org.tela_botanica.client.modeles.personne.PersonneListe;
15
import org.tela_botanica.client.modeles.projet.Projet;
15
import org.tela_botanica.client.modeles.projet.Projet;
16
import org.tela_botanica.client.modeles.projet.ProjetListe;
16
import org.tela_botanica.client.modeles.projet.ProjetListe;
17
import org.tela_botanica.client.modeles.publication.Publication;
17
import org.tela_botanica.client.modeles.publication.Publication;
18
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
18
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
19
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
19
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
20
import org.tela_botanica.client.modeles.structure.Structure;
20
import org.tela_botanica.client.modeles.structure.Structure;
21
import org.tela_botanica.client.modeles.structure.StructureListe;
21
import org.tela_botanica.client.modeles.structure.StructureListe;
-
 
22
import org.tela_botanica.client.util.Debug;
22
import org.tela_botanica.client.util.Pattern;
23
import org.tela_botanica.client.util.Pattern;
23
import org.tela_botanica.client.util.UtilArray;
24
import org.tela_botanica.client.util.UtilArray;
24
import org.tela_botanica.client.util.UtilString;
25
import org.tela_botanica.client.util.UtilString;
25
import org.tela_botanica.client.vues.Formulaire;
26
import org.tela_botanica.client.vues.Formulaire;
26
 
27
 
27
import com.extjs.gxt.ui.client.event.ButtonEvent;
28
import com.extjs.gxt.ui.client.event.ButtonEvent;
28
import com.extjs.gxt.ui.client.event.Events;
29
import com.extjs.gxt.ui.client.event.Events;
29
import com.extjs.gxt.ui.client.event.SelectionListener;
30
import com.extjs.gxt.ui.client.event.SelectionListener;
30
import com.extjs.gxt.ui.client.store.ListStore;
31
import com.extjs.gxt.ui.client.store.ListStore;
31
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
32
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
32
import com.extjs.gxt.ui.client.widget.Info;
33
import com.extjs.gxt.ui.client.widget.Info;
33
import com.extjs.gxt.ui.client.widget.LayoutContainer;
34
import com.extjs.gxt.ui.client.widget.LayoutContainer;
34
import com.extjs.gxt.ui.client.widget.MessageBox;
35
import com.extjs.gxt.ui.client.widget.MessageBox;
35
import com.extjs.gxt.ui.client.widget.button.Button;
36
import com.extjs.gxt.ui.client.widget.button.Button;
36
import com.extjs.gxt.ui.client.widget.form.ComboBox;
37
import com.extjs.gxt.ui.client.widget.form.ComboBox;
37
import com.extjs.gxt.ui.client.widget.form.Field;
38
import com.extjs.gxt.ui.client.widget.form.Field;
38
import com.extjs.gxt.ui.client.widget.form.FieldSet;
39
import com.extjs.gxt.ui.client.widget.form.FieldSet;
39
import com.extjs.gxt.ui.client.widget.form.TextField;
40
import com.extjs.gxt.ui.client.widget.form.TextField;
40
import com.extjs.gxt.ui.client.widget.form.Validator;
41
import com.extjs.gxt.ui.client.widget.form.Validator;
41
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
42
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
42
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
43
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
43
import com.extjs.gxt.ui.client.widget.layout.FormData;
44
import com.extjs.gxt.ui.client.widget.layout.FormData;
44
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
45
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
45
import com.google.gwt.core.client.GWT;
46
import com.google.gwt.core.client.GWT;
46
 
47
 
47
 
48
 
48
public class PublicationForm extends Formulaire implements Rafraichissable {
49
public class PublicationForm extends Formulaire implements Rafraichissable {
49
	
50
	
50
	private Publication publication;
51
	private Publication publication;
51
	private PublicationAPersonneListe publicationAPersonneListe = null;
52
	private PublicationAPersonneListe publicationAPersonneListe = null;
52
	private static boolean publicationAPersonneListeChargementOk = false;
53
	private static boolean publicationAPersonneListeChargementOk = false;
53
	private PublicationAPersonneListe auteursAjoutes = null;
54
	private PublicationAPersonneListe auteursAjoutes = null;
54
	private PublicationAPersonneListe auteursSupprimes = null;
55
	private PublicationAPersonneListe auteursSupprimes = null;
55
	
56
	
56
	private FieldSet auteursFieldset = null;
57
	private FieldSet auteursFieldset = null;
57
	private ComboBox<Projet> projetsCombo = null;
58
	private ComboBox<Projet> projetsCombo = null;
58
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
59
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
59
	private LayoutContainer conteneurChamps;
60
	private LayoutContainer conteneurChamps;
60
	private ListStore<Personne> auteursStorePartage = null;
61
	private ListStore<Personne> auteursStorePartage = null;
61
	private static boolean auteurStorePartageChargementOk = false;
62
	private static boolean auteurStorePartageChargementOk = false;
62
	
63
	
63
	private FieldSet generalitesFieldset = null;
64
	private FieldSet generalitesFieldset = null;
64
	private TextField<String> titreChp = null;
65
	private TextField<String> titreChp = null;
65
	private TextField<String> collectionChp = null;
66
	private TextField<String> collectionChp = null;
66
	private TextField<String> uriChp = null;
67
	private TextField<String> uriChp = null;
67
	
68
	
68
	private FieldSet editionFieldset = null;
69
	private FieldSet editionFieldset = null;
69
	private ComboBox<Structure> editeurCombobox = null;
70
	private ComboBox<Structure> editeurCombobox = null;
70
	private TextField<String> datePublicationChp = null;
71
	private TextField<String> datePublicationChp = null;
71
	private TextField<String> tomeChp = null;
72
	private TextField<String> tomeChp = null;
72
	private TextField<String> fasciculeChp = null;
73
	private TextField<String> fasciculeChp = null;
73
	private TextField<String> pagesChp = null;
74
	private TextField<String> pagesChp = null;
74
	
75
	
75
	private String idStructureEdition = ""; 
76
	private String idStructureEdition = ""; 
76
 
77
 
77
	private static boolean formulaireValideOk = false;
78
	private static boolean formulaireValideOk = false;
78
	private static boolean publicationValideOk = false;
79
	private static boolean publicationValideOk = false;
79
	private static boolean auteursValideOk = false;
80
	private static boolean auteursValideOk = false;
-
 
81
	private static boolean publicationOk = false;
80
	private static boolean attenteAjoutAuteursOk = true;
82
	private static boolean attenteAjoutAuteursOk = true;
81
	private static boolean attenteSuppressionAuteursOk = true;
83
	private static boolean attenteSuppressionAuteursOk = true;
82
 
84
 
83
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
85
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
84
		initialiserPublicationForm(mediateurCourrant, publicationId);
86
		initialiserPublicationForm(mediateurCourrant, publicationId);
85
	}
87
	}
86
 
88
 
87
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
89
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
88
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
90
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
89
		initialiserPublicationForm(mediateurCourrant, publicationId);
91
		initialiserPublicationForm(mediateurCourrant, publicationId);
90
	}
92
	}
91
	
93
	
92
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
94
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
93
		publicationAPersonneListe = new PublicationAPersonneListe();
95
		publicationAPersonneListe = new PublicationAPersonneListe();
94
		initialiserValidation();
96
		initialiserValidation();
95
		initialiserAffichageAuteurs();
97
		initialiserAffichageAuteurs();
96
		
98
		
97
		publication = new Publication();
99
		publication = new Publication();
98
		publication.setId(publicationId);
100
		publication.setId(publicationId);
99
		
101
		
100
		String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
102
		String modeDeCreation = (UtilString.isEmpty(publication.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
101
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
103
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.PUBLICATION);
102
		
104
		
103
		panneauFormulaire.setLayout(new FlowLayout());
105
		panneauFormulaire.setLayout(new FlowLayout());
104
		genererTitreFormulaire();
106
		genererTitreFormulaire();
105
		
107
		
106
		creerZoneAuteurs();
108
		creerZoneAuteurs();
107
		panneauFormulaire.add(auteursFieldset);
109
		panneauFormulaire.add(auteursFieldset);
108
		
110
		
109
		creerZoneGeneralites();
111
		creerZoneGeneralites();
110
		panneauFormulaire.add(generalitesFieldset);
112
		panneauFormulaire.add(generalitesFieldset);
111
		
113
		
112
		creerZoneEdition();
114
		creerZoneEdition();
113
		panneauFormulaire.add(editionFieldset);
115
		panneauFormulaire.add(editionFieldset);
114
		
116
		
115
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
117
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
116
			mediateurCourrant.selectionnerPublication(this, publicationId);
118
			mediateurCourrant.selectionnerPublication(this, publicationId);
117
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR);
119
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR);
118
		}
120
		}
119
	}
121
	}
120
	
122
	
121
	private void genererTitreFormulaire() {
123
	private void genererTitreFormulaire() {
122
		String titre = i18nC.publicationTitreFormAjout();
124
		String titre = i18nC.publicationTitreFormAjout();
123
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
125
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
124
			 titre = i18nC.publicationTitreFormModif();
126
			 titre = i18nC.publicationTitreFormModif();
125
			 if (publication != null) {
127
			 if (publication != null) {
126
				 titre += " - "+i18nC.id()+": "+publication.getId();
128
				 titre += " - "+i18nC.id()+": "+publication.getId();
127
			 }
129
			 }
128
		}
130
		}
129
		panneauFormulaire.setHeading(titre);
131
		panneauFormulaire.setHeading(titre);
130
	}
132
	}
131
	
133
	
132
	private void creerZoneAuteurs() {
134
	private void creerZoneAuteurs() {
133
		FormLayout layout = new FormLayout();
135
		FormLayout layout = new FormLayout();
134
		layout.setLabelWidth(200);
136
		layout.setLabelWidth(200);
135
		
137
		
136
		// Fieldset Auteur
138
		// Fieldset Auteur
137
		auteursFieldset = new FieldSet();
139
		auteursFieldset = new FieldSet();
138
		auteursFieldset.setHeading(i18nC.publicationAuteursTitre());
140
		auteursFieldset.setHeading(i18nC.publicationAuteursTitre());
139
		auteursFieldset.setCollapsible(true);
141
		auteursFieldset.setCollapsible(true);
140
		auteursFieldset.setLayout(layout);
142
		auteursFieldset.setLayout(layout);
-
 
143
		
141
		
144
		Debug.log("Dans creerZoneAuteurs");
142
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
145
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
143
		auteursStorePartage = new ListStore<Personne>();
146
		auteursStorePartage = new ListStore<Personne>();
144
		mediateur.clicObtenirListeAuteurs(this);
147
		mediateur.clicObtenirListeAuteurs(this);
145
		
148
		
146
		creerChampsAuteur();
149
		creerChampsAuteur();
147
	}
150
	}
148
	
151
	
149
	private void creerChampsAuteur() {
152
	private void creerChampsAuteur() {
150
		auteursFieldset.removeAll();
153
		auteursFieldset.removeAll();
151
		conteneurChamps = new LayoutContainer(); 
154
		conteneurChamps = new LayoutContainer(); 
152
				
155
				
153
		Button ajouterAuteurBouton = new Button(i18nC.publicationAuteurBoutonAjouter());
156
		Button ajouterAuteurBouton = new Button(i18nC.publicationAuteurBoutonAjouter());
154
		ajouterAuteurBouton.setIcon(Images.ICONES.ajouter());
157
		ajouterAuteurBouton.setIcon(Images.ICONES.ajouter());
155
		ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
158
		ajouterAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
156
			@Override
159
			@Override
157
			public void componentSelected(ButtonEvent be) {
160
			public void componentSelected(ButtonEvent be) {
158
				creerChampAuteurEtBoutonSupprimer(null);
161
				creerChampAuteurEtBoutonSupprimer(null);
159
			}
162
			}
160
		});
163
		});
161
		
164
		
162
		auteursFieldset.add(conteneurChamps);
165
		auteursFieldset.add(conteneurChamps);
163
		auteursFieldset.add(ajouterAuteurBouton);
166
		auteursFieldset.add(ajouterAuteurBouton);
164
		auteursFieldset.layout(true);
167
		auteursFieldset.layout();
165
		
168
		
166
		if (mode.equals(Formulaire.MODE_AJOUTER)) {
169
		if (mode.equals(Formulaire.MODE_AJOUTER)) {
167
			creerChampAuteurEtBoutonSupprimer(null);
170
			creerChampAuteurEtBoutonSupprimer(null);
168
		}
171
		}
169
	}
172
	}
170
	
173
	
171
	public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
174
	public void creerChampAuteurEtBoutonSupprimer(Personne auteur) {
172
		final HorizontalPanel panneauHorizontal = new HorizontalPanel();
175
		final HorizontalPanel panneauHorizontal = new HorizontalPanel();
173
		panneauHorizontal.setLayout(new FormLayout());
176
		panneauHorizontal.setLayout(new FormLayout());
174
		
177
		
175
		final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
178
		final ComboBox<Personne> auteursSaisisComboBox = creerComboBoxAuteursSaisis();
176
		if (auteur != null) {
179
		if (auteur != null) {
177
			auteursSaisisComboBox.setValue(auteursStorePartage.findModel("id_personne", auteur.getId()));
180
			auteursSaisisComboBox.setValue(auteur);
178
			auteursSaisisComboBox.validate();
181
			auteursSaisisComboBox.validate();
179
		}
182
		}
180
		auteurComboboxListe.add(auteursSaisisComboBox);
183
		auteurComboboxListe.add(auteursSaisisComboBox);
181
		auteursSaisisComboBox.setFieldLabel(i18nC.publicationAuteurSingulier()+" "+auteurComboboxListe.size());
184
		auteursSaisisComboBox.setFieldLabel(i18nC.publicationAuteurSingulier()+" "+auteurComboboxListe.size());
182
		
185
		
183
		LayoutContainer panneauChampTxtEtBouton = new LayoutContainer();
186
		LayoutContainer panneauChampTxtEtBouton = new LayoutContainer();
184
		panneauChampTxtEtBouton.setLayout(new FormLayout());
187
		panneauChampTxtEtBouton.setLayout(new FormLayout());
185
		panneauChampTxtEtBouton.add(auteursSaisisComboBox, new FormData(300, 0));
188
		panneauChampTxtEtBouton.add(auteursSaisisComboBox, new FormData(300, 0));
186
		panneauHorizontal.add(panneauChampTxtEtBouton);
189
		panneauHorizontal.add(panneauChampTxtEtBouton);
187
		
190
		
188
		Button supprimerAuteurBouton = new Button();
191
		Button supprimerAuteurBouton = new Button();
189
		supprimerAuteurBouton.setIcon(Images.ICONES.supprimer());
192
		supprimerAuteurBouton.setIcon(Images.ICONES.supprimer());
190
		supprimerAuteurBouton.setToolTip(i18nC.supprimer());
193
		supprimerAuteurBouton.setToolTip(i18nC.supprimer());
191
		supprimerAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
194
		supprimerAuteurBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
192
			@Override
195
			@Override
193
			public void componentSelected(ButtonEvent be) {
196
			public void componentSelected(ButtonEvent be) {
194
				auteurComboboxListe.remove(auteursSaisisComboBox);
197
				auteurComboboxListe.remove(auteursSaisisComboBox);
195
				conteneurChamps.remove(panneauHorizontal);
198
				conteneurChamps.remove(panneauHorizontal);
196
				
199
				
197
				int numeroAuteurs = 1;
200
				int numeroAuteurs = 1;
198
				for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
201
				for (Iterator<ComboBox<Personne>> it = auteurComboboxListe.iterator(); it.hasNext();) {
199
					it.next().setFieldLabel(i18nC.publicationAuteurSingulier()+" "+numeroAuteurs);
202
					it.next().setFieldLabel(i18nC.publicationAuteurSingulier()+" "+numeroAuteurs);
200
					numeroAuteurs++;
203
					numeroAuteurs++;
201
				}
204
				}
202
 
205
 
203
				auteursFieldset.layout(true);
206
				auteursFieldset.layout();
204
			}
207
			}
205
		});
208
		});
206
		panneauHorizontal.add(supprimerAuteurBouton);
209
		panneauHorizontal.add(supprimerAuteurBouton);
207
		
210
		
208
		conteneurChamps.add(panneauHorizontal);
211
		conteneurChamps.add(panneauHorizontal);
209
		auteursFieldset.layout(true);
212
		auteursFieldset.layout();
210
	}
213
	}
211
	
214
	
212
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
215
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
213
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
216
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
214
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
217
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
215
		comboBox.setEditable(true);
218
		comboBox.setEditable(true);
-
 
219
		comboBox.setAllowBlank(false);
216
		comboBox.setForceSelection(true);
220
		comboBox.setForceSelection(true);
217
		comboBox.setDisplayField("fmt_nom_complet");
221
		comboBox.setDisplayField("fmt_nom_complet");
218
		comboBox.setTriggerAction(TriggerAction.ALL);
222
		comboBox.setTriggerAction(TriggerAction.ALL);
219
		comboBox.setStore(auteursStorePartage);
223
		comboBox.setStore(auteursStorePartage);
220
		comboBox.addStyleName(ComposantClass.OBLIGATOIRE);
224
		comboBox.addStyleName(ComposantClass.OBLIGATOIRE);
221
		comboBox.addListener(Events.Valid, creerEcouteurChampObligatoire());
225
		comboBox.addListener(Events.Valid, creerEcouteurChampObligatoire());
222
 
226
 
223
		return comboBox;
227
		return comboBox;
224
	}
228
	}
225
	
229
	
226
	private void creerZoneGeneralites() {
230
	private void creerZoneGeneralites() {
227
		FormLayout layout = new FormLayout();
231
		FormLayout layout = new FormLayout();
228
		layout.setLabelWidth(200);
232
		layout.setLabelWidth(200);
229
		
233
		
230
		// Fieldset Infos Générales
234
		// Fieldset Infos Générales
231
		generalitesFieldset = new FieldSet();
235
		generalitesFieldset = new FieldSet();
232
		generalitesFieldset.setHeading("Informations générales");
236
		generalitesFieldset.setHeading("Informations générales");
233
		generalitesFieldset.setCollapsible(true);
237
		generalitesFieldset.setCollapsible(true);
234
		generalitesFieldset.setLayout(layout);
238
		generalitesFieldset.setLayout(layout);
235
		
239
		
236
		projetsCombo = new ComboBox<Projet>();
240
		projetsCombo = new ComboBox<Projet>();
237
		projetsCombo.setTabIndex(tabIndex++);
241
		projetsCombo.setTabIndex(tabIndex++);
238
		projetsCombo.setFieldLabel(i18nC.projetChamp());
242
		projetsCombo.setFieldLabel(i18nC.projetChamp());
239
		projetsCombo.setDisplayField("nom");
243
		projetsCombo.setDisplayField("nom");
240
		projetsCombo.setForceSelection(true);
244
		projetsCombo.setForceSelection(true);
241
		projetsCombo.setValidator(new Validator() {
245
		projetsCombo.setValidator(new Validator() {
242
			@Override
246
			@Override
243
			public String validate(Field<?> field, String value) {
247
			public String validate(Field<?> field, String value) {
244
				String retour = null;
248
				String retour = null;
245
				if (field.getRawValue().equals("")) {
249
				if (field.getRawValue().equals("")) {
246
					field.setValue(null);
250
					field.setValue(null);
247
				} else if (projetsCombo.getStore().findModel("nom", field.getRawValue()) == null) {
251
				} else if (projetsCombo.getStore().findModel("nom", field.getRawValue()) == null) {
248
					String contenuBrut = field.getRawValue();
252
					String contenuBrut = field.getRawValue();
249
					field.setValue(null);
253
					field.setValue(null);
250
					field.setRawValue(contenuBrut);
254
					field.setRawValue(contenuBrut);
251
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
255
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
252
				}
256
				}
253
				return retour;
257
				return retour;
254
			}
258
			}
255
		});
259
		});
256
		projetsCombo.setTriggerAction(TriggerAction.ALL);
260
		projetsCombo.setTriggerAction(TriggerAction.ALL);
257
		projetsCombo.setStore(new ListStore<Projet>());
261
		projetsCombo.setStore(new ListStore<Projet>());
258
		projetsCombo.addStyleName(ComposantClass.OBLIGATOIRE);
262
		projetsCombo.addStyleName(ComposantClass.OBLIGATOIRE);
259
		projetsCombo.addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());
263
		projetsCombo.addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());
260
		generalitesFieldset.add(projetsCombo, new FormData(450, 0));
264
		generalitesFieldset.add(projetsCombo, new FormData(450, 0));
261
		mediateur.selectionnerProjet(this, null);
265
		mediateur.selectionnerProjet(this, null);
262
		
266
		
263
		titreChp = new TextField<String>();
267
		titreChp = new TextField<String>();
264
		titreChp.setName("cpu");
268
		titreChp.setName("cpu");
265
		titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
269
		titreChp.setFieldLabel("Titre de l'article ou de l'ouvrage");
266
		titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
270
		titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
267
		titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
271
		titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
268
		generalitesFieldset.add(titreChp, new FormData(450, 0));
272
		generalitesFieldset.add(titreChp, new FormData(450, 0));
269
		
273
		
270
		collectionChp = new TextField<String>();
274
		collectionChp = new TextField<String>();
271
		collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
275
		collectionChp.setFieldLabel("Intitulé de la revue ou de la collection");
272
		generalitesFieldset.add(collectionChp, new FormData(450, 0));
276
		generalitesFieldset.add(collectionChp, new FormData(450, 0));
273
		
277
		
274
		uriChp = new TextField<String>();
278
		uriChp = new TextField<String>();
275
		uriChp.setFieldLabel("URL de la publication");
279
		uriChp.setFieldLabel("URL de la publication");
276
		generalitesFieldset.add(uriChp, new FormData(450, 0));
280
		generalitesFieldset.add(uriChp, new FormData(450, 0));
277
	}
281
	}
278
	
282
	
279
	private void creerZoneEdition() {
283
	private void creerZoneEdition() {
280
		FormLayout layout = new FormLayout();
284
		FormLayout layout = new FormLayout();
281
		layout.setLabelWidth(200);
285
		layout.setLabelWidth(200);
282
 
286
 
283
		// Fieldset Edition
287
		// Fieldset Edition
284
		editionFieldset = new FieldSet();
288
		editionFieldset = new FieldSet();
285
		editionFieldset.setHeading("Édition");
289
		editionFieldset.setHeading("Édition");
286
		editionFieldset.setCollapsible(true);
290
		editionFieldset.setCollapsible(true);
287
		editionFieldset.setLayout(layout);
291
		editionFieldset.setLayout(layout);
288
		
292
		
289
		ListStore<Structure> editeurStore = new ListStore<Structure>();
293
		ListStore<Structure> editeurStore = new ListStore<Structure>();
290
		editeurCombobox = new ComboBox<Structure>();  
294
		editeurCombobox = new ComboBox<Structure>();  
291
		editeurCombobox.setEmptyText("Sélectionner un éditeur...");
295
		editeurCombobox.setEmptyText("Sélectionner un éditeur...");
292
		editeurCombobox.setFieldLabel("Éditeur de la publication");
296
		editeurCombobox.setFieldLabel("Éditeur de la publication");
293
		editeurCombobox.setDisplayField("nom");
297
		editeurCombobox.setDisplayField("nom");
294
		editeurCombobox.setStore(editeurStore);
298
		editeurCombobox.setStore(editeurStore);
295
		editeurCombobox.setEditable(true);
299
		editeurCombobox.setEditable(true);
296
		editeurCombobox.setTriggerAction(TriggerAction.ALL);
300
		editeurCombobox.setTriggerAction(TriggerAction.ALL);
297
		editionFieldset.add(editeurCombobox, new FormData(450, 0));
301
		editionFieldset.add(editeurCombobox, new FormData(450, 0));
298
		mediateur.clicObtenirListeEditeurs(this);
302
		mediateur.clicObtenirListeEditeurs(this);
299
		
303
		
300
		datePublicationChp = new TextField<String>();
304
		datePublicationChp = new TextField<String>();
301
		datePublicationChp.setMaxLength(4);
305
		datePublicationChp.setMaxLength(4);
302
		datePublicationChp.setMinLength(4);
306
		datePublicationChp.setMinLength(4);
303
		datePublicationChp.setFieldLabel("Année de publication");
307
		datePublicationChp.setFieldLabel("Année de publication");
304
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
308
		datePublicationChp.addStyleName(ComposantClass.OBLIGATOIRE);
305
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
309
		datePublicationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
306
		editionFieldset.add(datePublicationChp, new FormData(40, 0));
310
		editionFieldset.add(datePublicationChp, new FormData(40, 0));
307
		
311
		
308
		tomeChp = new TextField<String>();
312
		tomeChp = new TextField<String>();
309
		tomeChp.setFieldLabel("Série de la revue ou tome");
313
		tomeChp.setFieldLabel("Série de la revue ou tome");
310
		editionFieldset.add(tomeChp, new FormData(75, 0));
314
		editionFieldset.add(tomeChp, new FormData(75, 0));
311
		
315
		
312
		fasciculeChp = new TextField<String>();
316
		fasciculeChp = new TextField<String>();
313
		fasciculeChp.setFieldLabel("Fascicule de la revue");
317
		fasciculeChp.setFieldLabel("Fascicule de la revue");
314
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
318
		editionFieldset.add(fasciculeChp, new FormData(75, 0));
315
		
319
		
316
		pagesChp = new TextField<String>();
320
		pagesChp = new TextField<String>();
317
		pagesChp.setFieldLabel("Pages");
321
		pagesChp.setFieldLabel("Pages");
318
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
322
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
319
		editionFieldset.add(pagesChp, new FormData(100, 0));
323
		editionFieldset.add(pagesChp, new FormData(100, 0));
320
	}
324
	}
321
 
325
 
322
	public void rafraichir(Object nouvellesDonnees) {
326
	public void rafraichir(Object nouvellesDonnees) {
323
		if (nouvellesDonnees instanceof Publication) {
327
		if (nouvellesDonnees instanceof Publication) {
324
			// Si on a reçu les details d'une publication
328
			// Si on a reçu les details d'une publication
325
			rafraichirPublication((Publication) nouvellesDonnees);
329
			rafraichirPublication((Publication) nouvellesDonnees);
326
		} else if (nouvellesDonnees instanceof StructureListe) {
330
		} else if (nouvellesDonnees instanceof StructureListe) {
327
			// Si on a reçu une liste des editeurs
331
			// Si on a reçu une liste des editeurs
328
			rafraichirListeEditeurs((StructureListe) nouvellesDonnees);
332
			rafraichirListeEditeurs((StructureListe) nouvellesDonnees);
329
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
333
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
330
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
334
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
331
		} else if (nouvellesDonnees instanceof Information) {
335
		} else if (nouvellesDonnees instanceof Information) {
332
			rafraichirInformation((Information) nouvellesDonnees);	
336
			rafraichirInformation((Information) nouvellesDonnees);	
333
		} else if (nouvellesDonnees instanceof ProjetListe) {
337
		} else if (nouvellesDonnees instanceof ProjetListe) {
334
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
338
			ProjetListe projets = (ProjetListe) nouvellesDonnees;
335
			Formulaire.rafraichirComboBox(projets, projetsCombo);
339
			Formulaire.rafraichirComboBox(projets, projetsCombo);
336
			setValeurComboProjets();
340
			setValeurComboProjets();
337
		} else {
341
		} else {
338
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
342
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
339
		}
343
		}
340
		
344
		
341
		if (etrePretAAfficherAuteurs()) {
345
		if (etrePretAAfficherAuteurs()) {
342
			initialiserAffichageAuteurs();
-
 
343
			afficherAuteurs();
346
			afficherAuteurs();
-
 
347
			initialiserAffichageAuteurs();
344
		}
348
		}
345
		
349
		
346
		if (etreValide()) {
350
		if (etreValide()) {
347
			initialiserValidation();
351
			initialiserValidation();
348
			repandreRafraichissement();
352
			repandreRafraichissement();
349
			controlerFermetureApresRafraichissement();
353
			controlerFermetureApresRafraichissement();
350
		}
354
		}
351
	}
355
	}
352
	
356
	
353
	private void miseAJourPublicationAPersonneListe() {
357
	private void miseAJourPublicationAPersonneListe() {
354
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
358
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
355
		while (clesAjoutees.hasNext()) {
359
		while (clesAjoutees.hasNext()) {
356
			String id = clesAjoutees.next();
360
			String id = clesAjoutees.next();
357
			publicationAPersonneListe.put(id, auteursAjoutes.get(id));
361
			publicationAPersonneListe.put(id, auteursAjoutes.get(id));
358
		}
362
		}
359
		
363
		
360
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
364
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
361
		while (clesSupprimees.hasNext()) {
365
		while (clesSupprimees.hasNext()) {
362
			String id = clesSupprimees.next();
366
			String id = clesSupprimees.next();
363
			publicationAPersonneListe.remove(id);
367
			publicationAPersonneListe.remove(id);
364
		}
368
		}
365
	}
369
	}
366
	
370
	
367
	private void rafraichirPublication(Publication publi) {
371
	private void rafraichirPublication(Publication publi) {
-
 
372
		publicationOk = true;
368
		publication = publi;
373
		publication = publi;
369
		peuplerFormulaire();
374
		peuplerFormulaire();
370
		genererTitreFormulaire();
375
		genererTitreFormulaire();
371
	}
376
	}
372
	
377
	
373
	private void rafraichirListeEditeurs(StructureListe editeurs) {
378
	private void rafraichirListeEditeurs(StructureListe editeurs) {
374
		editeurCombobox.getStore().removeAll();
379
		editeurCombobox.getStore().removeAll();
375
		editeurCombobox.getStore().add((List<Structure>) editeurs.toList());
380
		editeurCombobox.getStore().add((List<Structure>) editeurs.toList());
376
		
381
		
377
		if (mode.equals(Formulaire.MODE_MODIFIER)) {	
382
		if (mode.equals(Formulaire.MODE_MODIFIER)) {	
378
			editeurCombobox.setValue((Structure) editeurs.get(idStructureEdition));
383
			editeurCombobox.setValue((Structure) editeurs.get(idStructureEdition));
379
		}
384
		}
380
		editeurCombobox.expand();
385
		editeurCombobox.expand();
381
	}
386
	}
382
	
387
	
383
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
388
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
384
		publicationAPersonneListe = auteurs;
389
		publicationAPersonneListe = auteurs;
385
		publicationAPersonneListeChargementOk = true;
390
		publicationAPersonneListeChargementOk = true;
386
	}
391
	}
387
	
392
	
388
	private void rafraichirInformation(Information info) {
393
	private void rafraichirInformation(Information info) {
389
		String type = info.getType();
394
		String type = info.getType();
390
		if (type.equals("ajout_publication") || type.equals("modif_publication")) {
395
		if (type.equals("ajout_publication") || type.equals("modif_publication")) {
391
			publicationValideOk = true;
396
			publicationValideOk = true;
392
			if (vueExterneARafraichirApresValidation != null) {
397
			if (vueExterneARafraichirApresValidation != null) {
393
				publication.setId((String) info.getDonnee(0));
398
				publication.setId((String) info.getDonnee(0));
394
			}
399
			}
395
			
400
			
396
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
401
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
397
				attenteAjoutAuteursOk = true;
402
				attenteAjoutAuteursOk = true;
398
				mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
403
				mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
399
			}
404
			}
400
		}
405
		}
401
		
406
		
402
		if (info.getType().equals("liste_personne")) {
407
		if (info.getType().equals("liste_personne")) {
403
			PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
408
			PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
404
			
409
			
405
			List<Personne> liste = listePersonneAuteur.toList();
410
			List<Personne> liste = listePersonneAuteur.toList();
406
			auteursStorePartage.removeAll();
411
			auteursStorePartage.removeAll();
407
			auteursStorePartage.add(liste);
412
			auteursStorePartage.add(liste);
408
			
413
			
409
			auteurStorePartageChargementOk = true;
414
			auteurStorePartageChargementOk = true;
410
		} else if (info.getType().equals("ajout_publication_a_personne")) {
415
		} else if (info.getType().equals("ajout_publication_a_personne")) {
411
			attenteAjoutAuteursOk = false;
416
			attenteAjoutAuteursOk = false;
412
			GWT.log("attenteAjoutAuteursOk", null);
417
			GWT.log("attenteAjoutAuteursOk", null);
413
		} else if (info.getType().equals("suppression_publication_a_personne")) {
418
		} else if (info.getType().equals("suppression_publication_a_personne")) {
414
			attenteSuppressionAuteursOk = false;
419
			attenteSuppressionAuteursOk = false;
415
			GWT.log("attenteSuppressionAuteursOk", null);
420
			GWT.log("attenteSuppressionAuteursOk", null);
416
		} else if (info.getType().equals("modif_publication")) {
421
		} else if (info.getType().equals("modif_publication")) {
417
			Info.display("Modification d'une publication", info.toString());
422
			Info.display("Modification d'une publication", info.toString());
418
		} else if (info.getType().equals("ajout_publication")) {
423
		} else if (info.getType().equals("ajout_publication")) {
419
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
424
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
420
				String publicationId = (String) info.getDonnee(0);
425
				String publicationId = (String) info.getDonnee(0);
421
				Info.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
426
				Info.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
422
				if (vueExterneARafraichirApresValidation != null) {
427
				if (vueExterneARafraichirApresValidation != null) {
423
					publication.setId(publicationId);
428
					publication.setId(publicationId);
424
				}
429
				}
425
			} else {
430
			} else {
426
				Info.display("Ajout d'une publication", info.toString());
431
				Info.display("Ajout d'une publication", info.toString());
427
			}
432
			}
428
		}
433
		}
429
		
434
		
430
		if (avoirAuteursMiseAJourCorrectement()) {
435
		if (avoirAuteursMiseAJourCorrectement()) {
431
			auteursValideOk = true;
436
			Debug.log("Mise à jour liste auteur");
432
			miseAJourPublicationAPersonneListe();
437
			miseAJourPublicationAPersonneListe();
433
			initialiserAuteurs();
438
			initialiserAuteurs();
-
 
439
			auteursValideOk = true;
434
		}
440
		}
435
	}
441
	}
436
	
442
	
437
	private boolean avoirAuteursMiseAJourCorrectement() {
443
	private boolean avoirAuteursMiseAJourCorrectement() {
438
		boolean ok = false;
444
		boolean ok = false;
439
		if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) {
445
		if (attenteAjoutAuteursOk == false && attenteSuppressionAuteursOk == false) {
440
			ok = true;
446
			ok = true;
441
		}
447
		}
442
		return ok;
448
		return ok;
443
	}
449
	}
444
	
450
	
445
	private void afficherAuteurs() {
451
	private void afficherAuteurs() {
446
		Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
452
		Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
447
		while (itap.hasNext()) {
453
		while (itap.hasNext()) {
448
			creerChampAuteurEtBoutonSupprimer(publicationAPersonneListe.get(itap.next()).getPersonne());
454
			creerChampAuteurEtBoutonSupprimer(publicationAPersonneListe.get(itap.next()).getPersonne());
449
		}
455
		}
450
	}
456
	}
451
 
457
 
452
	private void initialiserAffichageAuteurs() {
458
	private void initialiserAffichageAuteurs() {
-
 
459
		publicationOk = false;
453
		auteurStorePartageChargementOk = false;
460
		auteurStorePartageChargementOk = false;
454
		publicationAPersonneListeChargementOk = false;
461
		publicationAPersonneListeChargementOk = false;
455
	}
462
	}
456
 
463
 
457
	private boolean etrePretAAfficherAuteurs() {
464
	private boolean etrePretAAfficherAuteurs() {
458
		boolean ok = false;
465
		boolean ok = false;
459
		if (auteurStorePartageChargementOk && publicationAPersonneListeChargementOk) {
466
		if (publicationOk && auteurStorePartageChargementOk && publicationAPersonneListeChargementOk) {
460
			ok = true;
467
			ok = true;
461
		}
468
		}
462
		return ok;
469
		return ok;
463
	}
470
	}
464
 
471
 
465
	private Boolean etreValide() {
472
	private Boolean etreValide() {
466
		Boolean valide = false;
473
		Boolean valide = false;
467
		//Debug.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null);
474
		//Debug.log("formulaire"+formulaireValideOk+" - Publication :"+publicationValideOk+" - Auteurs :"+auteursValideOk, null);
468
		if (formulaireValideOk && publicationValideOk && auteursValideOk) {
475
		if (formulaireValideOk && publicationValideOk && auteursValideOk) {
469
			valide = true;
476
			valide = true;
470
		}
477
		}
471
		return valide;
478
		return valide;
472
	}
479
	}
473
	
480
	
474
	private void initialiserValidation() {
481
	private void initialiserValidation() {
475
		formulaireValideOk = false;
482
		formulaireValideOk = false;
476
		publicationValideOk = false;
483
		publicationValideOk = false;
477
		initialiserAuteurs();
484
		initialiserAuteurs();
478
		auteursValideOk = false;
485
		auteursValideOk = false;
479
	}
486
	}
480
	
487
	
481
	private void initialiserAuteurs() {
488
	private void initialiserAuteurs() {
482
		attenteAjoutAuteursOk = true;
489
		attenteAjoutAuteursOk = true;
483
		auteursAjoutes = new PublicationAPersonneListe();
490
		auteursAjoutes = new PublicationAPersonneListe();
484
		attenteSuppressionAuteursOk = true;
491
		attenteSuppressionAuteursOk = true;
485
		auteursSupprimes = new PublicationAPersonneListe();
492
		auteursSupprimes = new PublicationAPersonneListe();
486
	}
493
	}
487
	
494
	
488
	private void repandreRafraichissement() {
495
	private void repandreRafraichissement() {
489
		if (vueExterneARafraichirApresValidation != null) {
496
		if (vueExterneARafraichirApresValidation != null) {
490
			String type = "publication_modifiee";
497
			String type = "publication_modifiee";
491
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
498
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
492
				type = "publication_ajoutee";
499
				type = "publication_ajoutee";
493
			}
500
			}
494
			Information info = new Information(type);
501
			Information info = new Information(type);
495
			info.setDonnee(0, publication);
502
			info.setDonnee(0, publication);
496
			vueExterneARafraichirApresValidation.rafraichir(info);
503
			vueExterneARafraichirApresValidation.rafraichir(info);
497
		}
504
		}
498
	}
505
	}
499
	
506
	
500
	public boolean soumettreFormulaire() {
507
	public boolean soumettreFormulaire() {
501
		formulaireValideOk = verifierFormulaire();
508
		formulaireValideOk = verifierFormulaire();
502
		if (formulaireValideOk) {
509
		if (formulaireValideOk) {
503
			soumettrePublication();
510
			soumettrePublication();
504
			soumettreAuteurs();
511
			soumettreAuteurs();
505
		}
512
		}
506
		return formulaireValideOk;
513
		return formulaireValideOk;
507
	}
514
	}
508
	
515
	
509
	private void soumettrePublication() {
516
	private void soumettrePublication() {
510
		Publication publicationCollectee = collecterPublication();
517
		Publication publicationCollectee = collecterPublication();
511
		if (publicationCollectee != null) {
518
		if (publicationCollectee != null) {
512
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
519
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
513
				mediateur.ajouterPublication(this, publicationCollectee);
520
				mediateur.ajouterPublication(this, publicationCollectee);
514
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
521
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
515
				mediateur.modifierPublication(this, publicationCollectee);
522
				mediateur.modifierPublication(this, publicationCollectee);
516
			}
523
			}
517
		}
524
		}
518
	}
525
	}
519
	
526
	
520
	private void soumettreAuteurs() {
527
	private void soumettreAuteurs() {
521
		attenteAjoutAuteursOk = false;
528
		attenteAjoutAuteursOk = false;
522
		attenteSuppressionAuteursOk = false;
529
		attenteSuppressionAuteursOk = false;
523
		
530
		
524
		PersonneListe personnesInitiales = new PersonneListe();
531
		PersonneListe personnesInitiales = new PersonneListe();
525
		if (publicationAPersonneListe != null) {
532
		if (publicationAPersonneListe != null) {
526
			Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
533
			Iterator<String> itap = publicationAPersonneListe.keySet().iterator();
527
			while (itap.hasNext()) {
534
			while (itap.hasNext()) {
528
				Personne personne = publicationAPersonneListe.get(itap.next()).getPersonne();
535
				Personne personne = publicationAPersonneListe.get(itap.next()).getPersonne();
529
				personnesInitiales.put(personne.getId(), personne);
536
				personnesInitiales.put(personne.getId(), personne);
530
			}
537
			}
531
		}
538
		}
532
		
539
		
533
		PersonneListe personnesActuelles = new PersonneListe();
540
		PersonneListe personnesActuelles = new PersonneListe();
534
		for (int i = 0; i < auteurComboboxListe.size(); i++) {
541
		if (auteurComboboxListe != null) {
535
			if (auteurComboboxListe.get(i).getValue() != null) {
542
			Iterator<ComboBox<Personne>> itcp = auteurComboboxListe.iterator();
-
 
543
			while (itcp.hasNext()) {
536
				Personne personne = auteurComboboxListe.get(i).getValue();
544
				Personne personne = itcp.next().getValue();
-
 
545
				if (personne != null) {
537
				personnesActuelles.put(personne.getId(), personne);
546
					personnesActuelles.put(personne.getId(), personne);
-
 
547
				} else {
-
 
548
					Debug.log(itcp.next().getRawValue());
-
 
549
				}
538
			}
550
			}
539
		}
551
		}
540
		
552
		
541
		// Auteurs ajoutés
553
		// Auteurs ajoutés
542
		Iterator<String> clesActuelles = personnesActuelles.keySet().iterator();
554
		Iterator<String> clesActuelles = personnesActuelles.keySet().iterator();
543
		while (clesActuelles.hasNext()) {
555
		while (clesActuelles.hasNext()) {
544
			String idActuel = clesActuelles.next();
556
			String idActuel = clesActuelles.next();
545
			if (personnesInitiales.size() == 0 || personnesInitiales.get(idActuel) == null) {
557
			if (personnesInitiales.size() == 0 || personnesInitiales.get(idActuel) == null) {
546
				Personne personne = personnesActuelles.get(idActuel);
558
				Personne personne = personnesActuelles.get(idActuel);
547
				PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
559
				PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
548
				if (mode.equals(Formulaire.MODE_MODIFIER)) {
560
				if (mode.equals(Formulaire.MODE_MODIFIER)) {
549
					publicationAAuteur.setIdPublication(publication.getId());
561
					publicationAAuteur.setIdPublication(publication.getId());
550
				}
562
				}
551
				publicationAAuteur.setPersonne(personne);
563
				publicationAAuteur.setPersonne(personne);
552
				publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
564
				publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
553
				auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur);
565
				auteursAjoutes.put(publicationAAuteur.getId(), publicationAAuteur);
554
				attenteAjoutAuteursOk = true;
566
				attenteAjoutAuteursOk = true;
555
			}
567
			}
556
		}
568
		}
557
 
569
 
558
		// Auteurs supprimés
570
		// Auteurs supprimés
559
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
571
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
560
			Iterator<String> clesInitiales = personnesInitiales.keySet().iterator();
572
			Iterator<String> clesInitiales = personnesInitiales.keySet().iterator();
561
			while (clesInitiales.hasNext()) {
573
			while (clesInitiales.hasNext()) {
562
				String idInitial = clesInitiales.next();
574
				String idInitial = clesInitiales.next();
563
				if (personnesActuelles.size() == 0 || personnesActuelles.get(idInitial) == null) {
575
				if (personnesActuelles.size() == 0 || personnesActuelles.get(idInitial) == null) {
564
					Personne personne = personnesInitiales.get(idInitial);
576
					Personne personne = personnesInitiales.get(idInitial);
565
					PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
577
					PublicationAPersonne publicationAAuteur = new PublicationAPersonne();
566
					publicationAAuteur.setIdPublication(publication.getId());
578
					publicationAAuteur.setIdPublication(publication.getId());
567
					publicationAAuteur.setPersonne(personne);
579
					publicationAAuteur.setPersonne(personne);
568
					publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
580
					publicationAAuteur.setIdRole(PublicationAPersonne.ROLE_AUTEUR);
569
					auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur);
581
					auteursSupprimes.put(publicationAAuteur.getId(), publicationAAuteur);
570
					attenteSuppressionAuteursOk = true;
582
					attenteSuppressionAuteursOk = true;
571
				}
583
				}
572
			}
584
			}
573
		}
585
		}
574
		
586
		
575
		// Execution de les mise à jour pour le mode MODIFICATION
587
		// Execution de les mise à jour pour le mode MODIFICATION
576
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
588
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
577
			if (auteursAjoutes != null && auteursAjoutes.size() != 0) {
589
			if (auteursAjoutes != null && auteursAjoutes.size() != 0) {
578
				mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
590
				mediateur.ajouterPublicationAPersonne(this, publication.getId(), auteursAjoutes, PublicationAPersonne.ROLE_AUTEUR);
579
			}
591
			}
580
			
592
			
581
			if (auteursSupprimes != null && auteursSupprimes.size() != 0) {
593
			if (auteursSupprimes != null && auteursSupprimes.size() != 0) {
582
				mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
594
				mediateur.supprimerPublicationAPersonne(this, auteursSupprimes);
583
			}
595
			}
584
		}
596
		}
-
 
597
		Debug.log("personnesInitiales:"+personnesInitiales.size()+" - personnesActuelles :"+personnesActuelles.size()+" - auteursSupprimes :"+auteursSupprimes.size()+" - auteursAjoutes :"+auteursAjoutes.size());
585
	}
598
	}
586
	
599
	
587
	public boolean verifierFormulaire() {
600
	public boolean verifierFormulaire() {
588
		boolean valide = true;
601
		boolean valide = true;
589
		ArrayList<String> messages = new ArrayList<String>();
602
		ArrayList<String> messages = new ArrayList<String>();
590
		
603
		
591
		boolean auteurErreur = true;
604
		boolean auteurErreur = true;
592
		for (int i = 0; i < auteurComboboxListe.size(); i++) {
605
		for (int i = 0; i < auteurComboboxListe.size(); i++) {
593
			if (auteurComboboxListe.get(i).getValue() != null) {
606
			if (auteurComboboxListe.get(i).getValue() != null) {
594
				auteurErreur = false;
607
				auteurErreur = false;
595
				break;
608
				break;
596
			}
609
			}
597
		}
610
		}
598
		if (auteurErreur) {
611
		if (auteurErreur) {
599
			messages.add("Veuillez saisir au moins un auteur !");
612
			messages.add("Veuillez saisir au moins un auteur !");
600
		}
613
		}
601
		
614
		
602
		String titre = titreChp.getValue();
615
		String titre = titreChp.getValue();
603
		if (titre == null || titre.equals("")) {
616
		if (titre == null || titre.equals("")) {
604
			messages.add("Veuillez saisir le titre de la publication !");
617
			messages.add("Veuillez saisir le titre de la publication !");
605
		}
618
		}
606
		
619
		
607
		String uri = uriChp.getValue();
620
		String uri = uriChp.getValue();
608
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
621
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
609
			messages.add("L'URL saisie n'est pas valide !");
622
			messages.add("L'URL saisie n'est pas valide !");
610
		}
623
		}
611
		
624
		
612
		String datePublication = datePublicationChp.getRawValue();
625
		String datePublication = datePublicationChp.getRawValue();
613
		if (datePublication == null || datePublication.equals("")) {
626
		if (datePublication == null || datePublication.equals("")) {
614
			messages.add("Veuillez saisir une année de parution !");
627
			messages.add("Veuillez saisir une année de parution !");
615
		} else {
628
		} else {
616
			if (!etreDateValide(datePublication)) {
629
			if (!etreDateValide(datePublication)) {
617
				messages.add("Le format de l'année saisie est incorrect !");
630
				messages.add("Le format de l'année saisie est incorrect !");
618
			}
631
			}
619
		}
632
		}
620
		
633
		
621
		String pages = pagesChp.getValue();
634
		String pages = pagesChp.getValue();
622
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
635
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
623
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
636
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
624
			messages.add("Le format des pages est incorrect !");
637
			messages.add("Le format des pages est incorrect !");
625
		}
638
		}
626
		
639
		
627
		if (messages.size() != 0) {
640
		if (messages.size() != 0) {
628
			String[] tableauDeMessages = {};
641
			String[] tableauDeMessages = {};
629
			tableauDeMessages = messages.toArray(tableauDeMessages);
642
			tableauDeMessages = messages.toArray(tableauDeMessages);
630
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
643
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
631
			valide = false;
644
			valide = false;
632
		}
645
		}
633
		return valide;		
646
		return valide;		
634
	}
647
	}
635
	
648
	
636
	private void peuplerFormulaire() {
649
	private void peuplerFormulaire() {
637
		creerChampsAuteur();
650
		creerChampsAuteur();
638
		setValeurComboProjets();
651
		setValeurComboProjets();
639
		titreChp.setValue(publication.getTitre());
652
		titreChp.setValue(publication.getTitre());
640
		collectionChp.setValue(publication.getCollection());
653
		collectionChp.setValue(publication.getCollection());
641
		uriChp.setValue(publication.getURI());
654
		uriChp.setValue(publication.getURI());
642
		datePublicationChp.setValue(reduireDateParAnnee(publication.getDateParution()));
655
		datePublicationChp.setValue(reduireDateParAnnee(publication.getDateParution()));
643
		tomeChp.setValue(publication.getIndicationNvt());
656
		tomeChp.setValue(publication.getIndicationNvt());
644
		fasciculeChp.setValue(publication.getFascicule());
657
		fasciculeChp.setValue(publication.getFascicule());
645
		pagesChp.setValue(publication.getPages());
658
		pagesChp.setValue(publication.getPages());
646
		
659
		
647
		if (publication.getEditeur().matches("^[0-9]+$")) {
660
		if (publication.getEditeur().matches("^[0-9]+$")) {
648
			editeurCombobox.setValue(editeurCombobox.getStore().findModel("id_structure", publication.getEditeur()));
661
			editeurCombobox.setValue(editeurCombobox.getStore().findModel("id_structure", publication.getEditeur()));
649
			idStructureEdition = publication.getEditeur();
662
			idStructureEdition = publication.getEditeur();
650
		} else {
663
		} else {
651
			editeurCombobox.setRawValue(publication.getEditeur());
664
			editeurCombobox.setRawValue(publication.getEditeur());
652
		}
665
		}
653
	}
666
	}
654
	
667
	
655
	private Publication collecterPublication() {
668
	private Publication collecterPublication() {
656
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
669
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
657
		
670
		
658
		publicationCollectee.setIdProjet(getValeurComboProjets());
671
		publicationCollectee.setIdProjet(getValeurComboProjets());
659
		
672
		
660
		publicationCollectee.setAuteur(construireIntituleAuteur());
673
		publicationCollectee.setAuteur(construireIntituleAuteur());
661
		
674
		
662
		String titre = titreChp.getValue();
675
		String titre = titreChp.getValue();
663
		publicationCollectee.setTitre(titre);
676
		publicationCollectee.setTitre(titre);
664
		
677
		
665
		String collection = collectionChp.getValue();
678
		String collection = collectionChp.getValue();
666
		publicationCollectee.setCollection(collection);
679
		publicationCollectee.setCollection(collection);
667
		
680
		
668
		publicationCollectee.setNomComplet(construireNomComplet());
681
		publicationCollectee.setNomComplet(construireNomComplet());
669
		
682
		
670
		String uri = uriChp.getValue();
683
		String uri = uriChp.getValue();
671
		publicationCollectee.setUri(uri);
684
		publicationCollectee.setUri(uri);
672
		
685
		
673
		String editeur = "";
686
		String editeur = "";
674
		if (editeurCombobox.getValue() != null) {
687
		if (editeurCombobox.getValue() != null) {
675
			editeur = editeurCombobox.getValue().getId();
688
			editeur = editeurCombobox.getValue().getId();
676
			publicationCollectee.setStructureEditeur(editeurCombobox.getValue());
689
			publicationCollectee.setStructureEditeur(editeurCombobox.getValue());
677
		} else if (editeurCombobox.getRawValue() != "") {
690
		} else if (editeurCombobox.getRawValue() != "") {
678
			editeur = editeurCombobox.getRawValue();
691
			editeur = editeurCombobox.getRawValue();
679
		}
692
		}
680
		publicationCollectee.setEditeur(editeur);
693
		publicationCollectee.setEditeur(editeur);
681
		
694
		
682
		String anneePublication = datePublicationChp.getRawValue();
695
		String anneePublication = datePublicationChp.getRawValue();
683
		String datePublication = anneePublication+"-00-00";
696
		String datePublication = anneePublication+"-00-00";
684
		publicationCollectee.setDateParution(datePublication);
697
		publicationCollectee.setDateParution(datePublication);
685
		
698
		
686
		String tome = tomeChp.getValue();
699
		String tome = tomeChp.getValue();
687
		publicationCollectee.setIndicationNvt(tome);
700
		publicationCollectee.setIndicationNvt(tome);
688
		
701
		
689
		String fascicule = fasciculeChp.getValue();
702
		String fascicule = fasciculeChp.getValue();
690
		publicationCollectee.setFascicule(fascicule);
703
		publicationCollectee.setFascicule(fascicule);
691
		
704
		
692
		String pages = pagesChp.getValue();
705
		String pages = pagesChp.getValue();
693
		publicationCollectee.setPages(pages);
706
		publicationCollectee.setPages(pages);
694
		
707
		
695
		Publication publicationARetourner = null;
708
		Publication publicationARetourner = null;
696
		if (!publicationCollectee.comparer(publication)) {
709
		if (!publicationCollectee.comparer(publication)) {
697
			publicationARetourner = publication = publicationCollectee;
710
			publicationARetourner = publication = publicationCollectee;
698
		}
711
		}
699
		return publicationARetourner;
712
		return publicationARetourner;
700
	}
713
	}
701
	
714
	
702
	private String construireIntituleEditeur() {
715
	private String construireIntituleEditeur() {
703
		String editeur = "";
716
		String editeur = "";
704
		if (editeurCombobox.getValue() != null) {
717
		if (editeurCombobox.getValue() != null) {
705
			editeur = editeurCombobox.getValue().getNom();
718
			editeur = editeurCombobox.getValue().getNom();
706
		} else if (editeurCombobox.getRawValue() != "") {
719
		} else if (editeurCombobox.getRawValue() != "") {
707
			editeur = editeurCombobox.getRawValue();
720
			editeur = editeurCombobox.getRawValue();
708
		}
721
		}
709
		return editeur;
722
		return editeur;
710
	}
723
	}
711
	
724
	
712
	private String construireIntituleAuteur() {
725
	private String construireIntituleAuteur() {
713
		String inituleAuteur = "";
726
		String inituleAuteur = "";
714
		int auteursNombre = auteurComboboxListe.size();
727
		int auteursNombre = auteurComboboxListe.size();
715
		for (int i = 0; i < auteursNombre; i++) {
728
		for (int i = 0; i < auteursNombre; i++) {
716
			if (auteurComboboxListe.get(i).getValue() != null) {
729
			if (auteurComboboxListe.get(i).getValue() != null) {
717
				Personne auteur = auteurComboboxListe.get(i).getValue();
730
				Personne auteur = auteurComboboxListe.get(i).getValue();
718
				inituleAuteur += auteur.getNom().toUpperCase()+ " "+auteur.getPrenom();
731
				inituleAuteur += auteur.getNom().toUpperCase()+ " "+auteur.getPrenom();
719
				if (i != (auteursNombre - 1)) {
732
				if (i != (auteursNombre - 1)) {
720
					inituleAuteur += ", ";
733
					inituleAuteur += ", ";
721
				}
734
				}
722
			}
735
			}
723
		}
736
		}
724
		return inituleAuteur;
737
		return inituleAuteur;
725
	}
738
	}
726
	
739
	
727
	private String construireNomComplet() {
740
	private String construireNomComplet() {
728
		// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages.
741
		// Intitulé de la publication complet : fmt_auteur, date_parution(année). titre. Editeur (nom), collection, fascicule, indication_nvt. pages.
729
		String nomComplet = "";
742
		String nomComplet = "";
730
		String auteurs = construireIntituleAuteur();
743
		String auteurs = construireIntituleAuteur();
731
		String annee = datePublicationChp.getRawValue();
744
		String annee = datePublicationChp.getRawValue();
732
		String titre = titreChp.getValue();
745
		String titre = titreChp.getValue();
733
		String editeur = construireIntituleEditeur();
746
		String editeur = construireIntituleEditeur();
734
		
747
		
735
		nomComplet += auteurs+", "+annee+". "+titre+".";
748
		nomComplet += auteurs+", "+annee+". "+titre+".";
736
		
749
		
737
		if (!UtilString.isEmpty(editeur)) {
750
		if (!UtilString.isEmpty(editeur)) {
738
			nomComplet += " Éditeur "+editeur+".";
751
			nomComplet += " Éditeur "+editeur+".";
739
		}
752
		}
740
		
753
		
741
		if (collectionChp.getValue() != null) {
754
		if (collectionChp.getValue() != null) {
742
			String revue = collectionChp.getValue();
755
			String revue = collectionChp.getValue();
743
			nomComplet += ", "+revue;
756
			nomComplet += ", "+revue;
744
		}
757
		}
745
		
758
		
746
		if (fasciculeChp.getValue() != null) {
759
		if (fasciculeChp.getValue() != null) {
747
			String fascicule = fasciculeChp.getValue();
760
			String fascicule = fasciculeChp.getValue();
748
			nomComplet += ", "+fascicule;
761
			nomComplet += ", "+fascicule;
749
		}
762
		}
750
		
763
		
751
		if (tomeChp.getValue() != null) {
764
		if (tomeChp.getValue() != null) {
752
			String tomaison = tomeChp.getValue();
765
			String tomaison = tomeChp.getValue();
753
			nomComplet += ", "+tomaison;
766
			nomComplet += ", "+tomaison;
754
		}
767
		}
755
		
768
		
756
		if (collectionChp.getValue() != null || fasciculeChp.getValue() != null || tomeChp.getValue() != null) {
769
		if (collectionChp.getValue() != null || fasciculeChp.getValue() != null || tomeChp.getValue() != null) {
757
			nomComplet += ".";	
770
			nomComplet += ".";	
758
		}
771
		}
759
		
772
		
760
		if (pagesChp.getValue() != null) {
773
		if (pagesChp.getValue() != null) {
761
			String pages = pagesChp.getValue();
774
			String pages = pagesChp.getValue();
762
			nomComplet += pages+".";
775
			nomComplet += pages+".";
763
		}
776
		}
764
		
777
		
765
		return nomComplet;
778
		return nomComplet;
766
	}
779
	}
767
	
780
	
768
	public void reinitialiserFormulaire() {
781
	public void reinitialiserFormulaire() {
769
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
782
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
770
			mediateur.afficherFormPublication(publication.getId());
783
			mediateur.afficherFormPublication(publication.getId());
771
		} else {
784
		} else {
772
			mediateur.afficherFormPublication(null);
785
			mediateur.afficherFormPublication(null);
773
		}
786
		}
774
	}
787
	}
775
	
788
	
776
	private boolean etreDateValide(String anneePublication) {
789
	private boolean etreDateValide(String anneePublication) {
777
		boolean valide = true;
790
		boolean valide = true;
778
		if (!anneePublication.matches("^[0-2][0-9]{3}$")) {
791
		if (!anneePublication.matches("^[0-2][0-9]{3}$")) {
779
			valide = false;
792
			valide = false;
780
		}
793
		}
781
		return valide;
794
		return valide;
782
	}
795
	}
783
	
796
	
784
	private String reduireDateParAnnee(String datePar) {
797
	private String reduireDateParAnnee(String datePar) {
785
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
798
		if (datePar.matches("^[0-2][0-9]{3}(-[0-9]{2}){2}$")) {
786
			return datePar.split("-")[0];
799
			return datePar.split("-")[0];
787
		} else {
800
		} else {
788
			return "";
801
			return "";
789
		}
802
		}
790
	}
803
	}
791
	
804
	
792
	private String getValeurComboProjets() {
805
	private String getValeurComboProjets() {
793
		String valeur = "";
806
		String valeur = "";
794
		if (projetsCombo.getValue() != null) {
807
		if (projetsCombo.getValue() != null) {
795
			valeur = projetsCombo.getValue().getId();
808
			valeur = projetsCombo.getValue().getId();
796
		}
809
		}
797
		return valeur;
810
		return valeur;
798
	}
811
	}
799
	private void setValeurComboProjets() {
812
	private void setValeurComboProjets() {
800
		if (projetsCombo.getStore() != null ) {
813
		if (projetsCombo.getStore() != null ) {
801
			if (mode.equals(Formulaire.MODE_MODIFIER) && publication != null) {
814
			if (mode.equals(Formulaire.MODE_MODIFIER) && publication != null) {
802
				projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", publication.getIdProjet()));
815
				projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", publication.getIdProjet()));
803
			} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
816
			} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
804
				projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", mediateur.getProjetId()));
817
				projetsCombo.setValue(projetsCombo.getStore().findModel("id_projet", mediateur.getProjetId()));
805
			}
818
			}
806
		}
819
		}
807
	}
820
	}
808
}
821
}