Bonjour;
1 2
|
select g,n from Grade g, Note n where g.noteMin <= n.valeur and g.noteMax >= n.valeur |
J'aurai du mal à appliquer cette jointure directement dans le code car les méthodes de récuperations des notes sont déjà définies et utilisés Donc je devrais changer beaucoup l'existent cette méthode sera difficillement envisageable.
from Grade g where g.noteMin <= :valeur and g.noteMax >= :valeur
Exactement c'est cela que je fais.
j'aimerais poster du code mais les traitements se font dans des scénaris
Je manipule des Grades en fonction des scénarios.Je vais prendre 2 scénarios:
Scenario 1
a-Lister les Etudiants D'une classe =
select e from Etudiant e where e.classe= :classeID
b-Pour chaque étudiant il faut lister les matières choisies =
select etUv from EtudiantUv where etUv.etudiant= :e
c-Pour chaque matières choisies il faut trouver les notes=
select n from Notes where n.etudiant= :e and n.matiere=:matiere
d-Pour chaque note par exemple je peut donc soit trouver le grade ou appliquer des associations de notes pour enfin trouver la note finale Alors j'appellerai la fonction qui retrouve le grade en fonction de la Note.
Scenario 2
a-Pour une matière spécifique trouver les étudiants qui ont choisie la matière =
select etUv from EtudiantUv where etUv.matiere= :e
b-pour chaque étudiants qui ont choisi la matière recuperer les notes Voir scenario 1 c et d
Bien je poste le code que j'utilises pour recuperer le grade en fonction d'une note.
Moi j'aimerai juste pouvoir Charger au préalable cette table mention en mémoire et y faire des traitements.
Voici un exemple de méthode Unitaire que j'appelle très souvent dans des Traitements
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
| @Override
public UnitedevaleurDto getFinalMarkForStudentForUv(Inscription ins, Unitedevaleur uv,double markAbsentCC,boolean applyResit) {
//recuperation des notes des sessions normales
Collection<Notes> colNotesNormales = notesDao.getNotesExamenNormal(ins.getEtudiant(), ins.getEtablissements(), uv);
//check s'il a moins une note de session normale
//recuperation Note Rattrapage
UnitedevaleurDto uvDto = new UnitedevaleurDto(ins, uv, null);
Integer ponderationExam = 0;
Integer noteMaxExam = 0;
double noteMaxExamPonderer = 0.0;
double noteExamPonderer = 0.0;
Integer ponderationCC = 0;
//recuperation de la note sur laquelle on evalue
Integer noteMaxCC = 0;
//note max ponderer
double noteMaxCcPonderer = 0.0;
double noteCCPonderer = 0.0;
//moyenne ou note a obtenir pour reussir
double moyenne = 0.0;
boolean haveNotesNormaleSession = false;
if(applyResit==true){
Notes noteRp = notesDao.getNotesResitByEtudiant(ins.getEtudiant(), uv);
if (noteRp != null) {
Double noteResit = noteRp.getNoteRp();
if (noteResit == noteAbs || noteResit == null) {
noteResit = 0.0;
}
ponderationExam = noteRp.getExamen().getPonderation();
noteMaxExam = noteRp.getExamen().getNoteSure();
noteMaxExamPonderer = ponderationExam * noteMaxExam;
noteExamPonderer = noteResit * ponderationExam;
for (Notes notes1 : colNotesNormales) {
//si l examen de cette note doit etre pris avec le resit
if (notes1.getExamen().isProccesWithResit()) {
Double noteCC = notes1.getNote();
if (noteCC == noteAbs || noteCC == null) {
noteCC = 0.0;
}
ponderationCC = notes1.getExamen().getPonderation();
noteMaxCC = notes1.getExamen().getNoteSure();
noteMaxCcPonderer = noteMaxCC * ponderationCC;
noteCCPonderer = noteCC * ponderationCC;
haveNotesNormaleSession = true;
}
}
if (haveNotesNormaleSession) {
double totalMark = (noteCCPonderer + noteExamPonderer);
moyenne = (noteCCPonderer + noteExamPonderer) / (noteMaxCcPonderer + noteMaxExamPonderer);
uvDto.setFinalMark(totalMark);
Mention m=this.getMentionForNote(noteExamPonderer);
uvDto.setGrade(m.getLetterGrade());
uvDto.setPass(moyenne > 0.5);
} else {
uvDto.setFinalMark(markAbsentCC);
Mention m=this.getMentionForNote(noteExamPonderer);
uvDto.setGrade(m.getLetterGrade());
uvDto.setPass(false);
}
}
}else {
for (Notes notes1 : colNotesNormales) {
Double noteEx = notes1.getNote();
if (noteEx == noteAbs || noteEx == null) {
noteEx = 0.0;
}
if (notes1.getExamen().isProccesWithResit() && notes1.getExamen().getFinalExam()==false) {
haveNotesNormaleSession=true;
}
ponderationExam = notes1.getExamen().getPonderation();
noteMaxExam = notes1.getExamen().getNoteSure();
noteMaxExamPonderer += ponderationExam * noteMaxExam;
noteExamPonderer += noteEx * ponderationExam;
}
if(haveNotesNormaleSession){
moyenne = noteExamPonderer / noteMaxExamPonderer;
uvDto.setFinalMark(noteExamPonderer);
Mention m=this.getMentionForNote(noteExamPonderer);
uvDto.setGrade(m.getLetterGrade());
uvDto.setPass(moyenne > 0.5);
}else{
uvDto.setFinalMark(markAbsentCC);
Mention m=this.getMentionForNote(noteExamPonderer);
uvDto.setGrade(m.getLetterGrade());
uvDto.setPass(false);
}
}
return uvDto;
} |
la Methode Mention m=this.getMentionForNote(noteExamPonderer); est la méthode unitaire qui va me chercher le grade pour une note
Merci!
Partager