1 package org.kuali.rice.krms.framework.engine;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public enum CollectionOperator {
18
19 ONE_OR_MORE(false) {
20 @Override
21 public boolean reduce(boolean elementResult, boolean collatedResult) {
22 return elementResult || collatedResult;
23 }
24
25 @Override
26 public boolean shortCircuit(boolean collatedResult) {
27 return collatedResult;
28 }
29 },
30
31 ALL(true) {
32 @Override
33 public boolean reduce(boolean elementResult, boolean collatedResult) {
34 return elementResult && collatedResult;
35 }
36
37 @Override
38 public boolean shortCircuit(boolean collatedResult) {
39 return !collatedResult;
40 }
41 },
42
43 NONE(true) {
44 @Override
45 public boolean reduce(boolean elementResult, boolean collatedResult) {
46 return !elementResult && collatedResult;
47 }
48
49 @Override
50 public boolean shortCircuit(boolean collatedResult) {
51 return !collatedResult;
52 }
53 };
54
55 private final boolean initialCollationResult;
56
57 private CollectionOperator(boolean initialCollationResult) {
58 this.initialCollationResult = initialCollationResult;
59 }
60
61
62
63
64
65
66
67 public abstract boolean reduce(boolean elementResult, boolean collatedResult);
68
69
70
71
72
73
74
75
76 public abstract boolean shortCircuit(boolean collatedResult);
77
78
79
80
81
82
83
84 public boolean getInitialCollatedResult() {
85 return initialCollationResult;
86 }
87
88 }