/** @see fr.unice.hmabwe.controleur.dao.DaoEtudiant#getMoyenne() */ public double getMoyenne(String numEtu) { HashMap<Integer, Integer> coeffs = new HashMap<Integer, Integer>(); EntityManager em = getEntityManager(); Etudiant e = findByNumeroEtudiant(numEtu); Filiere f = e.getFiliere(); Query q = em.createQuery("select c from Coefficient c join c.filiere f where f.id = " + f.getId()); Collection<Inscription> l_inscr = e.getInscriptions(); double somme_notes = 0; int somme_coef = 0; List<Coefficient> l_coeffs = (List<Coefficient>) q.getResultList(); for (Coefficient coefficient : l_coeffs) { coeffs.put(coefficient.getCours().getId(), coefficient.getCoefficient()); } for (Inscription inscription : l_inscr) { somme_notes += inscription.getMoyenne() * coeffs.get(inscription.getCours().getId()); somme_coef += coeffs.get(inscription.getCours().getId()); } return somme_notes / somme_coef; }
/** @see fr.unice.hmabwe.controleur.dao.DaoEtudiant#getMoyenne() */ public double getMoyenne(String numEtu, int annee) throws DaoException { HashMap<Integer, Integer> coeffs = new HashMap<Integer, Integer>(); EntityManager em = getEntityManager(); Etudiant e = findByNumeroEtudiant(numEtu); Filiere f = e.getFiliere(); Query q = em.createQuery("select c from Coefficient c join c.filiere f where f.id = " + f.getId()); Collection<Inscription> l_inscr_test = e.getInscriptions(); Collection<Inscription> l_inscr = new ArrayList<Inscription>(); for (Inscription inscr : l_inscr_test) { if (inscr.getAnnee() == annee) { l_inscr.add(inscr); } if (l_inscr.isEmpty()) throw new DaoException("aucun etudiant avec le numéro " + numEtu + " en " + annee); } double somme_notes = 0; int somme_coef = 0; List<Coefficient> l_coeffs = (List<Coefficient>) q.getResultList(); for (Coefficient coefficient : l_coeffs) { coeffs.put(coefficient.getCours().getId(), coefficient.getCoefficient()); } for (Inscription inscription : l_inscr) { somme_notes += inscription.getMoyenne() * coeffs.get(inscription.getCours().getId()); somme_coef += coeffs.get(inscription.getCours().getId()); } return somme_notes / somme_coef; }