733 * of questions and all corresponding questions have the same values. 734 * 735 * @param a first interview 736 * @param b second interview 737 * @return true, iff two interviews are equivalent. 738 */ 739 public static boolean equal(InterviewParameters a, InterviewParameters b) { 740 if (a == b) { 741 return true; 742 } 743 744 if (a.isTemplate() != b.isTemplate()) { 745 return false; 746 } 747 // do ez checks first 748 if (a.getMarkersEnabled() != b.getMarkersEnabled() 749 || a.getMarkersFilterEnabled() != b.getMarkersFilterEnabled()) { 750 return false; 751 } 752 753 Map aQuestions = a.getAllQuestions(); 754 Map bQuestions = b.getAllQuestions(); 755 756 Set keys = new TreeSet(); 757 keys.addAll(aQuestions.keySet()); 758 keys.addAll(bQuestions.keySet()); 759 760 for (Iterator iter = keys.iterator(); iter.hasNext(); ) { 761 String key = (String) (iter.next()); 762 Question aq = (Question) aQuestions.get(key); 763 Question bq = (Question) bQuestions.get(key); 764 if (aq == null || bq == null) { 765 return false; 766 } 767 if (!aq.equals(bq)) { 768 String empty = ""; 769 boolean eq = (aq.getStringValue() == null && 770 empty.equals(bq.getStringValue())) || 771 (empty.equals(aq.getStringValue()) && 772 bq.getStringValue() == null); 773 if(!eq) { 774 /* 775 Hopefully, question reloading is not required anymore, 776 not because questions are equal now, but because | 733 * of questions and all corresponding questions have the same values. 734 * 735 * @param a first interview 736 * @param b second interview 737 * @return true, iff two interviews are equivalent. 738 */ 739 public static boolean equal(InterviewParameters a, InterviewParameters b) { 740 if (a == b) { 741 return true; 742 } 743 744 if (a.isTemplate() != b.isTemplate()) { 745 return false; 746 } 747 // do ez checks first 748 if (a.getMarkersEnabled() != b.getMarkersEnabled() 749 || a.getMarkersFilterEnabled() != b.getMarkersFilterEnabled()) { 750 return false; 751 } 752 753 Map<String, Question> aQuestions = a.getAllQuestions(); 754 Map<String, Question> bQuestions = b.getAllQuestions(); 755 756 Set<String> keys = new TreeSet<>(); 757 keys.addAll(aQuestions.keySet()); 758 keys.addAll(bQuestions.keySet()); 759 760 for (Iterator iter = keys.iterator(); iter.hasNext(); ) { 761 String key = (String) (iter.next()); 762 Question aq = (Question) aQuestions.get(key); 763 Question bq = (Question) bQuestions.get(key); 764 if (aq == null || bq == null) { 765 return false; 766 } 767 if (!aq.equals(bq)) { 768 String empty = ""; 769 boolean eq = (aq.getStringValue() == null && 770 empty.equals(bq.getStringValue())) || 771 (empty.equals(aq.getStringValue()) && 772 bq.getStringValue() == null); 773 if(!eq) { 774 /* 775 Hopefully, question reloading is not required anymore, 776 not because questions are equal now, but because |