Bonjour,
Je suis actuellement en train de programmer une application permettant de rentrer dans postgreSQL diverses informations sur une famille d’accueil à l’aide d’un formulaire mais je me retrouve confrontée à un problème lorsque j’essaye d’ajouter les informations relatives aux contacts.
Voici actuellement ce que peut remplir l’utilisateur :
L’utilisateur peut rentrer 1 ou 2 contact et pour chaque contact il a la possibilité de renseigner plusieurs numéro de portable / fixe / etc.
Je ne pense pas que ce soit important pour ce problème alors je vais passer la manière dont je récupère toutes les informations.
Mon problème se pose lors de la création d’un ContactInfo. Voici la classe :
Je stocke donc les différents numéro/email, dans des ArrayList<String>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class ContactInfo { private int id_family; private String contact_name; private ArrayList<String> mobile; private ArrayList<String> landline; private ArrayList<String> email; private ArrayList<String> other_contact; public ContactInfo(int new_id_family, String new_contact_name, ArrayList<String> new_mobile, ArrayList<String> new_landline, ArrayList<String> new_email, ArrayList<String> new_other_contact) { this.id_family = new_id_family; this.mobile = new_mobile; this.landline = new_landline; this.email = new_email; this.other_contact = new_other_contact; this.contact_name = new_contact_name; } //Getter&Setter }
Lorsque je change d’onglet, j’appelle la méthode addContact qui va me créer 1 ou 2 ContactInfo que je stocke dans ArrayList<ContactInfo> new_contact_array. Voici la méthode :
Je ne montre que la partie pour récupérer les portables car il s’agit du même code pour les autres champs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 private void addContact(Add_Family main_panel) throws SQLException { new_contact_array.clear(); //Pour chaque formulaire for(int i=0; i<full_form_hmap_size; i++) { full_form = full_form_hmap.get(i); // Pour chaque portable, on récupère le numéro mobile_array.clear(); for(int j=0; j<full_form.getMobile_hmap_size(); j++) { //Ajoute seulement si il ny a pas un numéro identique déjà présent dans larray if(!mobile_array.contains(full_form.getMobile_tf_hmap().get(j).getText().replaceAll("\\s",""))) { mobile_array.add(full_form.getMobile_tf_hmap().get(j).getText().replaceAll("\\s","")); } else { JOptionPane.showMessageDialog(null, "Vous avez inscrit le même numéro plusieurs fois, il ne sera ajouté quune fois." + "\nSi vous vouliez ajouter un autre numéro, vérifiez les informations entrées.", "Invalid Input", JOptionPane.WARNING_MESSAGE); } } //Pour chaque fixe, on récupère le numéro //Pour chaque email, on récupère ladresse //Pour chaque autre contact, on récupère le nom //On crée un nouveau ContactInfo avec les informations récupérer new_contact = new ContactInfo( main_panel.getFamily_id(), full_form.getContact_name_tf().getText(), mobile_array, landline_array, email_array, other_contact_array ); new_contact_array.add(new_contact); } //On ajoute larray au panel principal main_panel.setNew_contact(new_contact_array); }
Dans l’exemple, lors de ma première boucle, j’ai donc :
id_family = 1
contact_name = « A Name »
mobile = « 11111111111 », « 22222222222 »
landline = « 33333333333 »
email = « randomemail@test.com »
other_contact = « »
Seulement, quand je rentre dans la boucle pour ajouter le deuxième contact, lorsque je modifie mobile_array, cela me modifie new_contact et new_contact_array. À la fin de la méthode, je me retrouve donc avec deux ContactInfo dans new_contact_array :
ContactInfo 1 :
id_family = 1
contact_name = « A Name »
mobile = « 55555555555 »
landline = « 66666666666 »
email = « »
other_contact = « »
ContactInfo 2 :
id_family = 1
contact_name = « Another One »
mobile = « 55555555555 »
landline = « 66666666666 »
email = « »
other_contact = « »
id_family et contact_name sont donc intactes mais toutes les autres valeurs sont modifiées.
Je pense qu’il doit y avoir un problème de pointeur / référencement, mais je ne m’y connais pas très bien. J’ai fait quelques recherches mais ne comprenant pas vraiment mon problème, j’ai du mal à orienter mes recherches. Pourriez-vous m’aider à résoudre ce problème ou au moins m’indiquer mon erreur pour que je puisse mieux orienter mes recherches ?
Je suis désolée si je suis passée à côté d’une question identique sur le forum. Merci d’avoir lu jusqu’au bout.
Partager