Bonjour tout le monde,

J'ai un soucis mais je ne sais pas si il vient de POi XSSF ou simplement de la logique de ma boucle.

J'ai une classe SP :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SP {
 
    private String Code;
    private String Parent;
    private String tabDechet[];
    private String tabChild[];
    private String DescSP;
    private double Qte;
    private int line;
    private double status;
    private double cost;
    private XA xa;
 
[...]
}

et une classe XA :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public class XA {
 
    private String Code;
    private String Parent;
    private String tabDechet[];
    private String tabChild[];
    private double qte;
    private int line;
    private String DescXA;
 
[...]
}


Dans ma classe de lecture du fichier excel contenant les XA j'ai une detection pour savoir si le XA/XP a un enfant unique ou plusieurs enfants :


Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Boolean XPenfantUnique = false;
 
 ArrayList<XA> listXaChildren= lectureXAExcel.findXAChildren(parent);
 
 
        if((listXaChildren.size()==1) && (parent.getParent().endsWith("_CFG"))){
            XPenfantUnique=true;
        }else {XPenfantUnique=false;}


Enfin dans ma classe main j' ai une fonction findSellableParent() qui remonte mon fichier en trouvant, pour un enfant unique, le dernier parent vendable (code 30/31/80) ,et,pour un enfant non-unique remonte jusqu'au parent dont le code est "#SPL" tout en stockant a chaque fois le dernier parent vendable et en le retournant lorsqu'il arrive au parent SPL. :


Code java : 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public SP findSellableParent (SP childSP) throws IOException        //TODO probleme avec cette fonction, elle renvoie null
    {
 
        int line = childSP.getLine();
 
 
        SP sellParent = new SP(1,"parentFake", "CodeFake", 900,1000,30,"desc");
        SP parentSpVendableVariable = new SP(1, "parentvariable","CodeVariable",10,2000,90,"nop" );
 
 
        for (int i=1; i<=line; i++)
        {
            int linesup =line-i;
 
            String childParentCode = lectureSPExcel.getSPOfLine(line).getParent();
            System.out.print(childParentCode+" est le parent \n");
            String parentSellCode = lectureSPExcel.getSPOfLine(linesup).getCode();
            System.out.print(parentSellCode+" est le code du parent \n");
            double parentStatus=lectureSPExcel.getSPOfLine(linesup).getStatus();
 
 
            //System.out.print(childParentCode + " code parent \n");
            //System.out.print(parentSellCode + " code du parent \n");
 
 
            if (XPenfantUnique==true)
            {
                if ((childParentCode.equals(parentSellCode)) && (parentStatus == 30 || parentStatus == 31 || parentStatus == 80)) {
                    sellParent = lectureSPExcel.getSPOfLine(linesup);
                    System.out.print("rentre dans 30 unique \n ");
                    break;
                } else if (childParentCode.equals(parentSellCode)) {
                    sellParent = findSellableParent(lectureSPExcel.getSPOfLine(linesup));
                    System.out.print("rentre \n ");
                    break;
                } else {
                    System.out.print("rentre pas unique \n ");
                }
            }
 
            else if (XPenfantUnique==false)  //probleme dans cette partie de la boucle
            {
                if ( (childParentCode.equals(parentSellCode)) && (parentStatus == 30 || parentStatus == 31 || parentStatus == 80))
                {
                    parentSpVendableVariable = lectureSPExcel.getSPOfLine(linesup);
                    sellParent = findSellableParent(lectureSPExcel.getSPOfLine(linesup));
                    System.out.print("rentre dans 30 \n");
                    break;
                }
                else if((childParentCode.equals(parentSellCode)) && (parentSellCode.startsWith("#SPL")))
                {
                    System.out.print("trouve le SPL \n");
                    sellParent = parentSpVendableVariable;
                    break;
                }
                else if (childParentCode.equals(parentSellCode))
                {
                    sellParent = findSellableParent(lectureSPExcel.getSPOfLine(linesup));
                    System.out.print("rentre dans meme code \n");
                    break;
                }
                else
                {
                    System.out.print(line+1 + " " + childParentCode + " ne correspond pas a "+parentSellCode +" ligne "+(linesup+1) + " et rentre pas \n ");
                }
            }
 
        }
        return sellParent;
    }


Lorsque je fais tourner le programme lorsque l'enfant est unique , aucun probleme:

analyse de XA04426
analyse de 1606295
SP1638075 est le parent
SP1638075 est le code du parent
rentre dans 30 unique //rentre bien dans la boucle
1606295 7'' Comfort wheel 4673
Cependant quand c'est un enfant multiple :

analyse de XA05210
analyse de 1416896
1567104-0407 est le parent
1567104-0407 est le code du parent // les 2 codes ne sont pas reconnus comme identiques alors qu'ils le sont pourtant,ou alors je suis fou
!SPS1602843 est le parent
!SPS1602843 est le code du parent
<SPC est le parent
<SPC est le code du parent
4704 <SPC ne correspond pas a 220.1033 ligne 4703 et rentre pas // et donc ne rentre pas dans les boucles
[...]

J'ai beau reprendre ma boucle dans tous les sens je ne vois pas d'ou cela peut venir.
Pour info ,suite a un soucis de caprice du POI j'ai du remplacer tous mes

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
row.getCell(1).getStringCellValue();
par des:

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
formatter.formatCellValue(row.getCell(1));

Ce probleme bloque completement mon projet, quelqu'un pourrait-il me venir en aide ?