IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

object references an unsaved transient instance - save the transient


Sujet :

Hibernate Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut object references an unsaved transient instance - save the transient
    Bonjour,

    J'ai le mapping suivant :

    Nom : Mapping.png
Affichages : 1650
Taille : 12,0 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Entity
    @Table(name = "authorities")
    public class Authorities implements Serializable {
     
        @EmbeddedId
        protected AuthoritiesPK authoritiesPK;
     
        @ManyToOne
        @JoinColumn(name = "username", insertable = false, updatable = false)
        private Users users;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @Embeddable
    public class AuthoritiesPK implements Serializable {
     
        @Column(name = "username")
        private String username;
        @Column(name = "authority")
        private String authority;
    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
    @Entity
    @Table(name = "users")
    public class Users implements Serializable {
     
        @Id
        @Column(name = "username")
        private String username;
        @Column(name = "password")
        private String password;
        @Column(name = "enabled")
        private Boolean enabled;
        @Column(name = "email")
        private String email;
     
        @OneToMany(mappedBy = "users", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
        private List<Authorities> authoritiesList;
    J'ai l’erreur suivante quand je modifie un utilisateur ?

    org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: entity.Authorities.users -> entity.Users

    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
     
        public Users modifyUser(Users pUser, List<String> listAuthorities) {
     
            EntityTransaction tx = getEM().getTransaction();
            tx.begin();
            if (pUser.getAuthoritiesList() != null) {
     
                List<Authorities> authoritieses = pUser.getAuthoritiesList();
                for (Authorities a : authoritieses) {
                    a.setUsers(null);
                    getEM().remove(a);
                }
                pUser.getAuthoritiesList().clear();
                for (String authoritie : listAuthorities) {
                    addAuthorities(authoritie, pUser);
                }
                pUser = getEM().merge(pUser);
     
            }
            getEM().remove(pUser);
            tx.commit();
            return pUser;
        }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a quoi ressemble addAuthorities ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void addAuthorities(String authoritie, Users users) {
            AuthoritiesPK authoritiesPK = new AuthoritiesPK(users.getUsername(), authoritie);
            Authorities authorities = new Authorities(authoritiesPK);
            authorities.setUsers(users);
            getEM().persist(authorities);
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu as l'erreur à quelle ligne?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    at dao.UserDao.addAuthorities(UserDao.java:158)
    at dao.UserDao.modifyUser(UserDao.java:75)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addAuthorities(authoritie, pUser);
    (75)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getEM().persist(authorities);
    (158)

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut une petite question pourquoi fais-tu:
    dans la method
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Users modifyUser(Users pUser, List<String> listAuthorities)
    en passant chez moi, j´ai repris ton code, et je n´ai pas de probleme, j´ai modifié le mode de persistence, mais pas de changement explicite du code, et je n´ai aucun probleme meme pour faire un delete, car ta methode delete le user. mais la aussi je n´ai aucune erreur.

    Eric

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    Oula c'es une erreur je veux le modifier !

    donc je dois faire getEM().merge(pUser); ?

    Peux-tu m'expliquer ton changement de persistance ?

    Merci

  8. #8
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    en principe tu ne dois fonctionner qu´avec les Id´s,
    je m´explique:
    MyBean.java
    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
     
      @PersistenceContext(unitName = "nom_de_ton_unit")
      private EntityManager em;
    public Users modifyUser(String username, List<String> listAuthorities) {
     
           public Users modifyUser(Users pUser, List<String> listAuthorities) {
     
    		if (pUser.getAuthoritiesList() != null) {
     
    			List<Authorities> authoritieses = pUser.getAuthoritiesList();
    			for (Authorities a : authoritieses) {
    				a.setUsers(null);
    				em.remove(a);
    			}
    			pUser.getAuthoritiesList().clear();
    			for (String authoritie : listAuthorities) {
    				addAuthorities(authoritie, pUser);
    			}
    			pUser = em.merge(pUser);
     
    		}
    		return pUser;
    	}
    et voici son appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      Users pUser = myBean.getUserById("testusername");
      List<String> listAuthorities = new ArrayList<String>();
       listAuthorities.add("Control");
       listAuthorities.add("Admin");
     
       myBean.modifyUser(pUser, listAuthorities);
    si tu n´arrive pas a le calquer sur le tiens, je pourrais t´envoyer tout mon code.
    eric

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    Caused by: javax.persistence.EntityExistsException: a different object with the same identifier value was already associated with the session: [entity.Authorities#entity.AuthoritiesPK[ username=romain, authority=admin ]]
    at dao.UserDao.addAuthorities(UserDao.java:174) ~[classes/:na]
    at dao.UserDao.modifyUser(UserDao.java:73) ~[classes/:na]


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     public void save() {
            LOGGER.info("" + getSelectedUser().getAuthoritiesList().size());
            Users user = pUserDao.getUserByUsername(getSelectedUser().getUsername());
            pUserDao.modifyUser(user, listAuthoritiesEdit);
            String growlMessage = "The user : " + getSelectedUser().getUsername() + " has been saved";
            LOGGER.info(growlMessage);
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO, growlMessage, growlMessage));
        }
    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
     public Users modifyUser(Users pUser, List<String> listAuthorities) {
     
            if (pUser.getAuthoritiesList() != null) {
     
                List<Authorities> authoritieses = pUser.getAuthoritiesList();
                for (Authorities a : authoritieses) {
                    a.setUsers(null);
                    getEM().remove(a);
                }
                pUser.getAuthoritiesList().clear();
                for (String authoritie : listAuthorities) {
                    addAuthorities(authoritie, pUser); (ligne 73)
                }
                pUser = getEM().merge(pUser);
     
            }
            return pUser;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void addAuthorities(String authoritie, Users users) {
            AuthoritiesPK authoritiesPK = new AuthoritiesPK(users.getUsername(), authoritie);
            Authorities authorities = new Authorities(authoritiesPK);
            authorities.setUsers(users);
            getEM().persist(authorities); (ligne 174)
        }

  10. #10
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    si tu crees 2 sessions independante pour sauvegarder les authorities, alors tu auras toujours ce probleme.
    peux-tu nous donner tout ton projet, et on va essayer de mettre cela a jour ensemble.

    eric

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    public class UserDao {
     
        private static final String JPA_UNIT_NAME = "persitence";
     
        protected EntityManager em;
     
        public UserDao() {
        }
     
        public Users addUser(Users pUser, List<String> pListAuthorities) {
     
            EntityTransaction tx = getEM().getTransaction();
            tx.begin();
            getEM().persist(pUser);
            for (String authoritie : pListAuthorities) {
                addAuthorities(authoritie, pUser);
            }
            tx.commit();
            return pUser;
        }
     
        public Users modifyUser(Users pUser, List<String> listAuthorities) {
     
            if (pUser.getAuthoritiesList() != null) {
     
                List<Authorities> authoritieses = pUser.getAuthoritiesList();
                for (Authorities a : authoritieses) {
                    a.setUsers(null);
                    getEM().remove(a);
                }
                pUser.getAuthoritiesList().clear();
                for (String authoritie : listAuthorities) {
                    addAuthorities(authoritie, pUser);
                }
                pUser = getEM().merge(pUser);
     
            }
            return pUser;
        } 
     
        public void deleteUser(Users pUser) {
     
            EntityTransaction tx = getEM().getTransaction();
            tx.begin();
            if (pUser.getAuthoritiesList() != null) {
     
                List<Authorities> authoritieses = pUser.getAuthoritiesList();
                for (Authorities a : authoritieses) {
                    a.setUsers(null);
                    getEM().remove(a);
                }
                pUser.getAuthoritiesList().clear();
                pUser = getEM().merge(pUser);
     
            }
     
            getEM().remove(pUser);
            tx.commit();
     
        }
     
        public List<Users> findAll() {
            List<Users> users = getEM().createQuery(
                    "SELECT u FROM Users u").getResultList();
            return users;
        }
     
     
        public Users getUserByUsername(String username) {
            Users u = getEM().find(Users.class, username);
            if (u != null) {
                return u;
            } else {
                return null;
            }
     
        }
     
        protected EntityManager getEM() {
            if (em == null) {
                em = Persistence.createEntityManagerFactory(
                        JPA_UNIT_NAME).createEntityManager();
            }
            return em;
        }
     
        private void addAuthorities(String authoritie, Users users) {
            AuthoritiesPK authoritiesPK = new AuthoritiesPK(users.getUsername(), authoritie);
            Authorities authorities = new Authorities(authoritiesPK);
            authorities.setUsers(users);
            getEM().persist(authorities);
        }
    }

  12. #12
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut, a ce que je vois,
    tu ne ferme jamais tes connexions lorsque tu manipules les entitées,
    il faut a chaque ouverture si tu fontionnes en transaction-type= "RESOURCE_LOCAL" ouvrir puis fermer la connexion.
    donc:
    chaque appel de :
    devrait se cloture avec un et si tu as ouvert une transaction avant, bien sur la fermer d´abord:
    car avec le type transaction-type="JTA", cela se fait automatiquement lorsque tu quittes la methode.

    Eric

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    D'accord merci

    Peux-tu me montrer un exemple ?

  14. #14
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    j´ai repris ton exemple:
    et ca marche j´ai simplement ajouter quelques lignes:
    UserDao.java
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    public class UserDao {
    
    	private static final String JPA_UNIT_NAME = "ProjektInternet";
    
    	protected EntityManager em;
    
    	public UserDao() {
    	}
    
    	public Users addUser(Users pUser, List<String> pListAuthorities) {
    
    		EntityTransaction tx = getEM().getTransaction();
    		tx.begin();
    		getEM().persist(pUser);
    		for (String authoritie : pListAuthorities) {
    			addAuthorities(authoritie, pUser);
    		}
    		tx.commit();
    
    		return pUser;
    	}
    
    	public Users modifyUser(Users pUser, List<String> listAuthorities) {
    
    		EntityTransaction tx = getEM().getTransaction();
    		tx.begin();
    		if (pUser.getAuthoritiesList() != null) {
    
    			List<Authorities> authoritieses = pUser.getAuthoritiesList();
    			for (Authorities a : authoritieses) {
    				a.setUsers(null);
    				getEM().remove(a);
    			}
    			pUser.getAuthoritiesList().clear();
    			for (String authoritie : listAuthorities) {
    				addAuthorities(authoritie, pUser);
    			}
    			pUser = getEM().merge(pUser);
    
    		}
    		tx.commit();
    		return pUser;
    	}
    
    	public void deleteUser(Users pUser) {
    
    		EntityTransaction tx = getEM().getTransaction();
    		tx.begin();
    		if (pUser.getAuthoritiesList() != null) {
    
    			List<Authorities> authoritieses = pUser.getAuthoritiesList();
    			for (Authorities a : authoritieses) {
    				a.setUsers(null);
    				getEM().remove(a);
    			}
    			pUser.getAuthoritiesList().clear();
    			pUser = getEM().merge(pUser);
    
    		}
    
    		getEM().remove(pUser);
    		tx.commit();
    
    	}
    
    	public List<Users> findAll() {
    		List<Users> users = getEM().createQuery("SELECT u FROM Users u")
    				.getResultList();
    		return users;
    	}
    
    	public Users getUserByUsername(String username) {
    		Users u = getEM().find(Users.class, username);
    		if (u != null)
    			return u;
    		else
    			return null;
    
    	}
    
    	protected EntityManager getEM() {
    		if (em == null) {
    			em = Persistence.createEntityManagerFactory(JPA_UNIT_NAME)
    					.createEntityManager();
    		}
    		return em;
    	}
    
    	private void addAuthorities(String authoritie, Users users) {
    		AuthoritiesPK authoritiesPK = new AuthoritiesPK(users.getUsername(),
    				authoritie);
    		Authorities authorities = new Authorities(authoritiesPK);
    		authorities.setUsers(users);
    		getEM().persist(authorities);
    	}
    }
    MyTester.java
    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
     
    public class MyTester {
     
    	public static void main(String[] args) {
    		UserDao userDao = new UserDao();
    		Users users = userDao.getUserByUsername("testusername");
    		if (users != null) {
    			System.out.println(users);
    		}
     
    		List<String> authorities = new ArrayList<String>();
    		authorities.add("Convoyeur");
    		authorities.add("Livreur");
    		authorities.add("Administrateur");
    		userDao.modifyUser(users, authorities);
    		System.out.println("Operation Terminée !!!!");
    	}
     
    }
    et sa marche aussi.
    Eric

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    javax.persistence.EntityExistsException: a different object with the same identifier value was already associated with the session: [entity.Authorities#entity.AuthoritiesPK[ username=soft, authority=admin ]]

    Quand je met à jour une authoritie, ce n'est pas pris en compte dans la liste des utilisateurs, mais c'est ok en base ??

  16. #16
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut
    comment est ce que tu as declaré ta table Authorities?
    Eric

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Entity
    @Table(name = "authorities")
    public class Authorities implements Serializable {
     
     
        @EmbeddedId
        protected AuthoritiesPK authoritiesPK;
     
        @ManyToOne
        @JoinColumn(name = "username", insertable = false, updatable = false)
        private Users users;

  18. #18
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    comment fais-tu a la methode save(), depuis quelle interface, il se pourrait que tu manipule plusieurs données a la fois et sans close();
    cela risue de te causer pas mal de probleme.
    Moi je peux le faire chez mois milles fois, je n´ai pas cette erreur.
    si elle persiste, alors fait un clean projet.

    en passant voici comment j´ai crée ma table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    create table authorities(
    authority  varchar(50),
    username varchar(50),
    primary key(authority, username));
    Eric

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
     
     
    @ManagedBean
    @SessionScoped
    public class UserController implements Serializable {
        /**
         * List authorities to a new user
         */
        private Map<String, String> authorities;
        /**
         * List authorities selected to a new user
         */
        private List<String> selectedAuthorities;
        /**
         * List authorities to edit a user
         */
        private List<String> listAuthorities = new ArrayList<String>();
        /**
         * List authorities edit to edit a user
         */
        private List<String> listAuthoritiesEdit = new ArrayList<String>();
        /**
         * List des utilisateurs
         */
        private List<Users> users;
        /**
         * Utilisateur séléctionné
         */
        private Users selectedUser = new Users();
        /**
         * DAO User
         */
        private final UserDao pUserDao = new UserDao();
        /**
         * DAO Authorities
         */
        private final AuthoritiesDao pAuthoritiesDao = new AuthoritiesDao();
        /**
         * Username addUser
         */
        private String username;
        /**
         * Username password
         */
        private String password;
        /**
         * Username email
         */
        private String email;
        /**
         * Username enabled
         */
        private Boolean enabled = true;
     
        /**
         * Constructor
         */
        public UserController() {
        }
     
        /**
         *
         */
        @PostConstruct
        public void init() {
            if (users == null) {
                users = pUserDao.findAll();
            }
            authorities = new HashMap<String, String>();
            authorities.put("extended", "extended");
            authorities.put("admin", "admin");
            authorities.put("visitor", "visitor");
     
            listAuthorities.add("admin");
            listAuthorities.add("extended");
            listAuthorities.add("visitor");
        }
     
        /**
         * addUser
         */
        public void add() {
            if (pUserDao.getUserByUsername(username) == null) {
                Users newUsers = new Users();
                newUsers.setUsername(username);
                newUsers.setPassword(password);
                newUsers.setEmail(email);
                newUsers.setEnabled(enabled);
                users.add(pUserDao.addUser(newUsers, getSelectedAuthorities()));
     
                username = "";
                password = "";
                email = "";
                enabled = true;
                selectedAuthorities = new ArrayList<String>();
     
                String growlMessage = "The user : " + newUsers.getUsername() + " has been added";
                LOGGER.info(growlMessage);
                FacesContext.getCurrentInstance().addMessage(null,
                        new FacesMessage(FacesMessage.SEVERITY_INFO, growlMessage, growlMessage));
            } else {
                String growlMessage = "The user : " + username + " already exists";
                LOGGER.info(growlMessage);
                FacesContext.getCurrentInstance().addMessage(null,
                        new FacesMessage(FacesMessage.SEVERITY_WARN, growlMessage, growlMessage));
            }
        }
     
        /**
         * saveUser
         */
        public void save() {
            LOGGER.info("" + getSelectedUser().getAuthoritiesList().size());
            Users user = pUserDao.getUserByUsername(getSelectedUser().getUsername());
            pUserDao.modifyUser(user, listAuthoritiesEdit);
            String growlMessage = "The user : " + getSelectedUser().getUsername() + " has been saved";
            LOGGER.info(growlMessage);
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO, growlMessage, growlMessage));
        }
     
        /**
         * deleteUser
         */
        public void delete() {
            pUserDao.deleteUser(getSelectedUser());
            users.remove(getSelectedUser());
            String growlMessage = "The user : " + getSelectedUser().getUsername() + " has been deleted";
            LOGGER.info(growlMessage);
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO, growlMessage, growlMessage));
        }
     
        /**
         *
         * @param pUser pUser
         * @return String authorities
         */
        public String getAuthorities(Users pUser) {
            String stringAuthorities = "";
            if (pUser != null) {
                List<Authorities> listAuthorities = pAuthoritiesDao.findAll(pUser.getUsername());
                if (listAuthorities != null) {
                    for (Authorities a : listAuthorities) {
                        if (stringAuthorities.isEmpty()) {
                            stringAuthorities = stringAuthorities + a.getAuthoritiesPK().getAuthority();
                        } else {
                            stringAuthorities = stringAuthorities + ", " + a.getAuthoritiesPK().getAuthority();
                        }
                    }
                }
            }
            return stringAuthorities;
        }
     
        /**
         *
         * @param pUser user
         * @return user authorities
         */
        public List<String> getListAuthorities(Users pUser) {
            if (pUser != null) {
                List<String> rsltList = new ArrayList<String>();
                List<Authorities> listAuthoritiesUser = pAuthoritiesDao.findAll(pUser.getUsername());
                if (listAuthoritiesUser != null) {
                    for (Authorities a : listAuthoritiesUser) {
                        rsltList.add(a.getAuthoritiesPK().getAuthority());
                    }
                }
                return rsltList;
            } else {
                return new ArrayList<String>();
            }
        }
     
        public List<Users> getUsers() {
            return users;
        }
     
        public Users getSelectedUser() {
            return selectedUser;
        }
     
        public void setSelectedUser(Users selectedUser) {
            this.selectedUser = selectedUser;
        }
     
        public String getUsername() {
            return username;
        }
     
        public void setUsername(String username) {
            this.username = username;
        }
     
        public String getPassword() {
            return password;
        }
     
        public void setPassword(String password) {
            this.password = password;
        }
     
        public String getEmail() {
            return email;
        }
     
        public void setEmail(String email) {
            this.email = email;
        }
     
        public Boolean getEnabled() {
            return enabled;
        }
     
        public void setEnabled(Boolean enabled) {
            this.enabled = enabled;
        }
     
        public Map<String, String> getAuthorities() {
            return authorities;
        }
     
        public void setAuthorities(Map<String, String> authorities) {
            this.authorities = authorities;
        }
     
        public List<String> getSelectedAuthorities() {
            return selectedAuthorities;
        }
     
        public void setListAuthoritiesEdit(List<String> listAuthoritiesEdit) {
            this.listAuthoritiesEdit = listAuthoritiesEdit;
        }
     
        /**
         *
         * @return list authorities user
         */
        public List<String> getListAuthoritiesEdit() {
            listAuthoritiesEdit = new ArrayList<String>();
            if (!getSelectedUser().equals(new Users())) {
                if (getSelectedUser().getAuthoritiesList() != null || getSelectedUser().getAuthoritiesList().isEmpty()) {
                    for (Authorities a : getSelectedUser().getAuthoritiesList()) {
                        listAuthoritiesEdit.add(a.getAuthoritiesPK().getAuthority());
                    }
                }
            } else {
                listAuthoritiesEdit.add("none");
            }
            return listAuthoritiesEdit;
        }
     
        public void setSelectedAuthorities(List<String> selectedAuthorities) {
            this.selectedAuthorities = selectedAuthorities;
        }
     
        public List<String> getListAuthorities() {
            return listAuthorities;
        }
     
        public void setListAuthorities(List<String> listAuthorities) {
            this.listAuthorities = listAuthorities;
        }
    }

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 81
    Par défaut
    Pas d'idée ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2009, 16h51
  2. Réponses: 4
    Dernier message: 14/02/2007, 18h48
  3. Réponses: 1
    Dernier message: 28/12/2006, 11h05
  4. Réponses: 2
    Dernier message: 11/12/2006, 09h31
  5. Réponses: 1
    Dernier message: 20/04/2006, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo