Storyboard StudyRightObjectModelNavigationAndQueries

Extend the class model:

How to navigate and query an object model.

Step 1: Example object structure:

StudyRightObjectModelNavigationAndQueriesStep3.png

Step 2: Simple set based navigation:



      double assignmentPoints = university.getRooms().getAssignments().getPoints().sum();

      double donePoints = university.getStudents().getDone().getPoints().sum();

Results in:

      Sum of assignment points: 23.0. 
      Sum of points of assignments that have been done by at least one students: 15.0.

Check: Assignment points: 23.0 actual 23.0

Check: donePoints: 15.0 actual 15.0

Step 3: Rooms with assignments not yet done by Karli:



      AssignmentSet availableAssignments = university.getRooms().getAssignments().minus(karli.getDone());

      RoomSet rooms = availableAssignments.getRoom();

Results in:

      (17 senate math, 25 gymnasium sports)

Check: rooms.size(): 2 actual 2

Step 4: Filter for attribute:



      RoomSet rooms17 = university.getRooms().createCreditsCondition(17);
      RoomSet roomsGE20 = university.getRooms().createCreditsCondition(20, Integer.MAX_VALUE);

Results in:

      rooms17: (17 senate math)
      roomsGE20: (25 gymnasium sports, 42 7422 Software Engineering)

Step 5: Filter for even values:



      SimpleSet<Room> roomsEven = university.getRooms().filter(r -> r.getCredits() % 2 == 0);

Results in:

      (16 7522 arts, 0 The End exam, 42 7422 Software Engineering)

Step 6: Filter for type:



      // TOODO TeachingAssistantSet taStudents = university.getRooms().getStudents().instanceOfTeachingAssistant();
      StudentSet taStuds = university.getRooms().getStudents().filter(s -> s instanceof TeachingAssistant);
      TeachingAssistantSet taStudents = new TeachingAssistantSet().with(taStuds);

(0 0 4242 0 Karli)

Step 7: Write operations on sets:



      university.getStudents().withMotivation(42);

StudyRightObjectModelNavigationAndQueriesStep28.png