ItemComparator implements Comparator, Serializable { @Override public int compare(Object first, Object second) { if ((!(first instanceof Item)) || (!(second instanceof Item))) { throw new IllegalArgumentException("Arguments must be Items"); } String firstValue = getValue((Item) first); String secondValue = getValue((Item) second); if (firstValue == null && secondValue == null) { return 0; } if (firstValue == null) { return -1; } if (secondValue == null) { return 1; } return firstValue.compareTo(secondValue); } ItemComparator(String element, String qualifier, String language,
                          boolean max); @Override int compare(Object first, Object second); @Override boolean equals(Object obj); @Override int hashCode();  }
@Test public void testCompare() throws SQLException { int result; ItemComparator ic; ic = new ItemComparator("test", "one", Item.ANY, true); result = ic.compare(one, two); assertTrue("testCompare 0", result == 0); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); result = ic.compare(one, two); assertTrue("testCompare 1", result >= 1); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "1"); result = ic.compare(one, two); assertTrue("testCompare 2", result <= -1); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "2"); result = ic.compare(one, two); assertTrue("testCompare 3", result <= -1); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "1"); result = ic.compare(one, two); assertTrue("testCompare 4", result == 0); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "2"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "1"); result = ic.compare(one, two); assertTrue("testCompare 5", result >= 1); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "0"); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "2"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "3"); result = ic.compare(one, two); assertTrue("testCompare 3", result <= -1); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "0"); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "-1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "1"); result = ic.compare(one, two); assertTrue("testCompare 4", result == 0); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, true); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "2"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "-1"); result = ic.compare(one, two); assertTrue("testCompare 5", result >= 1); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, false); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "2"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "2"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "3"); result = ic.compare(one, two); assertTrue("testCompare 3", result <= -1); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, false); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "2"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "5"); result = ic.compare(one, two); assertTrue("testCompare 4", result == 0); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); ic = new ItemComparator("test", "one", Item.ANY, false); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "2"); itemService.addMetadata(context, one, "dc", "test", "one", Item.ANY, "3"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "1"); itemService.addMetadata(context, two, "dc", "test", "one", Item.ANY, "4"); result = ic.compare(one, two); assertTrue("testCompare 5", result >= 1); itemService.clearMetadata(context, one, "dc", "test", "one", Item.ANY); itemService.clearMetadata(context, two, "dc", "test", "one", Item.ANY); }