• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

evolvedbinary / elemental / 982

29 Apr 2025 08:34PM UTC coverage: 56.409% (+0.007%) from 56.402%
982

push

circleci

adamretter
[feature] Improve README.md badges

28451 of 55847 branches covered (50.94%)

Branch coverage included in aggregate %.

77468 of 131924 relevant lines covered (58.72%)

0.59 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

77.78
/exist-core/src/main/java/org/exist/util/CollectionOfArrayIterator.java
1
/*
2
 * Elemental
3
 * Copyright (C) 2024, Evolved Binary Ltd
4
 *
5
 * admin@evolvedbinary.com
6
 * https://www.evolvedbinary.com | https://www.elemental.xyz
7
 *
8
 * Use of this software is governed by the Business Source License 1.1
9
 * included in the LICENSE file and at www.mariadb.com/bsl11.
10
 *
11
 * Change Date: 2028-04-27
12
 *
13
 * On the date above, in accordance with the Business Source License, use
14
 * of this software will be governed by the Apache License, Version 2.0.
15
 *
16
 * Additional Use Grant: Production use of the Licensed Work for a permitted
17
 * purpose. A Permitted Purpose is any purpose other than a Competing Use.
18
 * A Competing Use means making the Software available to others in a commercial
19
 * product or service that: substitutes for the Software; substitutes for any
20
 * other product or service we offer using the Software that exists as of the
21
 * date we make the Software available; or offers the same or substantially
22
 * similar functionality as the Software.
23
 */
24
package org.exist.util;
25

26
import java.util.Collection;
27
import java.util.Collections;
28
import java.util.Iterator;
29
import java.util.NoSuchElementException;
30

31
/**
32
 * Iterator over a Collection of array.
33
 *
34
 * @author <a href="mailto:adam@evolvedbinary.com">Adam Retter</a>
35
 */
36
public class CollectionOfArrayIterator<T> implements Iterator<T> {
37

38
    private final Iterator<T[]> itArrays;
39

40
    public CollectionOfArrayIterator(final Collection<T[]> collectionOfArrays) {
1✔
41
        if (collectionOfArrays == null) {
1✔
42
            this.itArrays = Collections.emptyIterator();
1✔
43
        } else {
1✔
44
            this.itArrays = collectionOfArrays.iterator();
1✔
45
        }
46
    }
1✔
47

48
    private int arrayIdx = -1;  // -1 indicates BoF state
1✔
49
    private T[] array = null;
1✔
50

51
    @Override
52
    public boolean hasNext() {
53
        if (arrayIdx == -1) {
1✔
54
            while (itArrays.hasNext()) {
1✔
55
                array = itArrays.next();
1✔
56
                arrayIdx = 0;
1✔
57
                if (arrayIdx < array.length) {
1✔
58
                    return true;
1✔
59
                }
60
            }
61
            return false;
1✔
62
        }
63

64
        if (array == null && itArrays.hasNext()) {
1!
65
            array = itArrays.next();
×
66
            arrayIdx = 0;
×
67
        }
68

69
        if (arrayIdx < array.length) {
1✔
70
            return true;
1✔
71
        } else {
72
            while (itArrays.hasNext()) {
1✔
73
                array = itArrays.next();
1✔
74
                arrayIdx = 0;
1✔
75
                if (arrayIdx < array.length) {
1✔
76
                    return true;
1✔
77
                }
78
            }
79
            return false;
1✔
80
        }
81
    }
82

83
    @Override
84
    public T next() {
85
        if (arrayIdx == -1) {
1✔
86
            array = itArrays.next();
×
87
            arrayIdx = 0;
×
88
        }
89

90
        if (arrayIdx < array.length) {
1✔
91
            return array[arrayIdx++];
1✔
92
        }
93

94
        while (itArrays.hasNext()) {
1!
95
            array = itArrays.next();
×
96
            arrayIdx = 0;
×
97
            if (arrayIdx < array.length) {
×
98
                return array[arrayIdx++];
×
99
            }
100
        }
101

102
        throw new NoSuchElementException();
1✔
103
    }
104
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc