use of teammates.common.datatransfer.attributes.FeedbackResponseAttributes in project teammates by TEAMMATES.
the class FeedbackSessionResultsBundle method getQuestionResponseMapByRecipientTeam.
/**
* Returns an ordered Map with {@code recipientTeam} name as key
* sorted by recipientTeam > question > recipientName > giverTeam > giverName.
*/
public Map<String, Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>>> getQuestionResponseMapByRecipientTeam() {
LinkedHashMap<String, Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>>> sortedMap = new LinkedHashMap<>();
responses.sort(compareByTeamQuestionRecipientTeamGiver);
for (FeedbackResponseAttributes response : responses) {
String recipientTeam = getTeamNameForEmail(response.recipient);
if (recipientTeam.isEmpty()) {
recipientTeam = getNameForEmail(response.recipient);
}
Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>> responsesForOneRecipient = sortedMap.computeIfAbsent(recipientTeam, key -> new LinkedHashMap<>());
FeedbackQuestionAttributes question = questions.get(response.feedbackQuestionId);
List<FeedbackResponseAttributes> responsesForOneRecipientOneQuestion = responsesForOneRecipient.computeIfAbsent(question, key -> new ArrayList<>());
responsesForOneRecipientOneQuestion.add(response);
}
return sortedMap;
}
use of teammates.common.datatransfer.attributes.FeedbackResponseAttributes in project teammates by TEAMMATES.
the class FeedbackSessionResultsBundle method getQuestionResponseMapSortedByRecipient.
public Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>> getQuestionResponseMapSortedByRecipient() {
if (questions == null || responses == null) {
return null;
}
Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>> sortedMap = new LinkedHashMap<>();
List<FeedbackQuestionAttributes> sortedQuestions = new ArrayList<>(questions.values());
// sorts the questions by its natural ordering, which is by question number
sortedQuestions.sort(null);
for (FeedbackQuestionAttributes question : sortedQuestions) {
sortedMap.put(question, new ArrayList<FeedbackResponseAttributes>());
}
for (FeedbackResponseAttributes response : responses) {
FeedbackQuestionAttributes question = questions.get(response.feedbackQuestionId);
List<FeedbackResponseAttributes> responsesForQuestion = sortedMap.get(question);
responsesForQuestion.add(response);
}
for (List<FeedbackResponseAttributes> responsesForQuestion : sortedMap.values()) {
responsesForQuestion.sort(compareByRecipientNameEmailGiverNameEmail);
}
return sortedMap;
}
use of teammates.common.datatransfer.attributes.FeedbackResponseAttributes in project teammates by TEAMMATES.
the class FeedbackSessionResultsBundle method getResponsesSortedByRecipientQuestionGiver.
/**
* Returns responses as a {@code Map<recipientName, Map<question, List<response>>>}
* Where the responses are sorted in the order of recipient, question, giver.
* @return responses sorted by Recipient > Question > Giver
*/
public Map<String, Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>>> getResponsesSortedByRecipientQuestionGiver(boolean sortByTeam) {
Map<String, Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>>> sortedMap = new LinkedHashMap<>();
if (sortByTeam) {
responses.sort(compareByTeamRecipientQuestionTeamGiver);
} else {
responses.sort(compareByRecipientQuestionTeamGiver);
}
for (FeedbackResponseAttributes response : responses) {
String recipientEmail = response.recipient;
Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>> responsesForOneRecipient = sortedMap.computeIfAbsent(recipientEmail, key -> new LinkedHashMap<>());
FeedbackQuestionAttributes question = questions.get(response.feedbackQuestionId);
responsesForOneRecipient.computeIfAbsent(question, key -> new ArrayList<>()).add(response);
}
return sortedMap;
}
use of teammates.common.datatransfer.attributes.FeedbackResponseAttributes in project teammates by TEAMMATES.
the class FeedbackResponsesLogicTest method testUpdateFeedbackResponsesForChangingTeam_deleteNotLastResponse_sameResponseRate.
private void testUpdateFeedbackResponsesForChangingTeam_deleteNotLastResponse_sameResponseRate() throws Exception {
FeedbackResponseAttributes responseToBeDeleted = getResponseFromDatastore(questionTypeBundle, "response1ForQ1S5C1");
// make sure it's not the last response by the student
assertTrue(1 < numResponsesFromGiverInSession(responseToBeDeleted.giver, responseToBeDeleted.feedbackSessionName, responseToBeDeleted.courseId));
StudentAttributes student = questionTypeBundle.students.get("student1InCourse1");
StudentEnrollDetails enrollmentDetailsToTriggerDeletion = new StudentEnrollDetails(StudentUpdateStatus.MODIFIED, student.course, student.email, student.team, student.team + "tmp", student.section, student.section + "tmp");
int originalResponseRate = getResponseRate(responseToBeDeleted.feedbackSessionName, responseToBeDeleted.courseId);
assertTrue(frLogic.updateFeedbackResponseForChangingTeam(enrollmentDetailsToTriggerDeletion, responseToBeDeleted));
int responseRateAfterDeletion = getResponseRate(responseToBeDeleted.feedbackSessionName, responseToBeDeleted.courseId);
assertEquals(originalResponseRate, responseRateAfterDeletion);
// restore DataStore so other tests are unaffected
restoreStudentFeedbackResponseToDatastore(responseToBeDeleted);
}
use of teammates.common.datatransfer.attributes.FeedbackResponseAttributes in project teammates by TEAMMATES.
the class FeedbackResponsesLogicTest method getResponseFromDatastore.
private FeedbackResponseAttributes getResponseFromDatastore(DataBundle dataBundle, String jsonId) {
FeedbackResponseAttributes response = dataBundle.feedbackResponses.get(jsonId);
String qnId;
try {
int qnNumber = Integer.parseInt(response.feedbackQuestionId);
qnId = fqLogic.getFeedbackQuestion(response.feedbackSessionName, response.courseId, qnNumber).getId();
} catch (NumberFormatException e) {
qnId = response.feedbackQuestionId;
}
return frLogic.getFeedbackResponse(qnId, response.giver, response.recipient);
}
Aggregations