use of fi.otavanopisto.pyramus.koski.koodisto.LukionKurssinTyyppi in project pyramus by otavanopisto.
the class KoskiInternetixLukioStudentHandler method createKurssiSuoritus.
protected LukionKurssinSuoritus createKurssiSuoritus(Student student, OpiskelijanOPS ops, CreditStub courseCredit) {
String kurssiKoodi = courseCredit.getCourseCode();
LukionKurssinTunniste tunniste;
if (ops == OpiskelijanOPS.ops2016 && EnumUtils.isValidEnum(LukionKurssit.class, kurssiKoodi)) {
// OPS 2016 (2015)
LukionKurssit kurssi = LukionKurssit.valueOf(kurssiKoodi);
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, true, LukionKurssinTyyppi.pakollinen, LukionKurssinTyyppi.syventava);
tunniste = new LukionKurssinTunnisteValtakunnallinenOPS2015(kurssi, kurssinTyyppi);
} else if (ops == OpiskelijanOPS.ops2005 && EnumUtils.isValidEnum(LukionKurssitOPS2004Aikuiset.class, kurssiKoodi)) {
// OPS 2005 (2004)
LukionKurssitOPS2004Aikuiset kurssi = LukionKurssitOPS2004Aikuiset.valueOf(kurssiKoodi);
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, true, LukionKurssinTyyppi.pakollinen, LukionKurssinTyyppi.syventava);
tunniste = new LukionKurssinTunnisteValtakunnallinenOPS2004(kurssi, kurssinTyyppi);
} else {
PaikallinenKoodi paikallinenKoodi = new PaikallinenKoodi(kurssiKoodi, kuvaus(courseCredit.getSubject().getName()));
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, true, LukionKurssinTyyppi.syventava, LukionKurssinTyyppi.soveltava);
tunniste = new LukionKurssinTunnistePaikallinen(paikallinenKoodi, kurssinTyyppi, kuvaus(courseCredit.getCourseName()));
}
LukionKurssinSuoritus suoritus = new LukionKurssinSuoritus(tunniste);
return luoKurssiSuoritus(suoritus, courseCredit);
}
use of fi.otavanopisto.pyramus.koski.koodisto.LukionKurssinTyyppi in project pyramus by otavanopisto.
the class KoskiLukioStudentHandler method createKurssiSuoritus.
protected LukionKurssinSuoritus createKurssiSuoritus(Student student, OpiskelijanOPS ops, CreditStub courseCredit) {
String kurssiKoodi = courseCredit.getCourseCode();
LukionKurssinTunniste tunniste;
if (ops == OpiskelijanOPS.ops2016 && EnumUtils.isValidEnum(LukionKurssit.class, kurssiKoodi)) {
// OPS 2016 (2015)
LukionKurssit kurssi = LukionKurssit.valueOf(kurssiKoodi);
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, true, LukionKurssinTyyppi.pakollinen, LukionKurssinTyyppi.syventava);
tunniste = new LukionKurssinTunnisteValtakunnallinenOPS2015(kurssi, kurssinTyyppi);
} else if (ops == OpiskelijanOPS.ops2005 && EnumUtils.isValidEnum(LukionKurssitOPS2004Aikuiset.class, kurssiKoodi)) {
// OPS 2005 (2004)
LukionKurssitOPS2004Aikuiset kurssi = LukionKurssitOPS2004Aikuiset.valueOf(kurssiKoodi);
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, true, LukionKurssinTyyppi.pakollinen, LukionKurssinTyyppi.syventava);
tunniste = new LukionKurssinTunnisteValtakunnallinenOPS2004(kurssi, kurssinTyyppi);
} else {
PaikallinenKoodi paikallinenKoodi = new PaikallinenKoodi(kurssiKoodi, kuvaus(courseCredit.getSubject().getName()));
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, true, LukionKurssinTyyppi.syventava, LukionKurssinTyyppi.soveltava);
tunniste = new LukionKurssinTunnistePaikallinen(paikallinenKoodi, kurssinTyyppi, kuvaus(courseCredit.getCourseName()));
}
LukionKurssinSuoritus suoritus = new LukionKurssinSuoritus(tunniste);
return luoKurssiSuoritus(suoritus, courseCredit);
}
use of fi.otavanopisto.pyramus.koski.koodisto.LukionKurssinTyyppi in project pyramus by otavanopisto.
the class AbstractKoskiLukioStudentHandler2019 method createKurssiSuoritus.
protected LukionOpintojaksonSuoritus2019 createKurssiSuoritus(Student student, StudentSubjectSelections studentSubjects, boolean paikallinenOppiaine, OpiskelijanOPS ops, CreditStub courseCredit) {
String kurssiKoodi = courseCredit.getCourseCode();
LukionOpintojaksonTunniste2019 tunniste;
String subjectCode = subjectCode(courseCredit.getSubject());
Laajuus laajuus = kurssinLaajuus(student, courseCredit);
if (laajuus != null && laajuus.getYksikko() != null && laajuus.getYksikko().getValue() != OpintojenLaajuusYksikko.op) {
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.LUKIO2019_CREDIT_NOT_IN_POINTS, new Date(), kurssiKoodi);
}
SuorituksenTyyppi suorituksenTyyppi;
if (!paikallinenOppiaine && EnumUtils.isValidEnum(ModuuliKoodistoLOPS2021.class, kurssiKoodi)) {
/**
* Tässä yhteydessä:
* * pakollinen => valtakunnallinen pakollinen
* * syventava => valtakunnallinen valinnainen
*/
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, true, LukionKurssinTyyppi.pakollinen, LukionKurssinTyyppi.syventava);
boolean pakollinen = kurssinTyyppi == LukionKurssinTyyppi.pakollinen;
suorituksenTyyppi = SuorituksenTyyppi.lukionvaltakunnallinenmoduuli;
ModuuliKoodistoLOPS2021 kurssi = ModuuliKoodistoLOPS2021.valueOf(kurssiKoodi);
if (studentSubjects.isAdditionalLanguage(subjectCode)) {
tunniste = new LukionOpintojaksonTunnisteVierasKieli2019(kurssi, laajuus, pakollinen);
} else {
tunniste = new LukionOpintojaksonTunnisteMuuModuuli2019(kurssi, laajuus, pakollinen);
}
} else {
/**
* Tässä yhteydessä:
* * syventava => paikallinen pakollinen
* * soveltava => paikallinen valinnainen
*/
LukionKurssinTyyppi kurssinTyyppi = findCourseType(student, courseCredit, false, LukionKurssinTyyppi.syventava, LukionKurssinTyyppi.soveltava);
boolean pakollinen = kurssinTyyppi == LukionKurssinTyyppi.pakollinen;
suorituksenTyyppi = SuorituksenTyyppi.lukionpaikallinenopintojakso;
PaikallinenKoodi paikallinenKoodi = new PaikallinenKoodi(kurssiKoodi, kuvaus(courseCredit.getSubject().getName()));
tunniste = new LukionOpintojaksonTunnistePaikallinen2019(paikallinenKoodi, laajuus, pakollinen, kuvaus(courseCredit.getCourseName()));
}
LukionOpintojaksonSuoritus2019 suoritus = new LukionOpintojaksonSuoritus2019(tunniste, suorituksenTyyppi);
return luoKurssiSuoritus(suoritus, courseCredit);
}
use of fi.otavanopisto.pyramus.koski.koodisto.LukionKurssinTyyppi in project pyramus by otavanopisto.
the class KoskiInternetixLukioStudentHandler method findCourseType.
private LukionKurssinTyyppi findCourseType(Student student, CreditStub courseCredit, boolean national, LukionKurssinTyyppi... allowedValues) {
Set<LukionKurssinTyyppi> resolvedTypes = new HashSet<>();
for (CreditStubCredit credit : courseCredit.getCredits()) {
if (credit.getCredit() instanceof CourseAssessment) {
CourseAssessment courseAssessment = (CourseAssessment) credit.getCredit();
if (courseAssessment.getCourseStudent() != null && courseAssessment.getCourseStudent().getCourse() != null) {
Course course = courseAssessment.getCourseStudent().getCourse();
Set<Long> educationSubTypeIds = course.getCourseEducationTypes().stream().flatMap(educationType -> educationType.getCourseEducationSubtypes().stream().map(subType -> subType.getEducationSubtype().getId())).collect(Collectors.toSet());
for (Long educationSubTypeId : educationSubTypeIds) {
String mappedValue = settings.getCourseTypeMapping(educationSubTypeId);
if (mappedValue != null && EnumUtils.isValidEnum(LukionKurssinTyyppi.class, mappedValue)) {
resolvedTypes.add(LukionKurssinTyyppi.valueOf(mappedValue));
}
}
} else
logger.warning(String.format("CourseAssessment %d has no courseStudent or Course", courseAssessment.getId()));
} else if (credit.getCredit() instanceof TransferCredit) {
TransferCredit transferCredit = (TransferCredit) credit.getCredit();
if (national && transferCredit.getOptionality() == CourseOptionality.MANDATORY) {
resolvedTypes.add(LukionKurssinTyyppi.pakollinen);
} else {
resolvedTypes.add(LukionKurssinTyyppi.syventava);
}
} else {
logger.warning(String.format("Unknown credit type %s", credit.getClass().getSimpleName()));
}
}
Set<LukionKurssinTyyppi> allowedSet = new HashSet<>(Arrays.asList(allowedValues));
allowedSet.removeIf(element -> !resolvedTypes.contains(element));
if (allowedSet.size() == 0) {
logger.warning(String.format("Course %s has no feasible subtypes.", courseCredit.getCourseCode()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNRESOLVABLE_SUBTYPES, new Date(), courseCredit.getCourseCode());
return allowedValues[0];
} else if (allowedSet.size() == 1) {
return allowedSet.iterator().next();
} else {
for (LukionKurssinTyyppi type : allowedValues) {
if (allowedSet.contains(type)) {
logger.warning(String.format("Course %s has several matching subtypes.", courseCredit.getCourseCode()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNRESOLVABLE_SUBTYPES, new Date(), courseCredit.getCourseCode());
return type;
}
}
}
return allowedValues[0];
}
use of fi.otavanopisto.pyramus.koski.koodisto.LukionKurssinTyyppi in project pyramus by otavanopisto.
the class AbstractKoskiLukioStudentHandler2019 method findCourseType.
private LukionKurssinTyyppi findCourseType(Student student, CreditStub courseCredit, boolean national, LukionKurssinTyyppi... allowedValues) {
Set<LukionKurssinTyyppi> resolvedTypes = new HashSet<>();
for (CreditStubCredit credit : courseCredit.getCredits()) {
if (credit.getCredit() instanceof CourseAssessment) {
CourseAssessment courseAssessment = (CourseAssessment) credit.getCredit();
if (courseAssessment.getCourseStudent() != null && courseAssessment.getCourseStudent().getCourse() != null) {
Course course = courseAssessment.getCourseStudent().getCourse();
Set<Long> educationSubTypeIds = course.getCourseEducationTypes().stream().flatMap(educationType -> educationType.getCourseEducationSubtypes().stream().map(subType -> subType.getEducationSubtype().getId())).collect(Collectors.toSet());
for (Long educationSubTypeId : educationSubTypeIds) {
String mappedValue = settings.getCourseTypeMapping2019(educationSubTypeId);
if (mappedValue != null && EnumUtils.isValidEnum(LukionKurssinTyyppi.class, mappedValue)) {
resolvedTypes.add(LukionKurssinTyyppi.valueOf(mappedValue));
}
}
} else {
logger.warning(String.format("CourseAssessment %d has no courseStudent or Course", courseAssessment.getId()));
}
} else if (credit.getCredit() instanceof TransferCredit) {
TransferCredit transferCredit = (TransferCredit) credit.getCredit();
if (national && transferCredit.getOptionality() == CourseOptionality.MANDATORY) {
resolvedTypes.add(LukionKurssinTyyppi.pakollinen);
} else {
// TODO Is this correct?
resolvedTypes.add(LukionKurssinTyyppi.syventava);
}
} else {
logger.warning(String.format("Unknown credit type %s", credit.getClass().getSimpleName()));
}
}
Set<LukionKurssinTyyppi> allowedSet = new HashSet<>(Arrays.asList(allowedValues));
allowedSet.removeIf(element -> !resolvedTypes.contains(element));
if (allowedSet.size() == 0) {
logger.warning(String.format("Course %s has no feasible subtypes.", courseCredit.getCourseCode()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNRESOLVABLE_SUBTYPES, new Date(), courseCredit.getCourseCode());
return allowedValues[0];
} else if (allowedSet.size() == 1) {
return allowedSet.iterator().next();
} else {
for (LukionKurssinTyyppi type : allowedValues) {
if (allowedSet.contains(type)) {
logger.warning(String.format("Course %s has several matching subtypes.", courseCredit.getCourseCode()));
koskiPersonLogDAO.create(student.getPerson(), student, KoskiPersonState.UNRESOLVABLE_SUBTYPES, new Date(), courseCredit.getCourseCode());
return type;
}
}
}
return allowedValues[0];
}
Aggregations