Difference between revisions of "VJFS"

From mn/ifi/inf5750
Jump to: navigation, search
Line 10: Line 10:
 
<font size="2">VJFS_Admin:</font>
 
<font size="2">VJFS_Admin:</font>
  
*<font size="2"></font>Create courses, quizes and questions.
+
*Create courses, quizes and questions.
 
*Add attendants and mentors to course.
 
*Add attendants and mentors to course.
 
*Support both multiple choice and text questions.
 
*Support both multiple choice and text questions.
Line 16: Line 16:
 
<font size="2">VJFS_User:</font>
 
<font size="2">VJFS_User:</font>
  
*Take a quiz for course enrolled in.<font size="2"></font>
+
*Take a quiz for course enrolled in.
 
*See finished courses and quizes.
 
*See finished courses and quizes.
 
*See pending quizes.
 
*See pending quizes.
Line 23: Line 23:
  
 
*<font size="2">Correct answered quizes.</font>
 
*<font size="2">Correct answered quizes.</font>
*<font size="2"></font><span style="font-size: small;">Give feedback in form of approved/not approved.</span>
+
*<span style="font-size: small;">Give feedback in form of approved/not approved.</span>
 +
 
  
<span style="font-size: small;"></span>
 
  
 
== <span style="font-size:medium">Architecture</span> ==
 
== <span style="font-size:medium">Architecture</span> ==
Line 76: Line 76:
 
= <span style="font-size:large">How you are dividing tasks within the group</span> =
 
= <span style="font-size:large">How you are dividing tasks within the group</span> =
  
*'''All:'''<br/><br/>- Brainstorming.<br/>- Designing and Prototyping of Apps.<br/><br/>
+
*'''All:'''<br/><br/>- Brainstorming.<br/>- Designing and Prototyping of Apps.
*'''Joakim Kristiansen:'''<br/><br/>- Wiki.<br/>- Implemented VJFS_Admin App.<br/>- Designed JSON format.&nbsp;<br/><br/>
+
*'''Joakim Kristiansen:'''<br/><br/>- Wiki.<br/>- Implemented VJFS_Admin App.<br/>- Designed JSON format.&nbsp;
*'''Vivek Kaul:'''<br/><br/>- Mockups and ORM modell.<br/>- Implemented VJFS_User App.<br/><br/>
+
*'''Vivek Kaul:'''<br/><br/>- Mockups and ORM modell.<br/>- Implemented VJFS_User App.
*'''Sigurhjörtur Snorrason:'''<br/><br/>- Wiki.<br/>- Flowcharts.<br/>- Implemented VJFS_Mentor App<br/><br/>
+
*'''Sigurhjörtur Snorrason:'''<br/><br/>- Wiki.<br/>- Flowcharts.<br/>- Implemented VJFS_Mentor App
*'''Farrukh Wahab Manzoor:'''<br/><br/>- Mockups and ORM modell.<br/>- BloodHound & Summernote.<br/>- Project Presentation<br/><br/>
+
*'''Farrukh Wahab Manzoor:'''<br/><br/>- Mockups and ORM modell.<br/>- BloodHound & Summernote.<br/>- Project Presentation
 +
 
 +
= <font size="4">Screen Flow and Design Skeleton</font> =
 +
 
 +
Flow of the creation of new courses, quizes and questions.
 +
 
 +
http://folk.uio.no/sigurhjs/pD1epn8.png
 +
 
 +
Flow of the course and quiz taking application.
 +
 
 +
http://folk.uio.no/sigurhjs/UewKaz0.png
 +
 
 +
== The mockup of the GUI ==
 +
 
 +
By creating basic design of what we want our GUI to ressemble we have created a clear outline for us to work on. This means we can focus more on the functionality of the program and not spend to much time getting ideas for the acutal look of the program. We also aimed for a simplistic look to our GUI. One of the reasons being that this should be useable by anyone, even if it is the first minute of working with DHIS. By keeping the amount of buttons and things you can do as low as possible while keeping the fundamental requirements of the program we hope it will be as easy as possible to learn.&nbsp;<br/><br/>As these are mockups of the actual GUI we have omitted as much graphical design as we, and just keep to the fundamental parts we require from the GUI.
 +
 
 +
