/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.mifosplatform.spm.util;
import org.mifosplatform.spm.data.ComponentData;
import org.mifosplatform.spm.data.QuestionData;
import org.mifosplatform.spm.data.ResponseData;
import org.mifosplatform.spm.data.SurveyData;
import org.mifosplatform.spm.domain.Component;
import org.mifosplatform.spm.domain.Question;
import org.mifosplatform.spm.domain.Response;
import org.mifosplatform.spm.domain.Survey;
import java.util.ArrayList;
import java.util.List;
public class SurveyMapper {
private SurveyMapper() {
super();
}
public static SurveyData map(final Survey survey) {
final SurveyData surveyData = new SurveyData(
survey.getId(), SurveyMapper.mapComponents(survey.getComponents()),
SurveyMapper.mapQuestions(survey.getQuestions()), survey.getKey(), survey.getName(),
survey.getDescription(), survey.getCountryCode(), survey.getValidFrom(), survey.getValidTo()
);
return surveyData;
}
public static Survey map(final SurveyData surveyData) {
final Survey survey = new Survey();
survey.setComponents(SurveyMapper.mapComponentDatas(surveyData.getComponentDatas(), survey));
survey.setQuestions(SurveyMapper.mapQuestionDatas(surveyData.getQuestionDatas(), survey));
survey.setKey(surveyData.getKey());
survey.setName(surveyData.getName());
survey.setDescription(surveyData.getDescription());
survey.setCountryCode(surveyData.getCountryCode());
return survey;
}
private static List<ComponentData> mapComponents(final List<Component> components) {
final List<ComponentData> componentDatas = new ArrayList<>();
if (components != null) {
for (final Component component : components) {
componentDatas.add(new ComponentData(
component.getId(), component.getKey(), component.getText(), component.getDescription(),
component.getSequenceNo()
));
}
}
return componentDatas;
}
private static List<Component> mapComponentDatas(final List<ComponentData> componentDatas, final Survey survey) {
final List<Component> components = new ArrayList<>();
if (componentDatas != null) {
for (final ComponentData componentData : componentDatas) {
final Component component = new Component();
component.setSurvey(survey);
component.setKey(componentData.getKey());
component.setText(componentData.getText());
component.setDescription(componentData.getDescription());
component.setSequenceNo(componentData.getSequenceNo());
components.add(component);
}
}
return components;
}
private static List<QuestionData> mapQuestions(final List<Question> questions) {
final List<QuestionData> questionDatas = new ArrayList<>();
if (questions != null) {
for (final Question question : questions) {
questionDatas.add(new QuestionData(question.getId(),
SurveyMapper.mapResponses(question.getResponses()), question.getComponentKey(), question.getKey(),
question.getText(), question.getDescription(), question.getSequenceNo()
));
}
}
return questionDatas;
}
private static List<Question> mapQuestionDatas(final List<QuestionData> questionDatas, final Survey survey) {
final List<Question> questions = new ArrayList<>();
if (questionDatas != null) {
for (final QuestionData questionData : questionDatas) {
final Question question = new Question();
question.setSurvey(survey);
question.setComponentKey(questionData.getComponentKey());
question.setResponses(SurveyMapper.mapResponseDatas(questionData.getResponseDatas(), question));
question.setKey(questionData.getKey());
question.setText(questionData.getText());
question.setDescription(question.getDescription());
question.setSequenceNo(questionData.getSequenceNo());
questions.add(question);
}
}
return questions;
}
private static List<ResponseData> mapResponses(final List<Response> responses) {
final List<ResponseData> responseDatas = new ArrayList<>();
if (responses != null) {
for (final Response response : responses) {
responseDatas.add(new ResponseData(
response.getId(), response.getText(), response.getValue(), response.getSequenceNo()
));
}
}
return responseDatas;
}
private static List<Response> mapResponseDatas(final List<ResponseData> responseDatas, final Question question) {
final List<Response> responses = new ArrayList<>();
if (responseDatas != null) {
for (final ResponseData responseData : responseDatas) {
final Response response = new Response();
response.setQuestion(question);
response.setText(responseData.getText());
response.setValue(responseData.getValue());
response.setSequenceNo(responseData.getSequenceNo());
responses.add(response);
}
}
return responses;
}
}