Készíts olyan JPA programot, amely egy egyetemet modellez az alábbiak szerint. Az egyetemnek vannak hallgatói (Student) és oktatói (Professor), valamint vannak kurzusok (Course). Mindegyik rendelkezik automatikusan generált azonosítóval (id) és névvel (name). A hallgatók a kurzusokat hallgatják (studies, egy hallgató több kurzust is hallgathat), az oktatók oktatják (teaches, egy oktató több kurzust is oktathat). A kurzusokhoz ismert a tárgy neve (subjectName, de még elegánsabb külön Subject entitás felvételével; ugyanazon tárgyhoz tartozhat több kurzus), valamint az, hogy mikor kezdődik: dayOfWeek (ez DayOfWeek felsorolási típusként ábrázolva), hour, minute.

Az adatok egyszerű feltöltéséhez legyenek student.csv, professor.csv, course.csv fájljaink, ezek soronként, vesszővel elválasztva tartalmazzák egy-egy entitás adatait. (A .csv fájlok egyszerű szövegszerkesztővel előállíthatóak.) A program kezdetben töltse fel a university persistence unitot a fájlokból felolvasott adatokkal, majd a sztenderd bemenetről várt sorok utasítanak a következőkre. (A nagybetűs részek változtatható paraméterek, a kisbetűsek fix részei a parancsoknak. Feltételezhető, hogy a bemeneten csak érvényes parancsok érkeznek, nem szükséges a hibás eseteket – pl. hiányzó paraméterek – kezelni.)

  1. day-off S: kilistázza azokat a napokat, amelyeken S hallgatónak nincsen órája.
  2. colleagues T: kilistázza azokat az oktatókat, akiknek van T-vel közös tárgyuk.
  3. teaches X Y: X oktató oktatja-e Y hallgatót?
  4. kind X: az X névről megmondja, hogy hallgató, oktató vagy kurzus neve-e, vagy nincsen a rendszerben. A sztenderd kimenetre ennek megfelelően íródjon ki a student, Professor, course, unknown szöveg. Az egyszerűség kedvéért tegyük fel, hogy a négy lehetőség közül pontosan egy teljesül.
  5. merge C1 C2: a C1 kurzus megszűnik, a hallgatói a C2 kurzust hallgatják a továbbiakban.
  6. swap C1 C2: a két kurzus oktatói cserélődjenek fel.
  7. between D H1 H2: kilistázza a D napon H1 óra és H2 óra között kezdődő órák neveit. H2 óra 0 perc már nem értendő bele az intervallumba.