@SuppressWarnings("unchecked") private boolean next() throws IOException { boolean hasMoreElements; if ((currLeftIterator == null || !currLeftIterator.hasNext()) && (currRightIterator == null || !currRightIterator.hasNext())) { hasMoreElements = nextGroups(outerJoinType); if (hasMoreElements) { if (outerJoinType != OuterJoinType.LEFT) { currLeftIterator = new ListIteratorWrapper(currLeftSubset.iterator()); } leftReturn = (IN1) currLeftIterator.next(); if (outerJoinType != OuterJoinType.RIGHT) { currRightIterator = new ListIteratorWrapper(currRightSubset.iterator()); } rightReturn = (IN2) currRightIterator.next(); return true; } else { //no more elements return false; } } else if (currLeftIterator.hasNext() && !currRightIterator.hasNext()) { leftReturn = (IN1) currLeftIterator.next(); currRightIterator.reset(); rightReturn = (IN2) currRightIterator.next(); return true; } else { rightReturn = (IN2) currRightIterator.next(); return true; } }
private boolean nextGroups(OuterJoinType outerJoinType) throws IOException { if (outerJoinType == OuterJoinType.FULL) { return nextGroups(); } else if (outerJoinType == OuterJoinType.LEFT) { boolean leftContainsElements = false; while (!leftContainsElements && nextGroups()) { currLeftIterator = new ListIteratorWrapper(currLeftSubset.iterator()); if (currLeftIterator.next() != null) { leftContainsElements = true; } currLeftIterator.reset(); } return leftContainsElements; } else if (outerJoinType == OuterJoinType.RIGHT) { boolean rightContainsElements = false; while (!rightContainsElements && nextGroups()) { currRightIterator = new ListIteratorWrapper(currRightSubset.iterator()); if (currRightIterator.next() != null) { rightContainsElements = true; } currRightIterator.reset(); } return rightContainsElements; } else { throw new IllegalArgumentException("Outer join of type '" + outerJoinType + "' not supported."); } }
public void testReset() { resetEmpty(); OrderedMap ordered = (OrderedMap) map; ((ResettableIterator) (Object) ordered.mapIterator()).reset(); resetFull(); ordered = (OrderedMap) map; List list = new ArrayList(ordered.keySet()); ResettableIterator it = (ResettableIterator) (Object) ordered.mapIterator(); assertSame(list.get(0), it.next()); assertSame(list.get(1), it.next()); it.reset(); assertSame(list.get(0), it.next()); }
public void testReset() { resetEmpty(); OrderedMap ordered = (OrderedMap) map; ((ResettableIterator) (Object) ordered.mapIterator()).reset(); resetFull(); ordered = (OrderedMap) map; List list = new ArrayList(ordered.keySet()); ResettableIterator it = (ResettableIterator) (Object) ordered.mapIterator(); assertSame(list.get(0), it.next()); assertSame(list.get(1), it.next()); it.reset(); assertSame(list.get(0), it.next()); }
public void testArrayIterator() { Object[] objArray = {"a", "b", "c"}; ResettableIterator iterator = IteratorUtils.arrayIterator(objArray); assertTrue(iterator.next().equals("a")); assertTrue(iterator.next().equals("b")); iterator.reset(); assertTrue(iterator.next().equals("a")); assertTrue(iterator.next().equals("b")); assertTrue(iterator.next().equals("c")); assertTrue(iterator.next().equals(new Integer(0))); assertTrue(iterator.next().equals(new Integer(1))); iterator.reset(); assertTrue(iterator.next().equals(new Integer(0))); assertTrue(iterator.next().equals(new Integer(1))); assertTrue(iterator.next().equals(new Integer(2)));
public void testSingletonIteratorRemove() { ResettableIterator iter = new SingletonIterator("xyzzy"); assertTrue(iter.hasNext()); assertEquals("xyzzy",iter.next()); iter.remove(); iter.reset(); assertTrue(! iter.hasNext()); }
public void testReset() { ResettableIterator it = (ResettableIterator) makeObject(); assertEquals(true, it.hasNext()); assertEquals(testValue, it.next()); assertEquals(false, it.hasNext()); it.reset(); assertEquals(true, it.hasNext()); assertEquals(testValue, it.next()); assertEquals(false, it.hasNext()); it.reset(); it.reset(); assertEquals(true, it.hasNext()); }
public void testReset() { ResettableIterator it = (ResettableIterator) makeObject(); assertEquals(true, it.hasNext()); assertEquals(testValue, it.next()); assertEquals(false, it.hasNext()); it.reset(); assertEquals(true, it.hasNext()); assertEquals(testValue, it.next()); assertEquals(false, it.hasNext()); it.reset(); it.reset(); assertEquals(true, it.hasNext()); }
/** * Test empty iterator */ public void testEmptyIterator() { assertSame(EmptyIterator.INSTANCE, IteratorUtils.EMPTY_ITERATOR); assertSame(EmptyIterator.RESETTABLE_INSTANCE, IteratorUtils.EMPTY_ITERATOR); assertEquals(true, IteratorUtils.EMPTY_ITERATOR instanceof Iterator); assertEquals(true, IteratorUtils.EMPTY_ITERATOR instanceof ResettableIterator); assertEquals(false, IteratorUtils.EMPTY_ITERATOR instanceof OrderedIterator); assertEquals(false, (Object) IteratorUtils.EMPTY_ITERATOR instanceof ListIterator); assertEquals(false, (Object) IteratorUtils.EMPTY_ITERATOR instanceof MapIterator); assertEquals(false, IteratorUtils.EMPTY_ITERATOR.hasNext()); IteratorUtils.EMPTY_ITERATOR.reset(); assertSame(IteratorUtils.EMPTY_ITERATOR, IteratorUtils.EMPTY_ITERATOR); assertSame(IteratorUtils.EMPTY_ITERATOR, IteratorUtils.emptyIterator()); try { IteratorUtils.EMPTY_ITERATOR.next(); fail(); } catch (NoSuchElementException ex) {} try { IteratorUtils.EMPTY_ITERATOR.remove(); fail(); } catch (IllegalStateException ex) {} }
public Object next() { return IteratorUtils.EMPTY_ITERATOR.next(); } public void remove() {
@SuppressWarnings("unchecked") private boolean next() throws IOException { boolean hasMoreElements; if ((currLeftIterator == null || !currLeftIterator.hasNext()) && (currRightIterator == null || !currRightIterator.hasNext())) { hasMoreElements = nextGroups(outerJoinType); if (hasMoreElements) { if (outerJoinType != OuterJoinType.LEFT) { currLeftIterator = new ListIteratorWrapper(currLeftSubset.iterator()); } leftReturn = (IN1) currLeftIterator.next(); if (outerJoinType != OuterJoinType.RIGHT) { currRightIterator = new ListIteratorWrapper(currRightSubset.iterator()); } rightReturn = (IN2) currRightIterator.next(); return true; } else { //no more elements return false; } } else if (currLeftIterator.hasNext() && !currRightIterator.hasNext()) { leftReturn = (IN1) currLeftIterator.next(); currRightIterator.reset(); rightReturn = (IN2) currRightIterator.next(); return true; } else { rightReturn = (IN2) currRightIterator.next(); return true; } }
@SuppressWarnings("unchecked") private boolean next() throws IOException { boolean hasMoreElements; if ((currLeftIterator == null || !currLeftIterator.hasNext()) && (currRightIterator == null || !currRightIterator.hasNext())) { hasMoreElements = nextGroups(outerJoinType); if (hasMoreElements) { if (outerJoinType != OuterJoinType.LEFT) { currLeftIterator = new ListIteratorWrapper(currLeftSubset.iterator()); } leftReturn = (IN1) currLeftIterator.next(); if (outerJoinType != OuterJoinType.RIGHT) { currRightIterator = new ListIteratorWrapper(currRightSubset.iterator()); } rightReturn = (IN2) currRightIterator.next(); return true; } else { //no more elements return false; } } else if (currLeftIterator.hasNext() && !currRightIterator.hasNext()) { leftReturn = (IN1) currLeftIterator.next(); currRightIterator.reset(); rightReturn = (IN2) currRightIterator.next(); return true; } else { rightReturn = (IN2) currRightIterator.next(); return true; } }
private boolean nextGroups(OuterJoinType outerJoinType) throws IOException { if (outerJoinType == OuterJoinType.FULL) { return nextGroups(); } else if (outerJoinType == OuterJoinType.LEFT) { boolean leftContainsElements = false; while (!leftContainsElements && nextGroups()) { currLeftIterator = new ListIteratorWrapper(currLeftSubset.iterator()); if (currLeftIterator.next() != null) { leftContainsElements = true; } currLeftIterator.reset(); } return leftContainsElements; } else if (outerJoinType == OuterJoinType.RIGHT) { boolean rightContainsElements = false; while (!rightContainsElements && nextGroups()) { currRightIterator = new ListIteratorWrapper(currRightSubset.iterator()); if (currRightIterator.next() != null) { rightContainsElements = true; } currRightIterator.reset(); } return rightContainsElements; } else { throw new IllegalArgumentException("Outer join of type '" + outerJoinType + "' not supported."); } }
private boolean nextGroups(OuterJoinType outerJoinType) throws IOException { if (outerJoinType == OuterJoinType.FULL) { return nextGroups(); } else if (outerJoinType == OuterJoinType.LEFT) { boolean leftContainsElements = false; while (!leftContainsElements && nextGroups()) { currLeftIterator = new ListIteratorWrapper(currLeftSubset.iterator()); if (currLeftIterator.next() != null) { leftContainsElements = true; } currLeftIterator.reset(); } return leftContainsElements; } else if (outerJoinType == OuterJoinType.RIGHT) { boolean rightContainsElements = false; while (!rightContainsElements && nextGroups()) { currRightIterator = new ListIteratorWrapper(currRightSubset.iterator()); if (currRightIterator.next() != null) { rightContainsElements = true; } currRightIterator.reset(); } return rightContainsElements; } else { throw new IllegalArgumentException("Outer join of type '" + outerJoinType + "' not supported."); } }