PageRenderTime 36ms CodeModel.GetById 29ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/thirdparty/breakpad/third_party/protobuf/protobuf/examples/AddPerson.java

http://github.com/tomahawk-player/tomahawk
Java | 95 lines | 72 code | 15 blank | 8 comment | 12 complexity | 695a684cadf85fb1cab5e42be7709e4b MD5 | raw file
 1// See README.txt for information and build instructions.
 2
 3import com.example.tutorial.AddressBookProtos.AddressBook;
 4import com.example.tutorial.AddressBookProtos.Person;
 5import java.io.BufferedReader;
 6import java.io.FileInputStream;
 7import java.io.FileNotFoundException;
 8import java.io.FileOutputStream;
 9import java.io.InputStreamReader;
10import java.io.IOException;
11import java.io.PrintStream;
12
13class AddPerson {
14  // This function fills in a Person message based on user input.
15  static Person PromptForAddress(BufferedReader stdin,
16                                 PrintStream stdout) throws IOException {
17    Person.Builder person = Person.newBuilder();
18
19    stdout.print("Enter person ID: ");
20    person.setId(Integer.valueOf(stdin.readLine()));
21
22    stdout.print("Enter name: ");
23    person.setName(stdin.readLine());
24
25    stdout.print("Enter email address (blank for none): ");
26    String email = stdin.readLine();
27    if (email.length() > 0) {
28      person.setEmail(email);
29    }
30
31    while (true) {
32      stdout.print("Enter a phone number (or leave blank to finish): ");
33      String number = stdin.readLine();
34      if (number.length() == 0) {
35        break;
36      }
37
38      Person.PhoneNumber.Builder phoneNumber =
39        Person.PhoneNumber.newBuilder().setNumber(number);
40
41      stdout.print("Is this a mobile, home, or work phone? ");
42      String type = stdin.readLine();
43      if (type.equals("mobile")) {
44        phoneNumber.setType(Person.PhoneType.MOBILE);
45      } else if (type.equals("home")) {
46        phoneNumber.setType(Person.PhoneType.HOME);
47      } else if (type.equals("work")) {
48        phoneNumber.setType(Person.PhoneType.WORK);
49      } else {
50        stdout.println("Unknown phone type.  Using default.");
51      }
52
53      person.addPhone(phoneNumber);
54    }
55
56    return person.build();
57  }
58
59  // Main function:  Reads the entire address book from a file,
60  //   adds one person based on user input, then writes it back out to the same
61  //   file.
62  public static void main(String[] args) throws Exception {
63    if (args.length != 1) {
64      System.err.println("Usage:  AddPerson ADDRESS_BOOK_FILE");
65      System.exit(-1);
66    }
67
68    AddressBook.Builder addressBook = AddressBook.newBuilder();
69
70    // Read the existing address book.
71    try {
72      FileInputStream input = new FileInputStream(args[0]);
73      try {
74        addressBook.mergeFrom(input);
75      } finally {
76        try { input.close(); } catch (Throwable ignore) {}
77      }
78    } catch (FileNotFoundException e) {
79      System.out.println(args[0] + ": File not found.  Creating a new file.");
80    }
81
82    // Add an address.
83    addressBook.addPerson(
84      PromptForAddress(new BufferedReader(new InputStreamReader(System.in)),
85                       System.out));
86
87    // Write the new address book back to disk.
88    FileOutputStream output = new FileOutputStream(args[0]);
89    try {
90      addressBook.build().writeTo(output);
91    } finally {
92      output.close();
93    }
94  }
95}