1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.voting.voters;
35
36 import info.magnolia.voting.Voter;
37 import info.magnolia.voting.Voting;
38
39 import org.apache.commons.lang.ArrayUtils;
40
41
42
43
44
45
46
47
48 public class VoterSet extends BaseVoterImpl {
49
50
51
52
53 String op;
54
55
56
57
58 int level;
59
60
61
62
63 boolean not = false;
64
65 private Voter[] voters = new Voter[0];
66
67 private Voting voting;
68
69 public Voter[] getVoters() {
70 return voters;
71 }
72
73 public void setVoters(Voter[] voters) {
74 this.voters = (Voter[]) ArrayUtils.addAll(this.voters, voters);
75 }
76
77 public void addVoter(Voter voter){
78 if(voter.isEnabled()){
79 voters = (Voter[]) ArrayUtils.add(voters, voter);
80 }
81 }
82
83 @Override
84 public int vote(Object value) {
85 int outcome = getVoting().vote(voters, value);
86 if(level != 0){
87 if(outcome < 0){
88 outcome = -level;
89 }
90 if(outcome > 0){
91 outcome = level;
92 }
93 }
94 if(not){
95 outcome = -outcome;
96 }
97 return outcome;
98 }
99
100 public Voting getVoting() {
101 if(voting == null){
102 if("AND".equalsIgnoreCase(op)){
103 voting = Voting.AND;
104 }
105 else if("OR".equalsIgnoreCase(op)){
106 voting = Voting.OR;
107 }
108 else{
109 voting = Voting.HIGHEST_LEVEL;
110 }
111 }
112 return voting;
113 }
114
115 public void setVoting(Voting voting) {
116 this.voting = voting;
117 }
118
119 public boolean isNot() {
120 return not;
121 }
122
123 public void setNot(boolean not) {
124 this.not = not;
125 }
126
127 public int getLevel() {
128 return level;
129 }
130
131 public void setLevel(int level) {
132 this.level = level;
133 }
134
135 @Override
136 public String toString() {
137 return super.toString() + " set: " + (not ? "not " : "") + ArrayUtils.toString(voters);
138 }
139
140 public String getOp() {
141 return op;
142 }
143
144 public void setOp(String op) {
145 this.op = op;
146 }
147 }