1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.jboss.as.quickstarts.numberguess;
18
19 import java.io.Serializable;
20
21 import javax.annotation.PostConstruct;
22 import javax.enterprise.context.SessionScoped;
23 import javax.enterprise.inject.Instance;
24 import javax.faces.application.FacesMessage;
25 import javax.faces.component.UIComponent;
26 import javax.faces.component.UIInput;
27 import javax.faces.context.FacesContext;
28 import javax.inject.Inject;
29 import javax.inject.Named;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 @SuppressWarnings("serial")
49 @Named
50 @SessionScoped
51 public class Game implements Serializable {
52
53
54
55
56 private int number;
57
58
59
60
61 private int guess;
62
63
64
65
66 private int smallest;
67
68
69
70
71 private int biggest;
72
73
74
75
76 private int remainingGuesses;
77
78
79
80
81 @Inject
82 @MaxNumber
83 private int maxNumber;
84
85
86
87
88 @Inject
89 @Random
90 Instance<Integer> randomNumber;
91
92 public Game() {
93 }
94
95 public int getNumber() {
96 return number;
97 }
98
99 public int getGuess() {
100 return guess;
101 }
102
103 public void setGuess(int guess) {
104 this.guess = guess;
105 }
106
107 public int getSmallest() {
108 return smallest;
109 }
110
111 public int getBiggest() {
112 return biggest;
113 }
114
115 public int getRemainingGuesses() {
116 return remainingGuesses;
117 }
118
119
120
121
122
123 public void check() {
124 if (guess > number) {
125 biggest = guess - 1;
126 } else if (guess < number) {
127 smallest = guess + 1;
128 } else if (guess == number) {
129 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Correct!"));
130 }
131 remainingGuesses--;
132 }
133
134
135
136
137
138
139 @PostConstruct
140 public void reset() {
141 this.smallest = 0;
142 this.guess = 0;
143 this.remainingGuesses = 10;
144 this.biggest = maxNumber;
145 this.number = randomNumber.get();
146 }
147
148
149
150
151
152
153 public void validateNumberRange(FacesContext context, UIComponent toValidate, Object value) {
154 if (remainingGuesses <= 0) {
155 FacesMessage message = new FacesMessage("No guesses left!");
156 context.addMessage(toValidate.getClientId(context), message);
157 ((UIInput) toValidate).setValid(false);
158 return;
159 }
160 int input = (Integer) value;
161
162 if (input < smallest || input > biggest) {
163 ((UIInput) toValidate).setValid(false);
164
165 FacesMessage message = new FacesMessage("Invalid guess");
166 context.addMessage(toValidate.getClientId(context), message);
167 }
168 }
169 }