Search in sources :

Example 36 with FeedbackQuestionAttributes

use of teammates.common.datatransfer.attributes.FeedbackQuestionAttributes in project teammates by TEAMMATES.

the class FeedbackSessionResultsBundle method getResponsesSortedByGiverQuestionRecipient.

/**
 * Returns responses as a {@code Map<giverName, Map<question, List<response>>>}
 * Where the responses are sorted in the order of giver, question, recipient.
 * @return responses sorted by Giver > Question > Recipient
 */
public Map<String, Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>>> getResponsesSortedByGiverQuestionRecipient(boolean sortByTeam) {
    Map<String, Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>>> sortedMap = new LinkedHashMap<>();
    if (sortByTeam) {
        responses.sort(compareByTeamGiverQuestionTeamRecipient);
    } else {
        responses.sort(compareByGiverQuestionTeamRecipient);
    }
    for (FeedbackResponseAttributes response : responses) {
        String giverEmail = response.giver;
        Map<FeedbackQuestionAttributes, List<FeedbackResponseAttributes>> responsesFromOneGiver = sortedMap.computeIfAbsent(giverEmail, key -> new LinkedHashMap<>());
        FeedbackQuestionAttributes question = questions.get(response.feedbackQuestionId);
        responsesFromOneGiver.computeIfAbsent(question, key -> new ArrayList<>()).add(response);
    }
    return sortedMap;
}
Also used : FeedbackQuestionAttributes(teammates.common.datatransfer.attributes.FeedbackQuestionAttributes) InstructorAttributes(teammates.common.datatransfer.attributes.InstructorAttributes) Const(teammates.common.util.Const) Set(java.util.Set) SanitizationHelper(teammates.common.util.SanitizationHelper) HashMap(java.util.HashMap) StringHelper(teammates.common.util.StringHelper) StudentAttributes(teammates.common.datatransfer.attributes.StudentAttributes) ZoneId(java.time.ZoneId) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) List(java.util.List) FeedbackSessionAttributes(teammates.common.datatransfer.attributes.FeedbackSessionAttributes) FeedbackResponseCommentAttributes(teammates.common.datatransfer.attributes.FeedbackResponseCommentAttributes) Map(java.util.Map) Element(org.jsoup.nodes.Element) Text(com.google.appengine.api.datastore.Text) Jsoup(org.jsoup.Jsoup) Elements(org.jsoup.select.Elements) FeedbackResponseAttributes(teammates.common.datatransfer.attributes.FeedbackResponseAttributes) Comparator(java.util.Comparator) Logger(teammates.common.util.Logger) FeedbackResponseAttributes(teammates.common.datatransfer.attributes.FeedbackResponseAttributes) ArrayList(java.util.ArrayList) FeedbackQuestionAttributes(teammates.common.datatransfer.attributes.FeedbackQuestionAttributes) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap)

Example 37 with FeedbackQuestionAttributes

use of teammates.common.datatransfer.attributes.FeedbackQuestionAttributes in project teammates by TEAMMATES.

the class FeedbackSessionResultsBundle method isFeedbackParticipantVisible.

/**
 * Checks if the giver/recipient for a response is visible/hidden from the current user.
 */
public boolean isFeedbackParticipantVisible(boolean isGiver, FeedbackResponseAttributes response) {
    FeedbackQuestionAttributes question = questions.get(response.feedbackQuestionId);
    FeedbackParticipantType participantType;
    String responseId = response.getId();
    boolean isVisible;
    if (isGiver) {
        isVisible = visibilityTable.get(responseId)[Const.VISIBILITY_TABLE_GIVER];
        participantType = question.giverType;
    } else {
        isVisible = visibilityTable.get(responseId)[Const.VISIBILITY_TABLE_RECIPIENT];
        participantType = question.recipientType;
    }
    boolean isTypeNone = participantType == FeedbackParticipantType.NONE;
    return isVisible || isTypeNone;
}
Also used : FeedbackQuestionAttributes(teammates.common.datatransfer.attributes.FeedbackQuestionAttributes)

