01: import java.io.BufferedReader;
02: import java.io.IOException;
03:
04: /**
05: A telephone that takes simulated keystrokes and voice input
06: from the user and simulates spoken text.
07: */
08: public class Telephone
09: {
10: /**
11: Construct phone object.
12: @param aReader that reads text from a character-input stream
13: */
14: public Telephone(BufferedReader aReader)
15: {
16: reader = aReader;
17: }
18:
19: /**
20: Speak a message to System.out.
21: @param output the text that will be "spoken"
22: */
23: public void speak(String output)
24: {
25: System.out.println(output);
26: }
27:
28: /**
29: Loops reading user input and passes the input to the
30: Connection object's methods dial, record or hangup.
31: @param c the connection that connects this phone to the
32: voice mail system
33: */
34: public void run(Connection c) throws IOException
35: {
36: boolean more = true;
37: while (more)
38: {
39: String input = reader.readLine();
40: if (input == null) return;
41: if (input.equalsIgnoreCase("H"))
42: c.hangup();
43: else if (input.equalsIgnoreCase("Q"))
44: more = false;
45: else if (input.length() == 1
46: && "1234567890#".indexOf(input) >= 0)
47: c.dial(input);
48: else
49: c.record(input);
50: }
51: }
52:
53: private BufferedReader reader;
54: }