use of fi.otavanopisto.pyramus.koski.model.Oppija in project pyramus by otavanopisto.
the class PersonRESTService method getOppija.
@Path("/persons/{ID:[0-9]*}/oppija")
@GET
@RESTPermit(handling = Handling.INLINE)
public Response getOppija(@PathParam("ID") Long id) {
if (sessionController.getUser() == null || sessionController.getUser().getRole() != Role.ADMINISTRATOR) {
return Response.status(Status.NOT_FOUND).build();
}
Person person = personController.findPersonById(id);
if (person == null) {
return Response.status(Status.NOT_FOUND).build();
}
try {
Oppija oppija = koskiController.personToOppija(person);
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
return Response.ok(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(oppija)).build();
} catch (Exception e) {
e.printStackTrace();
logger.log(Level.SEVERE, "Couldn't produce output", e);
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
}
}
use of fi.otavanopisto.pyramus.koski.model.Oppija 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.Oppija in project pyramus by otavanopisto.
the class APOOppimaaraData method getTestStudent.
public static Oppija getTestStudent() {
Oppija oppija = new Oppija();
oppija.setHenkilo(new HenkiloUusi("111111A111C", "Sally", "Student", "Sally"));
AikuistenPerusopetuksenOpiskeluoikeus opiskeluoikeus = new AikuistenPerusopetuksenOpiskeluoikeus();
oppija.addOpiskeluoikeus(opiskeluoikeus);
Date paattymispaiva = date(2017, 10, 10);
opiskeluoikeus.setPaattymispaiva(paattymispaiva);
OpiskeluoikeusJakso jakso = new OpiskeluoikeusJakso(new Date(), OpiskeluoikeudenTila.lasna);
jakso.setOpintojenRahoitus(new KoodistoViite<OpintojenRahoitus>(OpintojenRahoitus.K1));
opiskeluoikeus.getTila().addOpiskeluoikeusJakso(jakso);
opiskeluoikeus.getTila().addOpiskeluoikeusJakso(new OpiskeluoikeusJakso(paattymispaiva, OpiskeluoikeudenTila.valmistunut));
opiskeluoikeus.setLahdejarjestelmanId(getLahdeJarjestelmaID(1l));
OrganisaationToimipiste toimipiste = new OrganisaationToimipisteOID(ACADEMYOID);
AikuistenPerusopetuksenOppimaaranSuoritus suoritus = new AikuistenPerusopetuksenOppimaaranSuoritus(PerusopetuksenSuoritusTapa.koulutus, Kieli.FI, toimipiste);
opiskeluoikeus.addSuoritus(suoritus);
// Oppiaine
AikuistenPerusopetuksenOppiaineenTunniste koulutusmoduuli = new AikuistenPerusopetuksenOppiaineenSuoritusAidinkieli(OppiaineAidinkieliJaKirjallisuus.AI1, true);
AikuistenPerusopetuksenOppiaineenSuoritus oppiaine = new AikuistenPerusopetuksenOppiaineenSuoritus(koulutusmoduuli);
suoritus.addOsasuoritus(oppiaine);
// Oppiaineen arviointi
oppiaine.addArviointi(new KurssinArviointiNumeerinen(ArviointiasteikkoYleissivistava.GRADE_9, paattymispaiva));
// Kurssi 1
AikuistenPerusopetuksenKurssinTunniste kurssinTunniste = new AikuistenPerusopetuksenKurssinTunnisteOPS2015(AikuistenPerusopetuksenKurssit2015.ÄI1);
AikuistenPerusopetuksenKurssinSuoritus kurssi = new AikuistenPerusopetuksenKurssinSuoritus(kurssinTunniste);
kurssi.addArviointi(new KurssinArviointiNumeerinen(ArviointiasteikkoYleissivistava.GRADE_9, paattymispaiva));
oppiaine.addOsasuoritus(kurssi);
// Kurssi 2
kurssinTunniste = new AikuistenPerusopetuksenKurssinTunnistePaikallinen(new PaikallinenKoodi("ÄI123", kuvaus("ABC")));
kurssi = new AikuistenPerusopetuksenKurssinSuoritus(kurssinTunniste);
kurssi.addArviointi(new KurssinArviointiSanallinen(ArviointiasteikkoYleissivistava.GRADE_S, paattymispaiva, kuvaus("S")));
oppiaine.addOsasuoritus(kurssi);
return oppija;
}
use of fi.otavanopisto.pyramus.koski.model.Oppija in project pyramus by otavanopisto.
the class KoskiAPOJSONTestsIT method testDeserialization.
@Test
public void testDeserialization() throws JsonParseException, JsonMappingException, IOException {
String testStudent = getTestStudentJSON();
ObjectMapper mapper = new ObjectMapper();
Oppija oppija = mapper.readValue(testStudent, Oppija.class);
assertNotNull(oppija);
assertTrue(oppija.getHenkilo() instanceof HenkiloTiedotJaOID);
/**
* Henkilö
*/
if (oppija.getHenkilo() instanceof HenkiloTiedotJaOID) {
HenkiloTiedotJaOID henkilo = (HenkiloTiedotJaOID) oppija.getHenkilo();
assertEquals("1.2.246.562.24.00000000021", henkilo.getOid());
assertEquals("280598-2415", henkilo.getHetu());
assertEquals("Aini", henkilo.getEtunimet());
assertEquals("Aikuisopiskelija", henkilo.getSukunimi());
assertEquals("Aini", henkilo.getKutsumanimi());
}
/**
* Opiskeluoikeus
*/
assertEquals(1, oppija.getOpiskeluoikeudet().size());
assertTrue(oppija.getOpiskeluoikeudet().get(0) instanceof AikuistenPerusopetuksenOpiskeluoikeus);
if (oppija.getOpiskeluoikeudet().get(0) instanceof AikuistenPerusopetuksenOpiskeluoikeus) {
AikuistenPerusopetuksenOpiskeluoikeus opiskeluoikeus = (AikuistenPerusopetuksenOpiskeluoikeus) oppija.getOpiskeluoikeudet().get(0);
assertEquals(2, opiskeluoikeus.getTila().getOpiskeluoikeusjaksot().size());
assertEquals(2, opiskeluoikeus.getSuoritukset().size());
/**
* Aikuisten perusopetuksen oppimäärä
*/
AikuistenPerusopetuksenSuoritus suoritus = opiskeluoikeus.getSuoritukset().stream().filter(apoSuoritus -> apoSuoritus.getTyyppi().getValue() == SuorituksenTyyppi.aikuistenperusopetuksenoppimaara).findFirst().orElse(null);
assertTrue(suoritus instanceof AikuistenPerusopetuksenOppimaaranSuoritus);
if (suoritus instanceof AikuistenPerusopetuksenOppimaaranSuoritus) {
AikuistenPerusopetuksenOppimaaranSuoritus apoSuoritus = (AikuistenPerusopetuksenOppimaaranSuoritus) suoritus;
assertEquals(22, apoSuoritus.getOsasuoritukset().size());
// TODO: check all the rest million properties
}
}
}
use of fi.otavanopisto.pyramus.koski.model.Oppija in project pyramus by otavanopisto.
the class APAData method getTestStudent.
public static Oppija getTestStudent() {
Oppija oppija = new Oppija();
oppija.setHenkilo(new HenkiloUusi("111111A111C", "Sally", "Student", "Sally"));
AikuistenPerusopetuksenOpiskeluoikeus opiskeluoikeus = new AikuistenPerusopetuksenOpiskeluoikeus();
oppija.addOpiskeluoikeus(opiskeluoikeus);
Date paattymispaiva = date(2017, 10, 10);
opiskeluoikeus.setPaattymispaiva(paattymispaiva);
OpiskeluoikeusJakso jakso = new OpiskeluoikeusJakso(new Date(), OpiskeluoikeudenTila.lasna);
jakso.setOpintojenRahoitus(new KoodistoViite<OpintojenRahoitus>(OpintojenRahoitus.K1));
opiskeluoikeus.getTila().addOpiskeluoikeusJakso(jakso);
opiskeluoikeus.getTila().addOpiskeluoikeusJakso(new OpiskeluoikeusJakso(paattymispaiva, OpiskeluoikeudenTila.valmistunut));
opiskeluoikeus.setLahdejarjestelmanId(getLahdeJarjestelmaID(1l));
OrganisaationToimipiste toimipiste = new OrganisaationToimipisteOID(ACADEMYOID);
APASuoritus suoritus = new APASuoritus(PerusopetuksenSuoritusTapa.koulutus, Kieli.FI, toimipiste);
opiskeluoikeus.addSuoritus(suoritus);
APAOppiaineenTunniste koulutusmoduuli = new APAOppiaineenTunnisteAidinkieli(OppiaineAidinkieliJaKirjallisuus.AI1);
APAOppiaineenSuoritus oppiaine = new APAOppiaineenSuoritus(koulutusmoduuli);
suoritus.addOsasuoritus(oppiaine);
APAKurssinTunniste tunniste = new APAKurssinTunnisteOPS2017(AikuistenPerusopetuksenAlkuvaiheenKurssit2017.AÄI1);
APAKurssinSuoritus kurssi = new APAKurssinSuoritus(tunniste);
kurssi.addArviointi(new KurssinArviointiNumeerinen(ArviointiasteikkoYleissivistava.GRADE_9, paattymispaiva));
oppiaine.addOsasuoritus(kurssi);
tunniste = new APAKurssinTunnistePaikallinen(new PaikallinenKoodi("AÄI123", kuvaus("ABC")));
kurssi = new APAKurssinSuoritus(tunniste);
kurssi.addArviointi(new KurssinArviointiSanallinen(ArviointiasteikkoYleissivistava.GRADE_S, paattymispaiva, kuvaus("S")));
oppiaine.addOsasuoritus(kurssi);
return oppija;
}
Aggregations