Example 38 with FeedbackQuestionAttributes

use of teammates.common.datatransfer.attributes.FeedbackQuestionAttributes 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;
}
Also used : FeedbackResponseAttributes(teammates.common.datatransfer.attributes.FeedbackResponseAttributes) FeedbackQuestionAttributes(teammates.common.datatransfer.attributes.FeedbackQuestionAttributes) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap)

Example 39 with FeedbackQuestionAttributes

use of teammates.common.datatransfer.attributes.FeedbackQuestionAttributes 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;
}
Also used : FeedbackResponseAttributes(teammates.common.datatransfer.attributes.FeedbackResponseAttributes) ArrayList(java.util.ArrayList) FeedbackQuestionAttributes(teammates.common.datatransfer.attributes.FeedbackQuestionAttributes) ArrayList(java.util.ArrayList) List(java.util.List) LinkedHashMap(java.util.LinkedHashMap)

Example 40 with FeedbackQuestionAttributes

use of teammates.common.datatransfer.attributes.FeedbackQuestionAttributes 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;
}
Also used : FeedbackQuestionAttributes(teammates.common.datatransfer.attributes.FeedbackQuestionAttributes) InstructorAttributes(teammates.common.datatransfer.attributes.InstructorAttributes) Const(teammates.common.util.Const) Set(java.util.Set) SanitizationHelper(teammates.common.util.SanitizationHelper) HashMap(java.util.HashMap) StringHelper(teammates.common.util.StringHelper) StudentAttributes(teammates.common.datatransfer.attributes.StudentAttributes) ZoneId(java.time.ZoneId) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) List(java.util.List) FeedbackSessionAttributes(teammates.common.datatransfer.attributes.FeedbackSessionAttributes) FeedbackResponseCommentAttributes(teammates.common.datatransfer.attributes.FeedbackResponseCommentAttributes) Map(java.util.Map) Element(org.jsoup.nodes.Element) Text(com.google.appengine.api.datastore.Text) Jsoup(org.jsoup.Jsoup) Elements(org.jsoup.select.Elements) FeedbackResponseAttributes(teammates.common.datatransfer.attributes.FeedbackResponseAttributes) Comparator(java.util.Comparator) Logger(teammates.common.util.Logger) FeedbackResponseAttributes(teammates.common.datatransfer.attributes.FeedbackResponseAttributes) ArrayList(java.util.ArrayList) FeedbackQuestionAttributes(teammates.common.datatransfer.attributes.FeedbackQuestionAttributes) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap)

Aggregations

FeedbackQuestionAttributes (teammates.common.datatransfer.attributes.FeedbackQuestionAttributes)154 FeedbackResponseAttributes (teammates.common.datatransfer.attributes.FeedbackResponseAttributes)64 InstructorAttributes (teammates.common.datatransfer.attributes.InstructorAttributes)48 ArrayList (java.util.ArrayList)47 FeedbackSessionAttributes (teammates.common.datatransfer.attributes.FeedbackSessionAttributes)38 Test (org.testng.annotations.Test)35 FeedbackResponsesDb (teammates.storage.api.FeedbackResponsesDb)25 List (java.util.List)23 StudentAttributes (teammates.common.datatransfer.attributes.StudentAttributes)23 FeedbackQuestionsDb (teammates.storage.api.FeedbackQuestionsDb)19 EntityDoesNotExistException (teammates.common.exception.EntityDoesNotExistException)18 HashMap (java.util.HashMap)17 RedirectResult (teammates.ui.controller.RedirectResult)17 HashSet (java.util.HashSet)12 FeedbackResponseCommentAttributes (teammates.common.datatransfer.attributes.FeedbackResponseCommentAttributes)12 Text (com.google.appengine.api.datastore.Text)11 Map (java.util.Map)10 FeedbackQuestionDetails (teammates.common.datatransfer.questions.FeedbackQuestionDetails)10 LinkedHashMap (java.util.LinkedHashMap)9 DataBundle (teammates.common.datatransfer.DataBundle)9