use of fi.otavanopisto.pyramus.koski.model.Opiskeluoikeus 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.model.Opiskeluoikeus in project pyramus by otavanopisto.
the class KoskiClient method invalidateStudyOid.
/**
* Invalidates a set of study permits in Koski.
*/
public boolean invalidateStudyOid(Person person, Collection<String> studyPermitOids) throws Exception {
if (CollectionUtils.isEmpty(studyPermitOids)) {
logger.log(Level.INFO, String.format("Invalidation called with no oids for person %d", person.getId()));
return true;
}
logger.log(Level.INFO, String.format("Invalidating OIDs %s for person %d", studyPermitOids, person.getId()));
String oppijaOid = personVariableDAO.findByPersonAndKey(person, KOSKI_HENKILO_OID);
Oppija oppija = findOppijaByOid(oppijaOid);
// Remove non-compatible entities
oppija.getOpiskeluoikeudet().removeIf(opiskeluoikeus -> (opiskeluoikeus == null || opiskeluoikeus.getOid() == null));
oppija.getOpiskeluoikeudet().removeIf(opiskeluoikeus -> getLahdejarjestelma(opiskeluoikeus) != Lahdejarjestelma.pyramus);
long matchingOIDs = oppija.getOpiskeluoikeudet().stream().filter(opiskeluoikeus -> opiskeluoikeus.getOid() != null).filter(opiskeluoikeus -> getLahdejarjestelma(opiskeluoikeus) == Lahdejarjestelma.pyramus).filter(opiskeluoikeus -> studyPermitOids.contains(opiskeluoikeus.getOid())).count();
if (matchingOIDs == 0) {
logger.log(Level.WARNING, String.format("No matching OIDs were found (Person %d). Aborting.", person.getId()));
return false;
}
if (matchingOIDs != studyPermitOids.size()) {
logger.log(Level.WARNING, String.format("Specified OID(s) were not present (Person %d). Aborting.", person.getId()));
return false;
}
// Remove study permits that don't have matching oid
oppija.getOpiskeluoikeudet().removeIf(opiskeluoikeus -> !studyPermitOids.contains(opiskeluoikeus.getOid()) || getLahdejarjestelma(opiskeluoikeus) != Lahdejarjestelma.pyramus);
// There were n matching OIDs that should still be present there (just to be as certain about removing just the wanted ones as possible)
if (oppija.getOpiskeluoikeudet().size() == matchingOIDs) {
for (Opiskeluoikeus opiskeluoikeus : oppija.getOpiskeluoikeudet()) {
if (getLahdejarjestelma(opiskeluoikeus) == Lahdejarjestelma.pyramus) {
SourceSystemId sourceSystemId = parseSource(opiskeluoikeus.getLahdejarjestelmanId().getId());
if (sourceSystemId != null) {
// Having multiple periods is going to cause problems invalidating due to date checks in Koski
opiskeluoikeus.getTila().getOpiskeluoikeusjaksot().clear();
Date invalidationDate = opiskeluoikeus.getPaattymispaiva() != null ? opiskeluoikeus.getPaattymispaiva() : opiskeluoikeus.getAlkamispaiva() != null ? opiskeluoikeus.getAlkamispaiva() : new Date();
opiskeluoikeus.getTila().addOpiskeluoikeusJakso(new OpiskeluoikeusJakso(invalidationDate, OpiskeluoikeudenTila.mitatoity));
} else {
String emsg = String.format("Could not invalidate student oid because returned source system id couldn't be parsed (Person %d).", person.getId());
logger.log(Level.WARNING, emsg);
koskiPersonLogDAO.create(person, KoskiPersonState.UNKNOWN_FAILURE, new Date(), emsg);
return false;
}
} else {
String emsg = String.format("Could not invalidate student oid because source system is not Pyramus (Person %d).", person.getId());
logger.log(Level.WARNING, emsg);
koskiPersonLogDAO.create(person, KoskiPersonState.UNKNOWN_FAILURE, new Date(), emsg);
return false;
}
}
return updatePersonToKoski(oppija, person, oppijaOid);
} else {
String emsg = String.format("Unexpected error filtering study permits for invalidation (person=%d, n=%d).", person.getId(), matchingOIDs);
logger.log(Level.WARNING, emsg);
koskiPersonLogDAO.create(person, KoskiPersonState.UNKNOWN_FAILURE, new Date(), emsg);
}
return false;
}
use of fi.otavanopisto.pyramus.koski.model.Opiskeluoikeus in project pyramus by otavanopisto.
the class KoskiLukio2019StudentTestsIT method testDoubleAssessmentSorting.
@Test
public void testDoubleAssessmentSorting() {
OffsetDateTime newerAssessmentDate = OffsetDateTime.of(2022, 6, 1, 12, 0, 0, 0, ZoneOffset.UTC);
OffsetDateTime olderAssessmentDate = OffsetDateTime.of(2022, 2, 1, 12, 0, 0, 0, ZoneOffset.UTC);
Person person = tools().createPerson();
Student student = tools().createStudent(person.getId(), 1l);
Course course = tools().createCourse(getClass().getSimpleName(), ORGANIZATIONID, 4l, 1);
CourseStudent courseStudent = tools().createCourseStudent(course.getId(), student.getId());
CourseAssessment courseAssessment = tools().createCourseAssessment(course.getId(), student.getId(), courseStudent.getId(), 6l, newerAssessmentDate);
CourseAssessment courseAssessment2 = tools().createCourseAssessment(course.getId(), student.getId(), courseStudent.getId(), 8l, olderAssessmentDate);
try {
Response response = given().headers(getAuthHeaders()).get("/persons/persons/{ID}/oppija", person.getId());
response.then().statusCode(200);
Oppija oppija = response.getBody().as(Oppija.class);
assertNotNull(oppija);
assertEquals(1, oppija.getOpiskeluoikeudet().size());
assertTrue(oppija.getHenkilo() instanceof HenkiloTiedotJaOID);
HenkiloTiedotJaOID henkilo = (HenkiloTiedotJaOID) oppija.getHenkilo();
assertEquals(student.getFirstName(), henkilo.getEtunimet());
assertEquals(student.getLastName(), henkilo.getSukunimi());
Opiskeluoikeus opiskeluoikeus = oppija.getOpiskeluoikeudet().get(0);
assertTrue(opiskeluoikeus instanceof LukionOpiskeluoikeus);
assertEquals(OpiskeluoikeudenTyyppi.lukiokoulutus, opiskeluoikeus.getTyyppi().getValue());
assertEquals(toLocalDate(student.getStudyStartDate()), toLocalDate(opiskeluoikeus.getAlkamispaiva()));
assertEquals(toLocalDate(student.getStudyEndDate()), toLocalDate(opiskeluoikeus.getPaattymispaiva()));
LukionOpiskeluoikeus lukionOpiskeluoikeus = (LukionOpiskeluoikeus) opiskeluoikeus;
assertEquals(1, lukionOpiskeluoikeus.getSuoritukset().size());
LukionSuoritus lukionSuoritus = lukionOpiskeluoikeus.getSuoritukset().iterator().next();
assertEquals(SuorituksenTyyppi.lukionoppimaara, lukionSuoritus.getTyyppi().getValue());
assertTrue(lukionSuoritus instanceof LukionOppimaaranSuoritus);
LukionOppimaaranSuoritus lukionOppimaaranSuoritus = (LukionOppimaaranSuoritus) lukionSuoritus;
OrganisaationToimipisteOID toimipiste = (OrganisaationToimipisteOID) lukionSuoritus.getToimipiste();
assertEquals("1.1.000.000.00.00000000000", toimipiste.getOid());
assertEquals("70/011/2015", lukionOppimaaranSuoritus.getKoulutusmoduuli().getPerusteenDiaarinumero());
/**
* Subject
*/
assertEquals(1, lukionOppimaaranSuoritus.getOsasuoritukset().size());
LukionOsasuoritus subject = lukionOppimaaranSuoritus.getOsasuoritukset().iterator().next();
assertTrue(subject instanceof LukionOppiaineenSuoritus);
LukionOppiaineenSuoritus lukionOppiaineenSuoritus = (LukionOppiaineenSuoritus) subject;
assertEquals(1, lukionOppiaineenSuoritus.getOsasuoritukset().size());
LukionKurssinSuoritus lukionKurssinSuoritus = lukionOppiaineenSuoritus.getOsasuoritukset().get(0);
/**
* Grade, sorted
*/
assertEquals(2, lukionKurssinSuoritus.getArviointi().size());
assertNull(lukionKurssinSuoritus.getTunnustettu());
assertEquals(ArviointiasteikkoYleissivistava.GRADE_9, lukionKurssinSuoritus.getArviointi().get(0).getArvosana().getValue());
assertEquals(toLocalDate(olderAssessmentDate), toLocalDate(lukionKurssinSuoritus.getArviointi().get(0).getPaiva()));
assertEquals(ArviointiasteikkoYleissivistava.GRADE_7, lukionKurssinSuoritus.getArviointi().get(1).getArvosana().getValue());
assertEquals(toLocalDate(newerAssessmentDate), toLocalDate(lukionKurssinSuoritus.getArviointi().get(1).getPaiva()));
} finally {
tools().deleteCourseAssessment(course.getId(), student.getId(), courseAssessment2);
tools().deleteCourseAssessment(course.getId(), student.getId(), courseAssessment);
tools().deleteCourseStudent(courseStudent);
tools().deleteCourse(course);
tools().deleteStudent(student);
tools().deletePerson(person);
}
}
use of fi.otavanopisto.pyramus.koski.model.Opiskeluoikeus in project pyramus by otavanopisto.
the class KoskiLukio2019StudentTestsIT method testDoubleAssessmentPost2022.
@Test
public void testDoubleAssessmentPost2022() {
OffsetDateTime firstAssessmentDate = OffsetDateTime.of(2021, 1, 1, 12, 0, 0, 0, ZoneOffset.UTC);
OffsetDateTime secondAssessmentDate = OffsetDateTime.of(2022, 2, 1, 12, 0, 0, 0, ZoneOffset.UTC);
Person person = tools().createPerson();
Student student = tools().createStudent(person.getId(), 1l);
Course course = tools().createCourse(getClass().getSimpleName(), ORGANIZATIONID, 4l, 1);
CourseStudent courseStudent = tools().createCourseStudent(course.getId(), student.getId());
CourseAssessment courseAssessment = tools().createCourseAssessment(course.getId(), student.getId(), courseStudent.getId(), 7l, firstAssessmentDate);
CourseAssessment courseAssessment2 = tools().createCourseAssessment(course.getId(), student.getId(), courseStudent.getId(), 8l, secondAssessmentDate);
try {
Response response = given().headers(getAuthHeaders()).get("/persons/persons/{ID}/oppija", person.getId());
response.then().statusCode(200);
Oppija oppija = response.getBody().as(Oppija.class);
assertNotNull(oppija);
assertEquals(1, oppija.getOpiskeluoikeudet().size());
assertTrue(oppija.getHenkilo() instanceof HenkiloTiedotJaOID);
HenkiloTiedotJaOID henkilo = (HenkiloTiedotJaOID) oppija.getHenkilo();
assertEquals(student.getFirstName(), henkilo.getEtunimet());
assertEquals(student.getLastName(), henkilo.getSukunimi());
Opiskeluoikeus opiskeluoikeus = oppija.getOpiskeluoikeudet().get(0);
assertTrue(opiskeluoikeus instanceof LukionOpiskeluoikeus);
assertEquals(OpiskeluoikeudenTyyppi.lukiokoulutus, opiskeluoikeus.getTyyppi().getValue());
assertEquals(toLocalDate(student.getStudyStartDate()), toLocalDate(opiskeluoikeus.getAlkamispaiva()));
assertEquals(toLocalDate(student.getStudyEndDate()), toLocalDate(opiskeluoikeus.getPaattymispaiva()));
LukionOpiskeluoikeus lukionOpiskeluoikeus = (LukionOpiskeluoikeus) opiskeluoikeus;
assertEquals(1, lukionOpiskeluoikeus.getSuoritukset().size());
LukionSuoritus lukionSuoritus = lukionOpiskeluoikeus.getSuoritukset().iterator().next();
assertEquals(SuorituksenTyyppi.lukionoppimaara, lukionSuoritus.getTyyppi().getValue());
assertTrue(lukionSuoritus instanceof LukionOppimaaranSuoritus);
LukionOppimaaranSuoritus lukionOppimaaranSuoritus = (LukionOppimaaranSuoritus) lukionSuoritus;
OrganisaationToimipisteOID toimipiste = (OrganisaationToimipisteOID) lukionSuoritus.getToimipiste();
assertEquals("1.1.000.000.00.00000000000", toimipiste.getOid());
assertEquals("70/011/2015", lukionOppimaaranSuoritus.getKoulutusmoduuli().getPerusteenDiaarinumero());
/**
* Subject
*/
assertEquals(1, lukionOppimaaranSuoritus.getOsasuoritukset().size());
LukionOsasuoritus subject = lukionOppimaaranSuoritus.getOsasuoritukset().iterator().next();
assertTrue(subject instanceof LukionOppiaineenSuoritus);
LukionOppiaineenSuoritus lukionOppiaineenSuoritus = (LukionOppiaineenSuoritus) subject;
assertEquals(1, lukionOppiaineenSuoritus.getOsasuoritukset().size());
LukionKurssinSuoritus lukionKurssinSuoritus = lukionOppiaineenSuoritus.getOsasuoritukset().get(0);
/**
* Grade, both grades post 2022
*/
assertEquals(2, lukionKurssinSuoritus.getArviointi().size());
assertEquals(ArviointiasteikkoYleissivistava.GRADE_8, lukionKurssinSuoritus.getArviointi().get(0).getArvosana().getValue());
assertEquals(ArviointiasteikkoYleissivistava.GRADE_9, lukionKurssinSuoritus.getArviointi().get(1).getArvosana().getValue());
} finally {
tools().deleteCourseAssessment(course.getId(), student.getId(), courseAssessment2);
tools().deleteCourseAssessment(course.getId(), student.getId(), courseAssessment);
tools().deleteCourseStudent(courseStudent);
tools().deleteCourse(course);
tools().deleteStudent(student);
tools().deletePerson(person);
}
}
use of fi.otavanopisto.pyramus.koski.model.Opiskeluoikeus in project pyramus by otavanopisto.
the class KoskiLukio2019StudentTestsIT method testBasicInformation.
@Test
public void testBasicInformation() {
Person person = tools().createPerson();
Student student = tools().createStudent(person.getId(), 1l);
Course course = tools().createCourse(getClass().getSimpleName(), ORGANIZATIONID, 4l, 1);
CourseStudent courseStudent = tools().createCourseStudent(course.getId(), student.getId());
CourseAssessment courseAssessment = tools().createCourseAssessment(course.getId(), student.getId(), courseStudent.getId(), 7l);
try {
Response response = given().headers(getAuthHeaders()).get("/persons/persons/{ID}/oppija", person.getId());
response.then().statusCode(200);
Oppija oppija = response.getBody().as(Oppija.class);
assertNotNull(oppija);
assertEquals(1, oppija.getOpiskeluoikeudet().size());
assertTrue(oppija.getHenkilo() instanceof HenkiloTiedotJaOID);
HenkiloTiedotJaOID henkilo = (HenkiloTiedotJaOID) oppija.getHenkilo();
assertEquals(student.getFirstName(), henkilo.getEtunimet());
assertEquals(student.getLastName(), henkilo.getSukunimi());
Opiskeluoikeus opiskeluoikeus = oppija.getOpiskeluoikeudet().get(0);
assertTrue(opiskeluoikeus instanceof LukionOpiskeluoikeus);
assertEquals(OpiskeluoikeudenTyyppi.lukiokoulutus, opiskeluoikeus.getTyyppi().getValue());
assertEquals(toLocalDate(student.getStudyStartDate()), toLocalDate(opiskeluoikeus.getAlkamispaiva()));
assertEquals(toLocalDate(student.getStudyEndDate()), toLocalDate(opiskeluoikeus.getPaattymispaiva()));
LukionOpiskeluoikeus lukionOpiskeluoikeus = (LukionOpiskeluoikeus) opiskeluoikeus;
assertEquals(1, lukionOpiskeluoikeus.getSuoritukset().size());
LukionSuoritus lukionSuoritus = lukionOpiskeluoikeus.getSuoritukset().iterator().next();
assertEquals(SuorituksenTyyppi.lukionoppimaara, lukionSuoritus.getTyyppi().getValue());
assertTrue(lukionSuoritus instanceof LukionOppimaaranSuoritus);
LukionOppimaaranSuoritus lukionOppimaaranSuoritus = (LukionOppimaaranSuoritus) lukionSuoritus;
OrganisaationToimipisteOID toimipiste = (OrganisaationToimipisteOID) lukionSuoritus.getToimipiste();
assertEquals("1.1.000.000.00.00000000000", toimipiste.getOid());
assertEquals("70/011/2015", lukionOppimaaranSuoritus.getKoulutusmoduuli().getPerusteenDiaarinumero());
/**
* Subject
*/
assertEquals(1, lukionOppimaaranSuoritus.getOsasuoritukset().size());
LukionOsasuoritus subject = lukionOppimaaranSuoritus.getOsasuoritukset().iterator().next();
assertTrue(subject instanceof LukionOppiaineenSuoritus);
LukionOppiaineenSuoritus lukionOppiaineenSuoritus = (LukionOppiaineenSuoritus) subject;
assertEquals(1, lukionOppiaineenSuoritus.getOsasuoritukset().size());
LukionKurssinSuoritus lukionKurssinSuoritus = lukionOppiaineenSuoritus.getOsasuoritukset().get(0);
/**
* Grade
*/
assertEquals(1, lukionKurssinSuoritus.getArviointi().size());
KurssinArviointi kurssinArviointi = lukionKurssinSuoritus.getArviointi().get(0);
assertEquals(ArviointiasteikkoYleissivistava.GRADE_8, kurssinArviointi.getArvosana().getValue());
} finally {
tools().deleteCourseAssessment(course.getId(), student.getId(), courseAssessment);
tools().deleteCourseStudent(courseStudent);
tools().deleteCourse(course);
tools().deleteStudent(student);
tools().deletePerson(person);
}
}
Aggregations