private String getQuestionnaireLabel(AnswerHeader answerHeader) { String label = null; List<QuestionnaireUsage> usages = answerHeader.getQuestionnaire().getQuestionnaireUsages(); if (CollectionUtils.isNotEmpty(usages) && usages.size() > 1) { Collections.sort((List<QuestionnaireUsage>) usages); } for (QuestionnaireUsage usage : usages) { if (getCoeusModuleCode().equals(usage.getModuleItemCode()) && answerHeader.getModuleSubItemCode().equals(usage.getModuleSubItemCode())) { if ("0".equals(answerHeader.getModuleSubItemCode())) { label = usage.getQuestionnaireLabel(); } else if (CoeusSubModule.PROTOCOL_SUBMISSION.equals(answerHeader.getModuleSubItemCode())) { Map keyValues = new HashMap(); keyValues.put("protocolNumber", answerHeader.getModuleItemKey()); keyValues.put("submissionNumber", answerHeader.getModuleSubItemKey()); List<ProtocolSubmissionBase> submissions = ((List<ProtocolSubmissionBase>) getBusinessObjectService() .findMatchingOrderBy( getProtocolSubmissionBOClassHook(), keyValues, "submissionId", false)); if (submissions.isEmpty()) { // this may happen if it is undo last action label = usage.getQuestionnaireLabel(); } else { keyValues.clear(); keyValues.put("protocolId", submissions.get(0).getProtocolId()); keyValues.put("submissionNumber", answerHeader.getModuleSubItemKey()); ProtocolActionBase protocolAction = ((List<ProtocolActionBase>) getBusinessObjectService() .findMatching(getProtocolActionBOClassHook(), keyValues)) .get(0); label = usage.getQuestionnaireLabel() + " - " + protocolAction.getProtocolActionType().getDescription() + " - " + protocolAction.getActionDateString(); } } else if (CoeusSubModule.AMENDMENT_RENEWAL.equals(answerHeader.getModuleSubItemCode())) { if (answerHeader.getModuleItemKey().contains("A")) { label = usage.getQuestionnaireLabel() + " - Amendment " + answerHeader.getModuleItemKey().substring(10); } else { label = usage.getQuestionnaireLabel() + " - Renewal " + answerHeader.getModuleItemKey().substring(10); } } else if (CoeusSubModule.AMENDMENT.equals(answerHeader.getModuleSubItemCode())) { if (answerHeader.getModuleItemKey().contains("A")) { label = usage.getQuestionnaireLabel() + " - Amendment " + answerHeader.getModuleItemKey().substring(10); } } else if (CoeusSubModule.RENEWAL.equals(answerHeader.getModuleSubItemCode())) { if (answerHeader.getModuleItemKey().contains("R")) { label = usage.getQuestionnaireLabel() + " - Renewal " + answerHeader.getModuleItemKey().substring(10); } } } } return label; }