Index: third_party/protobuf/examples/AddPerson.java |
diff --git a/third_party/protobuf/examples/AddPerson.java b/third_party/protobuf/examples/AddPerson.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c262ab7e60642a7370e428a21094513f133c4dc2 |
--- /dev/null |
+++ b/third_party/protobuf/examples/AddPerson.java |
@@ -0,0 +1,95 @@ |
+// See README.txt for information and build instructions. |
+ |
+import com.example.tutorial.AddressBookProtos.AddressBook; |
+import com.example.tutorial.AddressBookProtos.Person; |
+import java.io.BufferedReader; |
+import java.io.FileInputStream; |
+import java.io.FileNotFoundException; |
+import java.io.FileOutputStream; |
+import java.io.InputStreamReader; |
+import java.io.IOException; |
+import java.io.PrintStream; |
+ |
+class AddPerson { |
+ // This function fills in a Person message based on user input. |
+ static Person PromptForAddress(BufferedReader stdin, |
+ PrintStream stdout) throws IOException { |
+ Person.Builder person = Person.newBuilder(); |
+ |
+ stdout.print("Enter person ID: "); |
+ person.setId(Integer.valueOf(stdin.readLine())); |
+ |
+ stdout.print("Enter name: "); |
+ person.setName(stdin.readLine()); |
+ |
+ stdout.print("Enter email address (blank for none): "); |
+ String email = stdin.readLine(); |
+ if (email.length() > 0) { |
+ person.setEmail(email); |
+ } |
+ |
+ while (true) { |
+ stdout.print("Enter a phone number (or leave blank to finish): "); |
+ String number = stdin.readLine(); |
+ if (number.length() == 0) { |
+ break; |
+ } |
+ |
+ Person.PhoneNumber.Builder phoneNumber = |
+ Person.PhoneNumber.newBuilder().setNumber(number); |
+ |
+ stdout.print("Is this a mobile, home, or work phone? "); |
+ String type = stdin.readLine(); |
+ if (type.equals("mobile")) { |
+ phoneNumber.setType(Person.PhoneType.MOBILE); |
+ } else if (type.equals("home")) { |
+ phoneNumber.setType(Person.PhoneType.HOME); |
+ } else if (type.equals("work")) { |
+ phoneNumber.setType(Person.PhoneType.WORK); |
+ } else { |
+ stdout.println("Unknown phone type. Using default."); |
+ } |
+ |
+ person.addPhones(phoneNumber); |
+ } |
+ |
+ return person.build(); |
+ } |
+ |
+ // Main function: Reads the entire address book from a file, |
+ // adds one person based on user input, then writes it back out to the same |
+ // file. |
+ public static void main(String[] args) throws Exception { |
+ if (args.length != 1) { |
+ System.err.println("Usage: AddPerson ADDRESS_BOOK_FILE"); |
+ System.exit(-1); |
+ } |
+ |
+ AddressBook.Builder addressBook = AddressBook.newBuilder(); |
+ |
+ // Read the existing address book. |
+ try { |
+ FileInputStream input = new FileInputStream(args[0]); |
+ try { |
+ addressBook.mergeFrom(input); |
+ } finally { |
+ try { input.close(); } catch (Throwable ignore) {} |
+ } |
+ } catch (FileNotFoundException e) { |
+ System.out.println(args[0] + ": File not found. Creating a new file."); |
+ } |
+ |
+ // Add an address. |
+ addressBook.addPeople( |
+ PromptForAddress(new BufferedReader(new InputStreamReader(System.in)), |
+ System.out)); |
+ |
+ // Write the new address book back to disk. |
+ FileOutputStream output = new FileOutputStream(args[0]); |
+ try { |
+ addressBook.build().writeTo(output); |
+ } finally { |
+ output.close(); |
+ } |
+ } |
+} |