EMMA Coverage Report (generated Thu Jan 20 11:39:44 EST 2011)
[all classes][com.hammurapi.eventbus]

COVERAGE SUMMARY FOR SOURCE FILE [PredicateCostCardinalityComparator.java]

nameclass, %method, %block, %line, %
PredicateCostCardinalityComparator.java100% (1/1)100% (2/2)89%  (67/75)87%  (13/15)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class PredicateCostCardinalityComparator100% (1/1)100% (2/2)89%  (67/75)87%  (13/15)
compare (Predicate, Predicate): int 100% (1/1)89%  (64/72)86%  (12/14)
PredicateCostCardinalityComparator (): void 100% (1/1)100% (3/3)100% (1/1)

1package com.hammurapi.eventbus;
2 
3import java.util.Comparator;
4 
5import com.hammurapi.extract.Predicate;
6 
7/**
8 * Comparator to sort join predicates.
9 * @author Pavel Vlasov
10 *
11 * @param <E>
12 * @param <C>
13 */
14public class PredicateCostCardinalityComparator<E,C> implements Comparator<Predicate<E,C>> {
15 
16        @Override
17        public int compare(Predicate<E, C> p1, Predicate<E, C> p2) {
18                // Predicates ordered by cost first - cheaper come before more expensive
19                double delta = p1.getCost() - p2.getCost();
20                if (delta < -Double.MIN_VALUE) {
21                        return -1;
22                } 
23                
24                if (delta > Double.MIN_VALUE) {
25                        return 1;
26                }                                        
27                
28                // Then by cardinality (smaller comes before greater)
29                // And then by first index.
30                int c1 = p1.parameterIndices().size();
31                int c2 = p2.parameterIndices().size();
32                if (c1!=c2) {
33                        return c1 - c2;
34                }
35                
36                for (int i: p1.parameterIndices()) {
37                        for (int j: p2.parameterIndices()) {
38                                if (i!=j) {
39                                        return i-j;
40                                }
41                        }
42                }
43                
44                return p1.hashCode() - p2.hashCode();
45        }
46 
47}

[all classes][com.hammurapi.eventbus]
EMMA 2.0.5312 EclEmma Fix 2 (C) Vladimir Roubtsov