Bonjour à tous,

je viens encore une fois faire appel à votre savoir pour m'éclairer sur un problème assez déconcertant :

je développe un outil de gestion qui dans le cas présent va, à l'aide d'un drag n drop, affecter des opérateurs à des compétences. Le problème que je rencontre ici est assez étrange car c'est au niveau d'un test if qui renvoie true alors que la condition n'est pas vérifiée.

Voici la partie du code qui me pose problème avec l'affichage lors des deux dnd du log:

Bean de gestion :
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
public void recupererOperateurs( Competence competence ) {
 
        System.out.println( "recupererOperateurs:competence > " + competence.getNom() );
        System.out.println( "recupererOperateurs:Taille liste > " + attributionMap.get( competence ).size() );
        System.out.println( "recupererOperateurs:Test taille liste  = 0 > "
                + ( attributionMap.get( competence ).size() == 0 ) );
        System.out.println( "recupererOperateurs:Mapping > " + attributionMap.get( competence ) );
 
        if ( operateurs != null ) {
            operateurs.clear();
        }
 
        if ( attributionMap.get( competence ) == null ) {
            System.out.println( "Map nulle  ..." );
            operateurs = new ArrayList<Operateur>();
        }
        else if ( attributionMap.get( competence ).size() == 0 ) {
            System.out.println( "Map empty ..." );
            operateurs = new ArrayList<Operateur>();
        }
        else {
            System.out.println( "Map non null/empty " + competence.getNom() + " - " + attributionMap.get( competence ) );
            operateurs = attributionMap.get( competence );
        }
 
    }
 
    public void onOperateurDrop( DragDropEvent ddEvent ) {
 
        System.out.println( "---------------------DROP d'un Opérateur------------------------" );
 
        // DropId is of the form: orderGroups:0:selectedLineItems
        String[] dropSplit = ddEvent.getDropId().split( ":" );
        // Get the second part to retrieve the correct orderGroup:
        int orderGroupPosition = Integer.parseInt( dropSplit[1] );
 
        setCompetenceTmp( (Competence) ( attributionMap.keySet().toArray()[orderGroupPosition] ) );
 
        recupererOperateurs( competenceTmp );
 
        Operateur op = (Operateur) ( ( (Map.Entry) ( ddEvent.getData() ) ).getKey() );
        operateurs.add( op );
 
        availables2.remove( op );
 
        try {
            attributionMap.put( competenceTmp, operateurs );
            System.out.println( "onOperateurDrop:Mapping > " + attributionMap.get( competenceTmp ) );
        } catch ( Exception e ) {
            e.printStackTrace();
        }
 
    }
Log :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---------------------DROP d'un Opérateur------------------------
Infos: recupererOperateurs:competence > Autre
Infos: recupererOperateurs:Taille liste > 0
Infos: recupererOperateurs:Test taille liste  = 0 > true
Infos: recupererOperateurs:Mapping > []
Infos: Map empty ...
Infos: onOperateurDrop:Mapping > [com.sgg.entities.Operateur@26cdda]
Infos: ---------------------DROP d'un Opérateur------------------------
Infos: recupererOperateurs:competence > Autre
Infos: recupererOperateurs:Taille liste > 1
Infos: recupererOperateurs:Test taille liste  = 0 > false
Infos: recupererOperateurs:Mapping > [com.sgg.entities.Operateur@26cdda]
Infos: Map empty ...
Infos: onOperateurDrop:Mapping > [com.sgg.entities.Operateur@26cddb]
Pouvez vous m'aider si vous voyez d'où vient le problème ? Merci d'avance.

Techs utilisées : Glassfish 4, JSF 2.2.4 (+Primefaces), JPA 2 (eclipselink), JEE 7