/** * 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.organisation.staff.domain.Staff; import org.mifosplatform.portfolio.client.domain.Client; import org.mifosplatform.spm.data.ScorecardData; import org.mifosplatform.spm.data.ScorecardValue; import org.mifosplatform.spm.domain.Question; import org.mifosplatform.spm.domain.Response; import org.mifosplatform.spm.domain.Scorecard; import org.mifosplatform.spm.domain.Survey; import org.mifosplatform.useradministration.domain.AppUser; import java.util.*; public class ScorecardMapper { private ScorecardMapper() { super(); } public static List<ScorecardData> map(final List<Scorecard> scorecards) { final Map<Date, ScorecardData> scorecardDataMap = new HashMap<>(); ScorecardData scorecardData = null; if (scorecards != null && scorecards.isEmpty()) { for (Scorecard scorecard : scorecards) { if ((scorecardData = scorecardDataMap.get(scorecard.getCreatedOn())) == null) { scorecardData = new ScorecardData(); scorecardDataMap.put(scorecard.getCreatedOn(), scorecardData); scorecardData.setUserId(scorecard.getAppUser().getId()); scorecardData.setClientId(scorecard.getClient().getId()); scorecardData.setCreatedOn(scorecard.getCreatedOn()); scorecardData.setScorecardValues(new ArrayList<ScorecardValue>()); } scorecardData.getScorecardValues().add(new ScorecardValue(scorecard.getQuestion().getId(), scorecard.getResponse().getId(), scorecard.getValue())); } return new ArrayList<>(scorecardDataMap.values()); } return Collections.EMPTY_LIST; } public static List<Scorecard> map(final ScorecardData scorecardData, final Survey survey, final AppUser appUser, final Client client) { final List<Scorecard> scorecards = new ArrayList<>(); final List<ScorecardValue> scorecardValues = scorecardData.getScorecardValues(); if (scorecardValues != null) { for (ScorecardValue scorecardValue : scorecardValues) { final Scorecard scorecard = new Scorecard(); scorecards.add(scorecard); scorecard.setSurvey(survey); ScorecardMapper.setQuestionAndResponse(scorecardValue, scorecard, survey); scorecard.setAppUser(appUser); scorecard.setClient(client); scorecard.setCreatedOn(scorecardData.getCreatedOn()); scorecard.setValue(scorecardValue.getValue()); } } return scorecards; } private static void setQuestionAndResponse(final ScorecardValue scorecardValue, final Scorecard scorecard, final Survey survey) { final List<Question> questions = survey.getQuestions(); for (final Question question : questions) { if (question.getId().equals(scorecardValue.getQuestionId())) { scorecard.setQuestion(question); for (final Response response : question.getResponses()) { if (response.getId().equals(scorecardValue.getResponseId())) { scorecard.setResponse(response); break; } } break; } } } }