public static Sujet creerSujet(Categorie categorie, String sujet, String message, boolean sticky, Utilisateur auteur, Icone icone)
            throws ChampInvalideException, ChampVideException {
        if (!categorie.peutCreerSujet(auteur))
            throw new InterditException("Vous n'avez pas les droits requis pour créer un sujet");

        EntityTransaction transaction = SujetRepo.get().transaction();
        Sujet s;
        try {
            transaction.begin();

            s = genererSujet(categorie, sujet, sticky, auteur, icone);
            genererReponse(s, message, auteur);

            SujetRepo.get().creer(s);

            transaction.commit();
        }
        catch(Exception e) {
            if (transaction.isActive())
                transaction.rollback();

            if (e instanceof ChampVideException)
                throw (ChampVideException)e;
            else if (e instanceof ChampInvalideException)
                throw (ChampInvalideException)e;
            else
                throw (RuntimeException)e;
        }
        return s;
    }