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;
    }
}