1 package civitas.common.election;
2
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.stereotype.Controller;
5
6 import civitas.common.ballotdesign.GetNthContext;
7 import civitas.common.capabilityencryption.VoterEncCapabilities;
8 import civitas.common.votersubmission.VoterSubmission;
9
10 @Controller
11 public class IsVoterSubmissionInBlock {
12 @Autowired
13 GetVoterBlockForBlock getVoterBlockForBlock;
14
15 @Autowired
16 GetNthContext getNthContext;
17
18 @Autowired
19 GetContextForBlock getContextForBlock;
20
21 @Autowired
22 GetBaseContext getBaseContext;
23
24 public boolean apply(final ElectionDetails that, final VoterSubmission voter, final int block) {
25 if (voter == null) {
26 throw new IllegalArgumentException("null voter");
27 }
28 int voterBlock = getVoterBlockForBlock.apply(that, block);
29 return voterBlock == voter.voterBlock;
30 }
31
32 public boolean apply(
33 final ElectionDetails that, final VoterEncCapabilities voter, final String context, final int block) {
34 if (voter == null) {
35 throw new IllegalArgumentException("null voter");
36 }
37 int voterBlock = getVoterBlockForBlock.apply(that, block);
38 int contextN = getContextForBlock.apply(that, block);
39 String targetContext = getNthContext.apply(that.ballotDesign, contextN);
40 return voterBlock == voter.voterBlock && targetContext.equals(context);
41 }
42
43 public boolean apply(
44 final ElectionDetails that, final VoterSubmission voter, final String context, final int block) {
45 if (voter == null) {
46 throw new IllegalArgumentException("null voter");
47 }
48
49 int voterBlock = getVoterBlockForBlock.apply(that, block);
50 int contextN = getContextForBlock.apply(that, block);
51 String targetContext =
52 getBaseContext.apply(that, voterBlock) + getNthContext.apply(that.ballotDesign, contextN);
53 return voterBlock == voter.voterBlock && targetContext.equals(context);
54 }
55 }