Bonjour chers collègues !
Je développe actuellement une application autonome en java.
Cette application va parcourir l'arborescence d'un dossier pour analyser des fichiers. Dans chaque fichiers il y a environ 30 000 lignes d'informations.
Parmi celles ci, il y a des lignes intéressantes.
Sur toutes les lignes, les différents paramètres dont j'ai besoin sont séparés par des "|" et je récupère seulement les lignes dans lesquelles il y a des requêtes sql qui m'intéresse.
Maintenant que le sujet est bien présenté, voici le gros du problème.
Pour sauvegarder ces paramètres j'ai donc créé une liste array pour me simplifier la vie au niveau de la taille de la liste. Dans mon "main" je crée 2 listes identiques qui possèdent toutes les données nécessaires à mon travail. Le problème se passe lors du parcours :
J'aimerai pouvoir remplir les données manquantes dans certains objets de ma liste, mais mon programme ne rentre pas dans mon "if" qui va dire au programme que le paramètre "untel" de l'objet de la liste 1 est vide et qu'il faut le remplir par rapport au paramètre 'untel' de l'objet de la liste 2 qui lui est plein, tout ça si les codes_msgid et code_user des objets sont identiques.
J'ai cru déceler le début de mon problème une fois que le problème passe dans le 1er "if" !
Voici un bout de code.
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
48
49
50
51
52
53
54
55
56 public static void main (String[] args) { File rep = new File("C:\\Temp"); List<MSG_ID> list_msgid1 = new ArrayList<MSG_ID>(); List<MSG_ID> list_msgid2 = new ArrayList<MSG_ID>(); //Collections.sort(list_msgid1); list_msgid1 = anaFic(listFicLog(rep)); list_msgid2 = list_msgid1; for(int i = 0; i < list_msgid1.size(); i++){ // tant que j'ai un element non parcouru dans la liste principale MSG_ID m1 = list_msgid1.get(i); for(int j = 0; j < list_msgid2.size(); j++){ //on parcourt la même liste pour comparer et associer les différents paramètres MSG_ID m2 = list_msgid2.get(j); if(m1.get_code_msgid() == m2.get_code_msgid() && m1.get_code_user() == m2.get_code_user()){ //on retrouve l'utilisateur avec son pda if(m1.get_requete_select() == "" && m2.get_requete_select() != ""){ //cas où l'objet qui contient la requête select ne contient pas de données //on remplit donc les paramètres qui sont associés à la requête select dans l'objet MSG_ID System.out.println("Remplissage Select"); m1.set_heure_select(m2.get_heure_select()); m1.set_requete_select(m2.get_requete_select()); list_msgid1.remove(j);//supprime l'objet devenu obsolète } else if(m1.get_requete_insert() == "" && m2.get_requete_insert() != ""){ //cas où l'objet qui contient la requête insert ne contient pas de données //on remplit donc les paramètres qui sont associés insert à la requête dans l'objet MSG_ID System.out.println("Remplissage insert"); m1.set_heure_insert(m2.get_heure_insert()); m1.set_requete_insert(m2.get_requete_insert()); list_msgid1.remove(j);//supprime l'objet devenu obsolète } } } } System.out.println("Analyse des fichiers terminée !"); }
un exemple parlant de mon problème dans 2 objets différents :
Objet 1 :
Code msgid : 479599919822326460
Code user : 000198
Code zetes : 0
Heure requête insert : 20:47:26
Requête insert : <Insert into blabla>
Heure requête select :
Requête select :
Objet 2 :
Code msgid : 479599919822326460
Code user : 000198
Code zetes : 0
Heure requête insert :
Requête insert :
Heure requête select : 20:47:36
Requête select : <select blabla>
Vous voyez bien que malgré que le paramètre select du 1er objet est vide, il devrait se remplir par rapport à l'objet 2, mais ne le fait pas puisqu'il ne peut aller dans le "if" créé à ce sujet.
Je suis disponible à tout moment pour toute aide à la compréhension de ce problème, je checkerai assez souvent l'aide proposée tout en continuant de m'arracher les cheveux sur mon erreur qui est surement aussi grosse que l'écran .
Merci d'avance
Partager