poi/XSSF probleme de comparaison
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:
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:
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:
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:
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:
Citation:
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 :
Citation:
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:
row.getCell(1).getStringCellValue();
par des:
Code:
formatter.formatCellValue(row.getCell(1));
Ce probleme bloque completement mon projet, quelqu'un pourrait-il me venir en aide ? :calim2: