return compareIgnoreCase(str1, str2, true);
/** * Returns the priority for scan based filtering. Multivalue column evaluation is costly, so * reorder such that multivalue columns are evaluated after single value columns. * * TODO: additional cost based prioritization to be added * * @param scanBasedFilterOperator the filter operator to prioritize * @param debugOptions debug-options to enable/disable the optimization * @return the priority to be associated with the filter */ private static int getScanBasedFilterPriority(ScanBasedFilterOperator scanBasedFilterOperator, int basePriority, @Nullable Map<String, String> debugOptions) { boolean disabled = false; if (debugOptions != null && StringUtils.compareIgnoreCase(debugOptions.get(USE_SCAN_REORDER_OPTIMIZATION), "false") == 0) { disabled = true; } DataSourceMetadata metadata = scanBasedFilterOperator.getDataSourceMetadata(); if (disabled || metadata == null || metadata.isSingleValue()) { return basePriority; } // lower priority for multivalue return basePriority + 1; } }
@Test public void testCompareIgnoreCase_StringString() { assertTrue(StringUtils.compareIgnoreCase(null, null) == 0); assertTrue(StringUtils.compareIgnoreCase(null, "a") < 0); assertTrue(StringUtils.compareIgnoreCase("a", null) > 0); assertTrue(StringUtils.compareIgnoreCase("abc", "abc") == 0); assertTrue(StringUtils.compareIgnoreCase("abc", "ABC") == 0); assertTrue(StringUtils.compareIgnoreCase("a", "b") < 0); assertTrue(StringUtils.compareIgnoreCase("b", "a") > 0); assertTrue(StringUtils.compareIgnoreCase("a", "B") < 0); assertTrue(StringUtils.compareIgnoreCase("A", "b") < 0); assertTrue(StringUtils.compareIgnoreCase("abc", "ABD") < 0); assertTrue(StringUtils.compareIgnoreCase("ab", "ABC") < 0); assertTrue(StringUtils.compareIgnoreCase("ab", "AB ") < 0); assertTrue(StringUtils.compareIgnoreCase("abc", "AB ") > 0); }
@Test public void testCompareIgnoreCase_StringStringBoolean() { assertTrue(StringUtils.compareIgnoreCase(null, null, false) == 0); assertTrue(StringUtils.compareIgnoreCase(null, "a", true) < 0); assertTrue(StringUtils.compareIgnoreCase(null, "a", false) > 0); assertTrue(StringUtils.compareIgnoreCase("a", null, true) > 0); assertTrue(StringUtils.compareIgnoreCase("a", null, false) < 0); assertTrue(StringUtils.compareIgnoreCase("abc", "abc", false) == 0); assertTrue(StringUtils.compareIgnoreCase("abc", "ABC", false) == 0); assertTrue(StringUtils.compareIgnoreCase("a", "b", false) < 0); assertTrue(StringUtils.compareIgnoreCase("b", "a", false) > 0); assertTrue(StringUtils.compareIgnoreCase("a", "B", false) < 0); assertTrue(StringUtils.compareIgnoreCase("A", "b", false) < 0); assertTrue(StringUtils.compareIgnoreCase("abc", "ABD", false) < 0); assertTrue(StringUtils.compareIgnoreCase("ab", "ABC", false) < 0); assertTrue(StringUtils.compareIgnoreCase("ab", "AB ", false) < 0); assertTrue(StringUtils.compareIgnoreCase("abc", "AB ", false) > 0); }
return compareIgnoreCase(str1, str2, true);
return compareIgnoreCase(str1, str2, true);
return compareIgnoreCase(str1, str2, true);
@Override public int compareTo(WorkflowDefinition workflowDefinition) { if (workflowDefinition == null) { throw new NullPointerException("WorkflowDefinition for comparison can't be null"); } // nullsafe comparison where null is lesser than non-null // workflows with null title probably aren't for displaying anyway return StringUtils.compareIgnoreCase(this.getTitle(), workflowDefinition.getTitle()); }
@Override public int compare(Topic t1, Topic t2) { if (t1 == null && t2 == null) return 0; else if (t1 == null) return 1; else if (t2 == null) return -1; return StringUtils.compareIgnoreCase(t1.getName(), t2.getName()); }
@Override public int compare(TopicMapReference r1, TopicMapReference r2) { return StringUtils.compareIgnoreCase(r1.getName(), r2.getName()); } };
/** * INTERNAL: Compares two TopicMapReferenceIFs. */ @Override public int compare(TopicMapReferenceIF tmr1, TopicMapReferenceIF tmr2) { String title1 = tmr1.getTitle(); String title2 = tmr2.getTitle(); return StringUtils.compareIgnoreCase(title1, title2); }
@Override public int compare(Object o1, Object o2) { TopicNameIF n1 = (TopicNameIF)o1; TopicNameIF n2 = (TopicNameIF)o2; return StringUtils.compareIgnoreCase(n1.getValue(), n2.getValue()); }
@Override public int compare(Object o1, Object o2) { LocatorIF i1 = (LocatorIF)o1; LocatorIF i2 = (LocatorIF)o2; return StringUtils.compareIgnoreCase(i1.getAddress(), i2.getAddress()); }
@Override public int compare(Object o1, Object o2) { OccurrenceIF occ1 = (OccurrenceIF)o1; OccurrenceIF occ2 = (OccurrenceIF)o2; return StringUtils.compareIgnoreCase(occ1.getValue(), occ2.getValue()); }
private int _compare(Object o1, Object o2) { // NOTE: helper method that compares object in much the same way as if (o1 instanceof String && o2 instanceof String) { // sort string case insensitively return StringUtils.compareIgnoreCase((String)o1, (String)o2); } else if (o1 instanceof Comparable && o2 instanceof Comparable) { // compare comparable objects return ((Comparable)o1).compareTo((Comparable)o2); } else if (o1 instanceof TopicIF && o2 instanceof TopicIF) { // compare topics TopicIF t1 = (TopicIF)o1; TopicIF t2 = (TopicIF)o2; String s1 = sort.toString(t1); String s2 = sort.toString(t2); return StringUtils.compareIgnoreCase(s1, s2); } //! else if (o1 instanceof TMObjectIF && o2 instanceof TMObjectIF) { //! // compare tmobjects //! TMObjectIF t1 = (TMObjectIF)o1; //! TMObjectIF t2 = (TMObjectIF)o2; //! return ObjectUtils.compareIgnoreCase(t1.getObjectId(), t2.getObjectId()); //! } throw new OntopiaRuntimeException("Unsupported sort keys: " + o1 + " and " + o2); }