• 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

82.93
/exist-core/src/main/java/org/exist/xquery/Intersect.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.xquery;
25

26
import org.exist.xquery.value.*;
27

28
import java.util.Set;
29
import java.util.TreeSet;
30

31
/**
32
 * @author <a href="mailto:wolfgang@exist-db.org">Wolfgang Meier</a>
33
 */
34
public class Intersect extends CombiningExpression {
35

36
    public Intersect(final XQueryContext context, final PathExpr left, final PathExpr right) {
37
        super(context, left, right);
1✔
38
    }
1✔
39

40
    @Override
41
    public Sequence combine(final Sequence ls, final Sequence rs) throws XPathException {
42
        final Sequence result;
43
        if (ls.isEmpty() || rs.isEmpty()) {
1✔
44
            result = Sequence.EMPTY_SEQUENCE;
1✔
45
        } else {
1✔
46
            if (!(Type.subTypeOf(ls.getItemType(), Type.NODE) && Type.subTypeOf(rs.getItemType(), Type.NODE))) {
1!
47
                throw new XPathException(this, ErrorCodes.XPTY0004, "intersect operand is not a node sequence");
×
48
            }
49
            if (ls.isPersistentSet() && rs.isPersistentSet()) {
1!
50
                result = ls.toNodeSet().intersection(rs.toNodeSet());
×
51
            } else {
×
52
                result = new ValueSequence(true);
1✔
53
                final Set<Item> set = new TreeSet<>(new ItemComparator());
1✔
54
                for (final SequenceIterator i = ls.unorderedIterator(); i.hasNext(); ) {
1✔
55
                    set.add(i.nextItem());
1✔
56
                }
57
                for (final SequenceIterator i = rs.unorderedIterator(); i.hasNext(); ) {
1✔
58
                    final Item next = i.nextItem();
1✔
59
                    if (set.contains(next)) {
1✔
60
                        result.add(next);
1✔
61
                    }
62
                }
63
                result.removeDuplicates();
1✔
64
            }
65
        }
66

67
        return result;
1✔
68
    }
69

70
    @Override
71
    protected String getOperatorName() {
72
        return "intersect";
×
73
    }
74

75
    @Override
76
    public void accept(final ExpressionVisitor visitor) {
77
        visitor.visitIntersectionExpr(this);
1✔
78
    }
1✔
79
}
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