testStudyRightWithAssignmentsClassGeneration

1. generate class University

      	  ClassModel model = new ClassModel("org.sdmlib.test.examples.studyrightWithAssignments.model");

      Clazz universityClass = model.createClazz("University")
    		  .withAttribute("name", DataType.STRING);
      
Code: StudyRightWithAssignmentsClassGeneration

2. generate class Student

            Clazz studentClass = model.createClazz("Student")
            .withAttribute("name", DataType.STRING)
            .withAttribute("id", DataType.STRING)
            .withAttribute("assignmentPoints", DataType.INT)
            .withAttribute("motivation", DataType.INT)
            .withAttribute("credits", DataType.INT);
      
Code: StudyRightWithAssignmentsClassGeneration

3. add University --> Student association

            universityClass.withBidirectional(studentClass, "students", Cardinality.MANY, "university", Cardinality.ONE);
      code.withEnd(StoryStepSourceCode.CURRENTPOSITION);
      
Code: StudyRightWithAssignmentsClassGeneration

4. add University --> Room association

            Clazz roomClass = model.createClazz("Room")
            .withAttribute("name", DataType.STRING)
            .withAttribute("topic", DataType.STRING)
            .withAttribute("credits", DataType.INT);

      roomClass.withMethod("findPath", DataType.STRING, new Parameter(DataType.INT).with("motivation"));

      //Association universityToRoom =
      universityClass.createBidirectional(roomClass, "rooms", Cardinality.MANY, "university", Cardinality.ONE).with(AssociationTypes.AGGREGATION);

      // Association doors =
      roomClass.withBidirectional(roomClass, "doors", Cardinality.MANY, "doors", Cardinality.MANY);

      // Association studentsInRoom =
      studentClass.withBidirectional(roomClass, "in", Cardinality.ONE, "students", Cardinality.MANY);
      studentClass.withBidirectional(studentClass, "friends", Cardinality.MANY, "friends", Cardinality.MANY);

      
Code: StudyRightWithAssignmentsClassGeneration

5. add assignments:

            Clazz assignmentClass = model.createClazz("Assignment")
               .withAttribute("content", DataType.STRING)
               .withAttribute("points", DataType.INT)
               .withBidirectional(roomClass, "room", Cardinality.ONE, "assignments", Cardinality.MANY);

      studentClass.withBidirectional(assignmentClass, "done", Cardinality.MANY, "students", Cardinality.MANY);
      
Code: StudyRightWithAssignmentsClassGeneration

6. generate class source files.

      //      model.generate("src/test/java"); // usually don't specify anything here, then it goes into src
      code.withEnd(StoryStepSourceCode.CURRENTPOSITION);
      
Code: StudyRightWithAssignmentsClassGeneration