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 = 0; ItemComparator ic = null; 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); }