FormViewModel.java
package edu.rit.coopeval.viewmodel.form;
import edu.rit.coopeval.model.Form;
import edu.rit.coopeval.model.FormQuestion;
import edu.rit.coopeval.model.QuestionGroup;
import java.util.ArrayList;
import java.util.List;
/**
* Created by mhickson on 3/5/15.
*/
public class FormViewModel {
private Long formId;
private String name;
private List<FormQuestionGroupViewModel> questionGroups;
public FormViewModel(){}
public FormViewModel(Form formEntity){
this.formId=formEntity.getFormId();
this.name=formEntity.getName();
this.questionGroups=createFormQuestionGroupArray(formEntity);
}
public List<FormQuestionGroupViewModel> getQuestionGroups() {
return questionGroups;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getFormId() {
return formId;
}
public void setFormId(Long formId) {
this.formId = formId;
}
public void setQuestionGroups(List<FormQuestionGroupViewModel> questionGroups) {
this.questionGroups = questionGroups;
}
/**
* Parse through the database, and retrieve the appropriate questions and question groups.
*
* @param formEntity
* @return
*/
public List<FormQuestionGroupViewModel> createFormQuestionGroupArray(Form formEntity) {
List<FormQuestionGroupViewModel> questionGroups = new ArrayList<FormQuestionGroupViewModel>();
List<Long> addedQuestionGroupIds = new ArrayList<>();
Long currentQuestionGroupId = null;
int groupIndex = 0;
for(FormQuestion formQuestion: formEntity.getFormQuestionsByFormId()){
QuestionGroup currentQuestionGroup = formQuestion.getQuestionGroupByQuestionQuestionId();
System.out.println("I am here!" + currentQuestionGroup.getQuestionGroupId());
if(!addedQuestionGroupIds.contains(currentQuestionGroup.getQuestionGroupId())){
FormQuestionGroupViewModel currentQuestionGroupVM = new FormQuestionGroupViewModel(currentQuestionGroup, groupIndex);
questionGroups.add(currentQuestionGroupVM);
groupIndex++;
currentQuestionGroupVM.addQuestion(new FormQuestionViewModel(formQuestion,currentQuestionGroupVM.getQuestionGroupOrder()));
addedQuestionGroupIds.add(currentQuestionGroupVM.getQuestionGroupId());
}
else{
for (int i = 0; i < questionGroups.size(); i++ ) {
if (questionGroups.get(i).getQuestionGroupId() == currentQuestionGroup.getQuestionGroupId()) {
questionGroups.get(i).addQuestion(new FormQuestionViewModel(formQuestion, questionGroups.get(i).getQuestionGroupOrder()));
}
}
}
}
return questionGroups;
}
}