/** ===================== Private main check methods ===================== */ private void checkForUndefinedQuestions() { List<Question> qlQuestions = this.qlFormData.getAllQuestions(); List<String> qlQuestionIdNames = this.getQlQuestionIdNames(qlQuestions); List<QLSQuestion> qlsQuestions = this.qlsStyleSheetData.getQuestions(); for (QLSQuestion question : qlsQuestions) { if (!qlQuestionIdNames.contains(question.getIdName())) { this.astIssueHandler.registerNewError( ASTQlsNodeIssueType.QLS_ERROR.UNDEFINED, question, "Attempted to define style for an undefined question " + question.getIdName() + "."); } } }
private void checkForMultipleQuestionPlacements() { List<QLSQuestion> qlsQuestions = this.qlsStyleSheetData.getQuestions(); List<String> qlsQuestionIdNames = new ArrayList<>(); for (QLSQuestion question : qlsQuestions) { if (qlsQuestionIdNames.contains(question.getIdName())) { this.astIssueHandler.registerNewError( ASTQlsNodeIssueType.QLS_ERROR.DUPLICATE, question, "QLS Question " + question.getIdName() + " already defined (duplicate)."); } else { qlsQuestionIdNames.add(question.getIdName()); } } }
private List<String> getQlsQuestionIdNames(List<QLSQuestion> _qlsQuestions) { List<String> qlsQuestionIdNames = new ArrayList<>(); for (QLSQuestion question : _qlsQuestions) { qlsQuestionIdNames.add(question.getIdName()); } return qlsQuestionIdNames; }
private void checkWidgetTypeCompatibilityInQuestion() { List<QLSQuestion> qlsQuestions = this.qlsStyleSheetData.getQuestions(); HashMap<String, Type> questionTypes = this.qlFormData.getallQuestionTypes(); for (QLSQuestion question : qlsQuestions) { AbstractQLSWidget questionWidget = question.getWidget(); List<Type> supportedQuestionTypes = questionWidget.getSupportedQuestionTypes(); Type questionType = questionTypes.get(question.getIdName()); // if questionType == null that means question is not // contained in the qlForm, is reported as QLS_ERROR.UNDEFINED if (questionType != null && !supportedQuestionTypes.contains(questionType)) { this.astIssueHandler.registerNewError( ASTQlsNodeIssueType.QLS_ERROR.WRONG_WIDGET_TYPE, question, "Wrong widget " + questionWidget + " for question type " + questionType + "."); } } }