use of fi.otavanopisto.pyramus.koski.OpiskelijanOPS in project pyramus by otavanopisto.
the class KoskiInternetixLukioStudentHandler method assessmentsToModel.
private void assessmentsToModel(LukionOpiskeluoikeus opiskeluoikeus, Student student, StudentSubjectSelections studentSubjects, boolean calculateMeanGrades, boolean sisällytäVahvistus, String toimipisteOID, boolean defaultStudyProgramme) {
List<OpiskelijanOPS> opsList = new ArrayList<>();
opsList.add(OpiskelijanOPS.ops2016);
opsList.add(OpiskelijanOPS.ops2005);
KoskiStudyProgrammeHandlerParams handlerParams = getHandlerParams(HANDLER_TYPE);
// If this is default study programme of the student, we exclude the incompatible education type (ie list all other edutypes)
// Otherwise, only list credits from one education type
Predicate<Credit> predicate = defaultStudyProgramme ? credit -> !matchingEducationTypeFilter(credit, handlerParams.getExcludedEducationTypes()) : credit -> matchingEducationTypeFilter(credit, handlerParams.getEducationTypes());
Map<OpiskelijanOPS, List<CreditStub>> opsCredits = listCredits(student, true, true, opsList, OpiskelijanOPS.ops2016, predicate);
Map<String, OppiaineenSuoritusWithCurriculum<LukionOppiaineenSuoritus>> map = new HashMap<>();
Set<OppiaineenSuoritusWithCurriculum<LukionOppiaineenSuoritus>> accomplished = new HashSet<>();
for (OpiskelijanOPS ops : opsCredits.keySet()) {
List<CreditStub> credits = opsCredits.get(ops);
for (CreditStub credit : credits) {
OppiaineenSuoritusWithCurriculum<LukionOppiaineenSuoritus> oppiaineenSuoritus = getSubject(ops, student, handlerParams.getEducationTypes(), credit.getSubject(), studentSubjects, map);
collectAccomplishedMarks(credit.getSubject(), oppiaineenSuoritus, studentSubjects, accomplished);
if (settings.isReportedCredit(credit) && oppiaineenSuoritus != null) {
LukionKurssinSuoritus kurssiSuoritus = createKurssiSuoritus(student, ops, credit);
if (kurssiSuoritus != null) {
oppiaineenSuoritus.getOppiaineenSuoritus().addOsasuoritus(kurssiSuoritus);
} else {
logger.warning(String.format("Course %s not reported for student %d due to unresolvable credit.", credit.getCourseCode(), student.getId()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNREPORTED_CREDIT, new Date(), credit.getCourseCode());
}
}
}
}
for (OppiaineenSuoritusWithCurriculum<LukionOppiaineenSuoritus> lukionOppiaineenSuoritus : map.values()) {
if (CollectionUtils.isEmpty(lukionOppiaineenSuoritus.getOppiaineenSuoritus().getOsasuoritukset())) {
// Skip empty subjects
continue;
}
StudentSubjectGrade studentSubjectGrade = findStudentSubjectGrade(student, lukionOppiaineenSuoritus.getSubject());
boolean hasStudentSubjectGrade = studentSubjectGrade != null;
// Valmiille oppiaineelle on rustattava kokonaisarviointi
if (calculateMeanGrades || hasStudentSubjectGrade) {
ArviointiasteikkoYleissivistava aineKeskiarvo = accomplished.contains(lukionOppiaineenSuoritus) ? ArviointiasteikkoYleissivistava.GRADE_S : getSubjectMeanGrade(student, lukionOppiaineenSuoritus.getSubject(), lukionOppiaineenSuoritus.getOppiaineenSuoritus());
if (aineKeskiarvo != null) {
Date arviointiPvm = (studentSubjectGrade != null && studentSubjectGrade.getGradeDate() != null) ? studentSubjectGrade.getGradeDate() : student.getStudyEndDate();
LukionOppiaineenArviointi arviointi = new LukionOppiaineenArviointi(aineKeskiarvo, arviointiPvm);
lukionOppiaineenSuoritus.getOppiaineenSuoritus().addArviointi(arviointi);
} else {
logger.warning(String.format("Unresolved mean grade for person %d.", student.getPerson().getId()));
}
}
LukionOppiaineenSuoritus oppiaineenSuoritus = lukionOppiaineenSuoritus.getOppiaineenSuoritus();
LukionOppiaineenOppimaaranSuoritus oppiaineenOppimaaranSuoritus = LukionOppiaineenOppimaaranSuoritus.from(oppiaineenSuoritus, Kieli.FI, new OrganisaationToimipisteOID(toimipisteOID));
oppiaineenOppimaaranSuoritus.getKoulutusmoduuli().setPerusteenDiaarinumero(getDiaarinumero(HANDLER_TYPE, lukionOppiaineenSuoritus.getOps()));
oppiaineenOppimaaranSuoritus.setTodistuksellaNakyvatLisatiedot(getTodistuksellaNakyvatLisatiedot(student));
if (hasStudentSubjectGrade) {
oppiaineenOppimaaranSuoritus.setVahvistus(getVahvistus(student, studentSubjectGrade.getGradeApprover(), studentSubjectGrade.getGradeDate(), toimipisteOID));
} else if (sisällytäVahvistus) {
oppiaineenOppimaaranSuoritus.setVahvistus(getVahvistus(student, toimipisteOID));
}
opiskeluoikeus.addSuoritus(oppiaineenOppimaaranSuoritus);
}
}
use of fi.otavanopisto.pyramus.koski.OpiskelijanOPS in project pyramus by otavanopisto.
the class KoskiInternetixStudentHandler method studentToModel.
public List<Opiskeluoikeus> studentToModel(Student student, String academyIdentifier) {
List<Opiskeluoikeus> oos = new ArrayList<>();
OpiskelijanOPS opiskelijanOPS = settings.resolveOPS(student);
OpiskeluoikeusInternetix pk = pkHandler.studentToModel(student, academyIdentifier);
boolean pkSuorituksia = pk != null ? !pk.isEiSuorituksia() : false;
OpiskeluoikeusInternetix lukio = opiskelijanOPS == OpiskelijanOPS.ops2019 ? lukio2019Handler.oppiaineidenOppimaaranOpiskeluoikeus(student, academyIdentifier) : lukioHandler.studentToModel(student, academyIdentifier);
boolean lukioSuorituksia = lukio != null ? !lukio.isEiSuorituksia() : false;
if (!pkSuorituksia && !lukioSuorituksia) {
// Kummassakaan ei suorituksia -> käytetään linjan mukaista oletusarvona
KoskiStudyProgrammeHandler studyProgrammeHandlerType = settings.getStudyProgrammeHandlerType(student.getStudyProgramme().getId());
switch(studyProgrammeHandlerType) {
case aineopiskelulukio:
if (lukio != null && lukio.getOpiskeluoikeus() != null) {
oos.add(lukio.getOpiskeluoikeus());
}
break;
case aineopiskeluperusopetus:
if (pk != null && pk.getOpiskeluoikeus() != null) {
oos.add(pk.getOpiskeluoikeus());
}
break;
default:
logger.log(Level.SEVERE, String.format("Handler Type %s didn't match the supported types for student %d", studyProgrammeHandlerType, student.getId()));
break;
}
} else {
if (pkSuorituksia && pk != null && pk.getOpiskeluoikeus() != null) {
oos.add(pk.getOpiskeluoikeus());
}
if (lukioSuorituksia && lukio != null && lukio.getOpiskeluoikeus() != null) {
oos.add(lukio.getOpiskeluoikeus());
}
}
// Log a warning if non-archived student couldn't be translated to a model
if (oos.isEmpty() && Boolean.FALSE.equals(student.getArchived())) {
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.NO_RESOLVABLE_SUBJECTS, new Date());
}
// Varoitus, jos aineopiskelijalla on sekä pk:n että lukion opiskeluoikeudet
if (oos.size() > 1) {
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.INTERNETIX_BOTH_LINES, new Date());
}
return oos;
}
use of fi.otavanopisto.pyramus.koski.OpiskelijanOPS in project pyramus by otavanopisto.
the class KoskiLukioStudentHandler method studentToModel.
public Opiskeluoikeus studentToModel(Student student, String academyIdentifier, KoskiStudyProgrammeHandler handler) {
if (handler != HANDLER_TYPE) {
logger.log(Level.SEVERE, String.format("Wrong handler type %s, expected %s w/person %d.", handler, HANDLER_TYPE, student.getPerson().getId()));
return null;
}
StudentSubjectSelections studentSubjects = loadStudentSubjectSelections(student, getDefaultSubjectSelections());
String studyOid = userVariableDAO.findByUserAndKey(student, KOSKI_STUDYPERMISSION_ID);
// Skip student if it is archived and the studyoid is blank
if (Boolean.TRUE.equals(student.getArchived()) && StringUtils.isBlank(studyOid)) {
return null;
}
OpiskelijanOPS ops = resolveOPS(student);
if (ops == null) {
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.NO_CURRICULUM, new Date());
return null;
}
if (student.getStudyStartDate() == null) {
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.NO_STUDYSTARTDATE, new Date());
return null;
}
LukionOpiskeluoikeus opiskeluoikeus = new LukionOpiskeluoikeus();
opiskeluoikeus.setLahdejarjestelmanId(getLahdeJarjestelmaID(handler, student.getId()));
opiskeluoikeus.setAlkamispaiva(student.getStudyStartDate());
opiskeluoikeus.setPaattymispaiva(student.getStudyEndDate());
if (StringUtils.isNotBlank(studyOid)) {
opiskeluoikeus.setOid(studyOid);
}
opiskeluoikeus.setLisatiedot(getLisatiedot(student));
OpintojenRahoitus opintojenRahoitus = opintojenRahoitus(student);
StudyEndReasonMapping lopetusSyy = opiskelujaksot(student, opiskeluoikeus.getTila(), opintojenRahoitus);
boolean laskeKeskiarvot = lopetusSyy != null ? lopetusSyy.getLaskeAinekeskiarvot() : false;
boolean sisällytäVahvistus = lopetusSyy != null ? lopetusSyy.getSisällytäVahvistaja() : false;
opiskeluoikeus.setOppimaaraSuoritettu(sisällytäVahvistus);
String departmentIdentifier = settings.getToimipisteOID(student.getStudyProgramme().getId(), academyIdentifier);
OrganisaationToimipiste toimipiste = new OrganisaationToimipisteOID(departmentIdentifier);
EducationType studentEducationType = student.getStudyProgramme() != null && student.getStudyProgramme().getCategory() != null ? student.getStudyProgramme().getCategory().getEducationType() : null;
Set<LukionOppiaineenSuoritus> oppiaineet = assessmentsToModel(handler, ops, student, studentEducationType, studentSubjects, laskeKeskiarvot);
LukionOppimaaranSuoritus suoritus = new LukionOppimaaranSuoritus(LukionOppimaara.aikuistenops, Kieli.FI, toimipiste);
suoritus.getKoulutusmoduuli().setPerusteenDiaarinumero(getDiaarinumero(student));
suoritus.setTodistuksellaNakyvatLisatiedot(getTodistuksellaNakyvatLisatiedot(student));
if (sisällytäVahvistus) {
suoritus.setVahvistus(getVahvistus(student, departmentIdentifier));
}
opiskeluoikeus.addSuoritus(suoritus);
oppiaineet.forEach(oppiaine -> suoritus.addOsasuoritus(oppiaine));
return opiskeluoikeus;
}
use of fi.otavanopisto.pyramus.koski.OpiskelijanOPS in project pyramus by otavanopisto.
the class KoskiInternetixLukioStudentHandler2019 method oppiaineidenOppimaaranOpiskeluoikeus.
public OpiskeluoikeusInternetix oppiaineidenOppimaaranOpiskeluoikeus(Student student, String academyIdentifier) {
StudentSubjectSelections studentSubjects = loadStudentSubjectSelections(student, getDefaultSubjectSelections());
String studyOid = userVariableDAO.findByUserAndKey(student, KOSKI_STUDYPERMISSION_ID);
// Skip student if it is archived and the studyoid is blank
if (Boolean.TRUE.equals(student.getArchived()) && StringUtils.isBlank(studyOid)) {
return null;
}
OpiskelijanOPS ops = resolveOPS(student);
if (ops == null) {
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.NO_CURRICULUM, new Date());
return null;
}
if (student.getStudyStartDate() == null) {
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.NO_STUDYSTARTDATE, new Date());
return null;
}
LukionOpiskeluoikeus opiskeluoikeus = new LukionOpiskeluoikeus();
opiskeluoikeus.setLahdejarjestelmanId(getLahdeJarjestelmaID(HANDLER_TYPE, student.getId()));
opiskeluoikeus.setAlkamispaiva(student.getStudyStartDate());
opiskeluoikeus.setPaattymispaiva(student.getStudyEndDate());
if (StringUtils.isNotBlank(studyOid)) {
opiskeluoikeus.setOid(studyOid);
}
opiskeluoikeus.setLisatiedot(getLisatiedot(student));
OpintojenRahoitus opintojenRahoitus = opintojenRahoitus(student);
StudyEndReasonMapping lopetusSyy = opiskelujaksot(student, opiskeluoikeus.getTila(), opintojenRahoitus);
boolean laskeKeskiarvot = lopetusSyy != null ? lopetusSyy.getLaskeAinekeskiarvot() : false;
boolean sisällytäVahvistus = lopetusSyy != null ? lopetusSyy.getSisällytäVahvistaja() : false;
boolean lukionOppimääräSuoritettu = lopetusSyy != null ? lopetusSyy.isLukionOppimääräSuoritettu() : false;
opiskeluoikeus.setOppimaaraSuoritettu(lukionOppimääräSuoritettu || sisällytäVahvistus);
String departmentIdentifier = settings.getToimipisteOID(student.getStudyProgramme().getId(), academyIdentifier);
OrganisaationToimipiste toimipiste = new OrganisaationToimipisteOID(departmentIdentifier);
EducationType studentEducationType = student.getStudyProgramme() != null && student.getStudyProgramme().getCategory() != null ? student.getStudyProgramme().getCategory().getEducationType() : null;
Set<LukionOsasuoritus2019> oppiaineet = assessmentsToModel(ops, student, studentEducationType, studentSubjects, laskeKeskiarvot);
LukionOppiaineenOppimaaranSuoritus2019 suoritus = new LukionOppiaineenOppimaaranSuoritus2019(LukionOppimaara.aikuistenops, Kieli.FI, toimipiste, getDiaarinumero(student));
suoritus.setTodistuksellaNakyvatLisatiedot(getTodistuksellaNakyvatLisatiedot(student));
if (sisällytäVahvistus) {
suoritus.setVahvistus(getVahvistus(student, departmentIdentifier));
}
opiskeluoikeus.addSuoritus(suoritus);
for (LukionOsasuoritus2019 oppiaine : oppiaineet) {
// Aineopinnot sallivat vain oppiaineen suorituksia
if (oppiaine instanceof LukionOppiaineenSuoritus2019) {
suoritus.addOsasuoritus((LukionOppiaineenSuoritus2019) oppiaine);
} else {
String tyyppi = String.valueOf(oppiaine.getTyyppi().getValue());
koskiPersonLogDAO.create(student.getPerson(), KoskiPersonState.GENERIC_WARNING, new Date(), tyyppi);
}
}
return new OpiskeluoikeusInternetix(opiskeluoikeus, false);
}
use of fi.otavanopisto.pyramus.koski.OpiskelijanOPS in project pyramus by otavanopisto.
the class KoskiInternetixPkStudentHandler method assessmentsToModel.
private void assessmentsToModel(AikuistenPerusopetuksenOpiskeluoikeus opiskeluoikeus, Student student, StudentSubjectSelections studentSubjects, boolean calculateMeanGrades, boolean sisällytäVahvistus, String toimipisteOID, boolean defaultStudyProgramme) {
List<OpiskelijanOPS> opsList = new ArrayList<>();
opsList.add(OpiskelijanOPS.ops2018);
opsList.add(OpiskelijanOPS.ops2016);
opsList.add(OpiskelijanOPS.ops2005);
KoskiStudyProgrammeHandlerParams handlerParams = getHandlerParams(HANDLER_TYPE);
// If this is default study programme of the student, we exclude the incompatible education type (ie list all other edutypes)
// Otherwise, only list credits from one education type
Predicate<Credit> predicate = defaultStudyProgramme ? credit -> !matchingEducationTypeFilter(credit, handlerParams.getExcludedEducationTypes()) : credit -> matchingEducationTypeFilter(credit, handlerParams.getEducationTypes());
Map<OpiskelijanOPS, List<CreditStub>> opsCredits = listCredits(student, true, true, opsList, OpiskelijanOPS.ops2018, predicate);
Map<String, OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus>> map = new HashMap<>();
Set<OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus>> accomplished = new HashSet<>();
for (OpiskelijanOPS ops : opsCredits.keySet()) {
List<CreditStub> credits = opsCredits.get(ops);
for (CreditStub credit : credits) {
OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus> oppiaineenSuoritus = getSubject(ops, student, handlerParams.getEducationTypes(), studentSubjects, credit.getSubject(), map);
collectAccomplishedMarks(credit.getSubject(), oppiaineenSuoritus, studentSubjects, accomplished);
if (settings.isReportedCredit(credit) && oppiaineenSuoritus != null) {
AikuistenPerusopetuksenKurssinSuoritus kurssiSuoritus = createKurssiSuoritus(ops, credit);
if (kurssiSuoritus != null) {
oppiaineenSuoritus.getOppiaineenSuoritus().addOsasuoritus(kurssiSuoritus);
} else {
logger.warning(String.format("Course %s not reported for student %d due to unresolvable credit.", credit.getCourseCode(), student.getId()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNREPORTED_CREDIT, new Date(), credit.getCourseCode());
}
}
}
}
PerusopetuksenSuoritusTapa perusopetuksenSuoritusTapa = suoritusTapa(student);
for (OppiaineenSuoritusWithCurriculum<AikuistenPerusopetuksenOppiaineenSuoritus> oppiaineenSuoritus : map.values()) {
if (CollectionUtils.isEmpty(oppiaineenSuoritus.getOppiaineenSuoritus().getOsasuoritukset())) {
// Skip empty subjects
continue;
}
StudentSubjectGrade studentSubjectGrade = findStudentSubjectGrade(student, oppiaineenSuoritus.getSubject());
boolean hasStudentSubjectGrade = studentSubjectGrade != null;
// Valmiille oppiaineelle on rustattava kokonaisarviointi
if (calculateMeanGrades || hasStudentSubjectGrade) {
ArviointiasteikkoYleissivistava aineKeskiarvo = accomplished.contains(oppiaineenSuoritus) ? ArviointiasteikkoYleissivistava.GRADE_S : getSubjectMeanGrade(student, oppiaineenSuoritus.getSubject(), oppiaineenSuoritus.getOppiaineenSuoritus());
Date arviointiPvm = (studentSubjectGrade != null && studentSubjectGrade.getGradeDate() != null) ? studentSubjectGrade.getGradeDate() : student.getStudyEndDate();
if (ArviointiasteikkoYleissivistava.isNumeric(aineKeskiarvo)) {
KurssinArviointi arviointi = new KurssinArviointiNumeerinen(aineKeskiarvo, arviointiPvm);
oppiaineenSuoritus.getOppiaineenSuoritus().addArviointi(arviointi);
} else if (ArviointiasteikkoYleissivistava.isLiteral(aineKeskiarvo)) {
KurssinArviointi arviointi = new KurssinArviointiSanallinen(aineKeskiarvo, arviointiPvm, kuvaus("Suoritettu/Hylätty"));
oppiaineenSuoritus.getOppiaineenSuoritus().addArviointi(arviointi);
}
}
PerusopetuksenOppiaineenOppimaaranSuoritus oppiaineenOppimaaranSuoritus = PerusopetuksenOppiaineenOppimaaranSuoritus.from(oppiaineenSuoritus.getOppiaineenSuoritus(), perusopetuksenSuoritusTapa, Kieli.FI, new OrganisaationToimipisteOID(toimipisteOID));
oppiaineenOppimaaranSuoritus.getKoulutusmoduuli().setPerusteenDiaarinumero(getDiaarinumero(HANDLER_TYPE, oppiaineenSuoritus.getOps()));
oppiaineenOppimaaranSuoritus.setTodistuksellaNakyvatLisatiedot(getTodistuksellaNakyvatLisatiedot(student));
if (hasStudentSubjectGrade) {
oppiaineenOppimaaranSuoritus.setVahvistus(getVahvistus(student, studentSubjectGrade.getGradeApprover(), studentSubjectGrade.getGradeDate(), toimipisteOID));
} else if (sisällytäVahvistus) {
oppiaineenOppimaaranSuoritus.setVahvistus(getVahvistus(student, toimipisteOID));
}
opiskeluoikeus.addSuoritus(oppiaineenOppimaaranSuoritus);
}
}
Aggregations