The mockups can be found&nbsp;[https://github.com/joakikr/inf5750/tree/master/Modelimages/MockPages https://github.com/joakikr/inf5750/tree/master/Modelimages/MockPages]
 +
 
 +
 
  
 
= <span style="font-size: large;">How Information Is Stored</span> =
 
= <span style="font-size: large;">How Information Is Stored</span> =
  
For the three apps the information about courses, quizes, questions and users answers is stored as JSON objects within DHIS own resource, ''&nbsp;/api/systemSettings''.
+
For the three apps the information about courses, quizes, questions and users answers is stored as JSON objects within DHIS own resource,&nbsp;''&nbsp;/api/systemSettings''.
  
 
'''''VJFS_Admin:'''''
 
'''''VJFS_Admin:'''''
Line 90: Line 108:
 
There are three&nbsp;''systemSettings''&nbsp;this app will create/modify -&nbsp;''VJFS_courses, VJFS_quizes&nbsp;''and&nbsp;''VJFS_questions''.
 
There are three&nbsp;''systemSettings''&nbsp;this app will create/modify -&nbsp;''VJFS_courses, VJFS_quizes&nbsp;''and&nbsp;''VJFS_questions''.
  
*''VJFS_courses&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_courses&nbsp;''and its JSON object will have the following notation.<br/>Each&nbsp;''course&nbsp;''is an element in the array&nbsp;''courses'' and has the following properties:<br/><br/>''courseID&nbsp;: ''An unique ID that represents the course. (required)<br/>''courseTitle:''&nbsp;The title for the course. (required)<br/>''courseDescription:&nbsp;''The description of the course.<br/>''courseAttendants:&nbsp;''The attendants for the course, this is a subset of the users of DHIS system.<br/>''courseMentors:&nbsp;''The mentors for the course, this is a subset of the users of DHIS system<br/><br/>An example JSON object:
+
*''VJFS_courses&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_courses&nbsp;''and its JSON object will have the following notation.<br/>Each&nbsp;''course&nbsp;''is an element in the array&nbsp;''courses''&nbsp;and has the following properties:<br/><br/>''courseID&nbsp;:&nbsp;''An unique ID that represents the course. (required)<br/>''courseTitle:''&nbsp;The title for the course. (required)<br/>''courseDescription:&nbsp;''The description of the course.<br/>''courseAttendants:&nbsp;''The attendants for the course, this is a subset of the users of DHIS system.<br/>''courseMentors:&nbsp;''The mentors for the course, this is a subset of the users of DHIS system<br/><br/>An example JSON object:
  
 
<source lang="javascript">
 
<source lang="javascript">
 
{
 
{
 
courses: [
 
courses: [
  {
+
{
    courseID: 1416663811386,
+
courseID: 1416663811386,
    courseTitle: "Course 1",
+
courseTitle: "Course 1",
    courseDescription: ""<p>This is course 1.</p>"",
+
courseDescription: ""<p>This is course 1.</p>"",
    courseAttendants: [
+
courseAttendants: [
      {
+
{
        attendantUsername: "toure",
+
attendantUsername: "toure",
        attendantName: "Yaya Toure",
+
attendantName: "Yaya Toure",
        attendantID: "yI9qQfuM7Xd"
+
attendantID: "yI9qQfuM7Xd"
      }
+
}
    ],
+
],
    courseMentors: [ ]
+
courseMentors: [ ]
  },
+
},
  {
+
{
    courseID: 1416663826881,
+
courseID: 1416663826881,
    courseTitle: "Course 2",
+
courseTitle: "Course 2",
    courseDescription: ""<p>This is course 2.</p>"",
+
courseDescription: ""<p>This is course 2.</p>"",
    courseAttendants: [ ],
+
courseAttendants: [ ],
    courseMentors: [ ]
+
courseMentors: [ ]
  }
+
}
 
]
 
]
 
}
 
}
 
</source>
 
</source>
  
*''VJFS_quizes&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_quizes'' and its JSON object will have the following notation.<br/>Each quiz is an element in the array&nbsp;''quizes'' and has the following properties:<br/><br/>''quizID:&nbsp;''An unique ID that represents the quiz. (required)<br/>''courseID:&nbsp;''The ID of the course this quiz belongs to. (required)<br/>''quizTitle:&nbsp;''The title for the quiz. (required)<br/>''quizLevel:&nbsp;''The level of this quiz. If a quiz in a course has level&nbsp;''x'', then all quizes in that course with level lower than&nbsp;''x'' must be taken first. (required)<br/><br/>An example JSON object:
+
*''VJFS_quizes&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_quizes''&nbsp;and its JSON object will have the following notation.<br/>Each quiz is an element in the array&nbsp;''quizes''&nbsp;and has the following properties:<br/><br/>''quizID:&nbsp;''An unique ID that represents the quiz. (required)<br/>''courseID:&nbsp;''The ID of the course this quiz belongs to. (required)<br/>''quizTitle:&nbsp;''The title for the quiz. (required)<br/>''quizLevel:&nbsp;''The level of this quiz. If a quiz in a course has level&nbsp;''x'', then all quizes in that course with level lower than&nbsp;''x''&nbsp;must be taken first. (required)<br/><br/>An example JSON object:
  
 
<source lang="javascript">
 
<source lang="javascript">
 
{
 
{
  quizes: 
[
+
quizes: 
[
  
 {
+
  
 {
    quizID: 1416665405980,
+
quizID: 1416665405980,
    courseID: "1416663811386",
+
courseID: "1416663811386",
    quizTitle: "Quiz 1",
+
quizTitle: "Quiz 1",
    quizLevel: "1"
+
quizLevel: "1"
  },
+
},
  
{
+

{
    quizID: 1416665421301,
+
quizID: 1416665421301,
    courseID: "1416663811386",
+
courseID: "1416663811386",
    quizTitle: "Quiz 2",
+
quizTitle: "Quiz 2",
    quizLevel: "2"
+
quizLevel: "2"
  }   
+
}  
  ]
+
  ]
 
}
 
}
 
</source>
 
</source>
  
*''VJFS_questions&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_questions&nbsp;''and its JSON object will have the following notation.<br/>Each&nbsp;''question&nbsp;''is an element in the array&nbsp;''questions'' and has the following properties:<br/><br/>''questionID:'' An unique ID that represents the question. (required)<br/>''quizID'': The ID of the quiz ths question belongs to. (required)<br/>''questionType:'' The type of the question - it's either "text" for text question or "multiple" for a multiplechoice question. (required)<br/>''questionQuestion:'' The question for the question. (required)<br/>''questionAnswer:&nbsp;''The answer to the question. (required for "text" questions)<br/>''questionAlternatives:&nbsp;''The alternatives with a boolean of whether that alternative is correct or not. (required for "multiple" questions)<br/><br/>An example JSON object:
+
*''VJFS_questions&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_questions&nbsp;''and its JSON object will have the following notation.<br/>Each&nbsp;''question&nbsp;''is an element in the array&nbsp;''questions''&nbsp;and has the following properties:<br/><br/>''questionID:''&nbsp;An unique ID that represents the question. (required)<br/>''quizID'': The ID of the quiz ths question belongs to. (required)<br/>''questionType:''&nbsp;The type of the question - it's either "text" for text question or "multiple" for a multiplechoice question. (required)<br/>''questionQuestion:''&nbsp;The question for the question. (required)<br/>''questionAnswer:&nbsp;''The answer to the question. (required for "text" questions)<br/>''questionAlternatives:&nbsp;''The alternatives with a boolean of whether that alternative is correct or not. (required for "multiple" questions)<br/><br/>An example JSON object:
  
 
<source lang="javascript">
 
<source lang="javascript">
 
{
 
{
  questions: [
+
questions: [
    {
+
{
      questionID: 1416665924422,
+
questionID: 1416665924422,
      quizID: "1416665405980",
+
quizID: "1416665405980",
      questionTitle: "Question 1",
+
questionTitle: "Question 1",
      questionType: "text",
+
questionType: "text",
      questionQuestion: "Q",
+
questionQuestion: "Q",
      questionAnswer: "A"
+
questionAnswer: "A"
    },
+
},
    {
+
{
      questionID: 1416665944701,
+
questionID: 1416665944701,
      quizID: "1416665405980",
+
quizID: "1416665405980",
      questionTitle: "Question 2",
+
questionTitle: "Question 2",
      questionType: "multiple",
+
questionType: "multiple",
      questionQuestion: "Q",
+
questionQuestion: "Q",
      questionAlternatives: [
+
questionAlternatives: [
        {
+
{
          alternativeChecked: true,
+
alternativeChecked: true,
          alternativeValue: "A1"
+
alternativeValue: "A1"
        },
+
},
        {
+
{
          alternativeChecked: false,
+
alternativeChecked: false,
          alternativeValue: "A2"
+
alternativeValue: "A2"
        }
+
}
      ]
+
]
    }
+
}
  ]
+
]
 
}
 
}
 
</source>
 
</source>
 
<div><br/></div><div>'''VJFS_User:'''<br/></div><div><br/></div><div>For users of the the quiz app there will be created four new field on the&nbsp;''systemSettings&nbsp;''resource per user.</div><div>These fields will have the following pattern URL:&nbsp;''/api/systemSettings/VJFS_&lt;username&gt;_&lt;courses | quizes | questions&gt;''.</div><div><br/></div>
 
<div><br/></div><div>'''VJFS_User:'''<br/></div><div><br/></div><div>For users of the the quiz app there will be created four new field on the&nbsp;''systemSettings&nbsp;''resource per user.</div><div>These fields will have the following pattern URL:&nbsp;''/api/systemSettings/VJFS_&lt;username&gt;_&lt;courses | quizes | questions&gt;''.</div><div><br/></div>
*''VJFS_username_courses&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_username_courses&nbsp;''and will have the following notation:<br/>Each&nbsp;''course'' is an element in the array&nbsp;''courses&nbsp;''and will only have one property:<br/><br/>''courseID:''&nbsp;The ID of a course this user has passed. (required)
+
*''VJFS_username_courses&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_username_courses&nbsp;''and will have the following notation:<br/>Each&nbsp;''course''&nbsp;is an element in the array&nbsp;''courses&nbsp;''and will only have one property:<br/><br/>''courseID:''&nbsp;The ID of a course this user has passed. (required)
*''VJFS_username_quizes'' can be found from the URL&nbsp;''/api/systemSettings/VJFS_username_quizes'' and will have the following notation:<br/>Each&nbsp;''quiz'' is an element in the array&nbsp;''quizes&nbsp;''and will only have one property:<br/><br/>''quizID:'' The ID of a quiz this users has passed. (required)
+
*''VJFS_username_quizes''&nbsp;can be found from the URL&nbsp;''/api/systemSettings/VJFS_username_quizes''&nbsp;and will have the following notation:<br/>Each&nbsp;''quiz''&nbsp;is an element in the array&nbsp;''quizes&nbsp;''and will only have one property:<br/><br/>''quizID:''&nbsp;The ID of a quiz this users has passed. (required)
*''VJFS_username_questions&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_username_questions&nbsp;''and will have the following notation:<br/>Each&nbsp;''question'' is an element in the array&nbsp;''questions'' and will have the following properties:<br/><br/>''questionID:&nbsp;''The ID of the question this answer belongs to. (required)<br/>''quizID:&nbsp;''The ID of the quiz the question belonged to. (required)<br/>''questionAnswer'': The answer provided by the user for this question. (required for "text" questions)<br/>''questionAlternatives:''&nbsp;The alternatives with a boolean of the users answer on that alternative. (required for "multiple" questions)<br/>''corrected:&nbsp;''Holds the value of whether this answer has been corrected or not.
+
*''VJFS_username_questions&nbsp;''can be found from the URL&nbsp;''/api/systemSettings/VJFS_username_questions&nbsp;''and will have the following notation:<br/>Each&nbsp;''question''&nbsp;is an element in the array&nbsp;''questions''&nbsp;and will have the following properties:<br/><br/>''questionID:&nbsp;''The ID of the question this answer belongs to. (required)<br/>''quizID:&nbsp;''The ID of the quiz the question belonged to. (required)<br/>''questionAnswer'': The answer provided by the user for this question. (required for "text" questions)<br/>''questionAlternatives:''&nbsp;The alternatives with a boolean of the users answer on that alternative. (required for "multiple" questions)<br/>''corrected:&nbsp;''Holds the value of whether this answer has been corrected or not.
  
  
 
<div>'''VJFS_Mentor''':<br/></div><div><br/></div><div>The mentor app will not itself store new data, but rather modify existing data saved in URL:&nbsp;''/api/systemSettings/VJFS_&lt;username&gt;_&lt;courses | quizes | questions&gt;''.</div>
 
<div>'''VJFS_Mentor''':<br/></div><div><br/></div><div>The mentor app will not itself store new data, but rather modify existing data saved in URL:&nbsp;''/api/systemSettings/VJFS_&lt;username&gt;_&lt;courses | quizes | questions&gt;''.</div>
  
= <font size="4">Screen Flow and Design Skeleton</font> =
 
 
Flow of the creation of new courses, quizes and questions.
 
 
http://folk.uio.no/sigurhjs/pD1epn8.png
 
 
Flow of the course and quiz taking application.
 
 
http://folk.uio.no/sigurhjs/UewKaz0.png
 
 
== The mockup of the GUI ==
 
 
By creating basic design of what we want our GUI to ressemble we have created a clear outline for us to work on. This means we can focus more on the functionality of the program and not spend to much time getting ideas for the acutal look of the program. We also aimed for a simplistic look to our GUI. One of the reasons being that this should be useable by anyone, even if it is the first minute of working with DHIS. By keeping the amount of buttons and things you can do as low as possible while keeping the fundamental requirements of the program we hope it will be as easy as possible to learn.&nbsp;<br/><br/>As these are mockups of the actual GUI we have omitted as much graphical design as we, and just keep to the fundamental parts we require from the GUI.
 
 
The mockups can be found&nbsp;[https://github.com/joakikr/inf5750/tree/master/Modelimages/MockPages https://github.com/joakikr/inf5750/tree/master/Modelimages/MockPages]
 
  
 
== Models (Not valid) ==
 
== Models (Not valid) ==
Line 204: Line 207:
  
 
UML: [http://folk.uio.no/sigurhjs/INF5750UML.pdf http://folk.uio.no/sigurhjs/INF5750UML.pdf]
 
UML: [http://folk.uio.no/sigurhjs/INF5750UML.pdf http://folk.uio.no/sigurhjs/INF5750UML.pdf]
 
=  =
 
  
 
= <span style="font-size:large">Suggested Improvements to Further Work</span> =
 
= <span style="font-size:large">Suggested Improvements to Further Work</span> =

Revision as of 16:02, 30 November 2014

List of Group Members:

  • Joakim Kristiansen
  • Vivek Kaul
  • Sigurhjörtur Snorrason
  • Farrukh Wahab Manzoor

Summary of requirement

VJFS_Admin:

  • Create courses, quizes and questions.
  • Add attendants and mentors to course.
  • Support both multiple choice and text questions.

VJFS_User:

  • Take a quiz for course enrolled in.
  • See finished courses and quizes.
  • See pending quizes.

VJFS_Mentor:

  • Correct answered quizes.
  • Give feedback in form of approved/not approved.


Architecture

List of technologies and frameworks we will use:

  • JavaScript (jQuery, AJAX, JSON)
  • CSS
  • HTML5
  • Bootstrap (summernote, typeahead)

Time schedule

Milestone 1: 1st November

Document features and architecture on Wiki

Show understanding of DHIS2 web apps

Document flowchart, UML and ORM models and GUI outlines.

Create work schedule and step-by-step goals of the probject.

Milestone 2: 15th November

First bare-bone version - static HTML

Uploadable as DHIS2 web app

Create a sample GUI with mock classes

Milestone 3: 30th November

Finished, if applicable also with mobile app.

Final delivery: 8th December

Create at least 2 fully dynamic applications for quiz taking.

Adapt so it works with DHIS.

Create mobile support

Presentation: 9th December

Finalize wiki.

Create a work history on steps achieved.

How you are dividing tasks within the group

  • All:

    - Brainstorming.
    - Designing and Prototyping of Apps.
  • Joakim Kristiansen:

    - Wiki.
    - Implemented VJFS_Admin App.
    - Designed JSON format. 
  • Vivek Kaul:

    - Mockups and ORM modell.
    - Implemented VJFS_User App.
  • Sigurhjörtur Snorrason:

    - Wiki.
    - Flowcharts.
    - Implemented VJFS_Mentor App
  • Farrukh Wahab Manzoor:

    - Mockups and ORM modell.
    - BloodHound & Summernote.
    - Project Presentation

Screen Flow and Design Skeleton

Flow of the creation of new courses, quizes and questions.

pD1epn8.png

Flow of the course and quiz taking application.

UewKaz0.png

The mockup of the GUI

By creating basic design of what we want our GUI to ressemble we have created a clear outline for us to work on. This means we can focus more on the functionality of the program and not spend to much time getting ideas for the acutal look of the program. We also aimed for a simplistic look to our GUI. One of the reasons being that this should be useable by anyone, even if it is the first minute of working with DHIS. By keeping the amount of buttons and things you can do as low as possible while keeping the fundamental requirements of the program we hope it will be as easy as possible to learn. 

As these are mockups of the actual GUI we have omitted as much graphical design as we, and just keep to the fundamental parts we require from the GUI.

The mockups can be found https://github.com/joakikr/inf5750/tree/master/Modelimages/MockPages


How Information Is Stored

For the three apps the information about courses, quizes, questions and users answers is stored as JSON objects within DHIS own resource,  /api/systemSettings.

VJFS_Admin:

There are three systemSettings this app will create/modify - VJFS_courses, VJFS_quizes and VJFS_questions.

  • VJFS_courses can be found from the URL /api/systemSettings/VJFS_courses and its JSON object will have the following notation.
    Each course is an element in the array courses and has the following properties:

    courseID : An unique ID that represents the course. (required)
    courseTitle: The title for the course. (required)
    courseDescription: The description of the course.
    courseAttendants: The attendants for the course, this is a subset of the users of DHIS system.
    courseMentors: The mentors for the course, this is a subset of the users of DHIS system

    An example JSON object:
{
courses: [
 {
 courseID: 1416663811386,
 courseTitle: "Course 1",
 courseDescription: ""<p>This is course 1.</p>"",
 courseAttendants: [
 {
 attendantUsername: "toure",
 attendantName: "Yaya Toure",
 attendantID: "yI9qQfuM7Xd"
 }
 ],
 courseMentors: [ ]
 },
 {
 courseID: 1416663826881,
 courseTitle: "Course 2",
 courseDescription: ""<p>This is course 2.</p>"",
 courseAttendants: [ ],
 courseMentors: [ ]
 }
]
}
  • VJFS_quizes can be found from the URL /api/systemSettings/VJFS_quizes and its JSON object will have the following notation.
    Each quiz is an element in the array quizes and has the following properties:

    quizID: An unique ID that represents the quiz. (required)
    courseID: The ID of the course this quiz belongs to. (required)
    quizTitle: The title for the quiz. (required)
    quizLevel: The level of this quiz. If a quiz in a course has level x, then all quizes in that course with level lower than x must be taken first. (required)

    An example JSON object:
{
 quizes:[{
 quizID: 1416665405980,
 courseID: "1416663811386",
 quizTitle: "Quiz 1",
 quizLevel: "1"
 },{
 quizID: 1416665421301,
 courseID: "1416663811386",
 quizTitle: "Quiz 2",
 quizLevel: "2"
 } 
 ]
}
  • VJFS_questions can be found from the URL /api/systemSettings/VJFS_questions and its JSON object will have the following notation.
    Each question is an element in the array questions and has the following properties:

    questionID: An unique ID that represents the question. (required)
    quizID: The ID of the quiz ths question belongs to. (required)
    questionType: The type of the question - it's either "text" for text question or "multiple" for a multiplechoice question. (required)
    questionQuestion: The question for the question. (required)
    questionAnswer: The answer to the question. (required for "text" questions)
    questionAlternatives: The alternatives with a boolean of whether that alternative is correct or not. (required for "multiple" questions)

    An example JSON object:
{
 questions: [
 {
 questionID: 1416665924422,
 quizID: "1416665405980",
 questionTitle: "Question 1",
 questionType: "text",
 questionQuestion: "Q",
 questionAnswer: "A"
 },
 {
 questionID: 1416665944701,
 quizID: "1416665405980",
 questionTitle: "Question 2",
 questionType: "multiple",
 questionQuestion: "Q",
 questionAlternatives: [
 {
 alternativeChecked: true,
 alternativeValue: "A1"
 },
 {
 alternativeChecked: false,
 alternativeValue: "A2"
 }
 ]
 }
 ]
}

VJFS_User:

For users of the the quiz app there will be created four new field on the systemSettings resource per user.
These fields will have the following pattern URL: /api/systemSettings/VJFS_<username>_<courses | quizes | questions>.

  • VJFS_username_courses can be found from the URL /api/systemSettings/VJFS_username_courses and will have the following notation:
    Each course is an element in the array courses and will only have one property:

    courseID: The ID of a course this user has passed. (required)
  • VJFS_username_quizes can be found from the URL /api/systemSettings/VJFS_username_quizes and will have the following notation:
    Each quiz is an element in the array quizes and will only have one property:

    quizID: The ID of a quiz this users has passed. (required)
  • VJFS_username_questions can be found from the URL /api/systemSettings/VJFS_username_questions and will have the following notation:
    Each question is an element in the array questions and will have the following properties:

    questionID: The ID of the question this answer belongs to. (required)
    quizID: The ID of the quiz the question belonged to. (required)
    questionAnswer: The answer provided by the user for this question. (required for "text" questions)
    questionAlternatives: The alternatives with a boolean of the users answer on that alternative. (required for "multiple" questions)
    corrected: Holds the value of whether this answer has been corrected or not.


VJFS_Mentor:

The mentor app will not itself store new data, but rather modify existing data saved in URL: /api/systemSettings/VJFS_<username>_<courses | quizes | questions>.


Models (Not valid)

To create a clear and structured setup for working on the task we have created a UML for our Java and a ORM for our databases. By doing this we have a clear idea on what we want from both the Java code and Hibernate. This will make dividing the tasks between us easier.

ORM : http://folk.uio.no/sigurhjs/ORM.pdf

UML: http://folk.uio.no/sigurhjs/INF5750UML.pdf

Suggested Improvements to Further Work

  • Create statistics for courses.
  • Create mobile phone support.
  • Improve GUI.
  • Improve stability.
  • Switch out JSON for own database for better performance and security.

Link to repository

Link to downloadable .zip files