xref: /aosp_15_r20/external/protobuf/examples/add_person.dart (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Workerimport 'dart:io';
2*1b3f573fSAndroid Build Coastguard Worker
3*1b3f573fSAndroid Build Coastguard Workerimport 'dart_tutorial/addressbook.pb.dart';
4*1b3f573fSAndroid Build Coastguard Worker
5*1b3f573fSAndroid Build Coastguard Worker/// This function fills in a Person message based on user input.
6*1b3f573fSAndroid Build Coastguard WorkerPerson promptForAddress() {
7*1b3f573fSAndroid Build Coastguard Worker  final person = Person();
8*1b3f573fSAndroid Build Coastguard Worker
9*1b3f573fSAndroid Build Coastguard Worker  print('Enter person ID: ');
10*1b3f573fSAndroid Build Coastguard Worker  final input = stdin.readLineSync();
11*1b3f573fSAndroid Build Coastguard Worker  person.id = int.parse(input);
12*1b3f573fSAndroid Build Coastguard Worker
13*1b3f573fSAndroid Build Coastguard Worker  print('Enter name');
14*1b3f573fSAndroid Build Coastguard Worker  person.name = stdin.readLineSync();
15*1b3f573fSAndroid Build Coastguard Worker
16*1b3f573fSAndroid Build Coastguard Worker  print('Enter email address (blank for none) : ');
17*1b3f573fSAndroid Build Coastguard Worker  final email = stdin.readLineSync();
18*1b3f573fSAndroid Build Coastguard Worker  if (email.isNotEmpty) person.email = email;
19*1b3f573fSAndroid Build Coastguard Worker
20*1b3f573fSAndroid Build Coastguard Worker  while (true) {
21*1b3f573fSAndroid Build Coastguard Worker    print('Enter a phone number (or leave blank to finish): ');
22*1b3f573fSAndroid Build Coastguard Worker    final number = stdin.readLineSync();
23*1b3f573fSAndroid Build Coastguard Worker    if (number.isEmpty) break;
24*1b3f573fSAndroid Build Coastguard Worker
25*1b3f573fSAndroid Build Coastguard Worker    final phoneNumber = Person_PhoneNumber()..number = number;
26*1b3f573fSAndroid Build Coastguard Worker
27*1b3f573fSAndroid Build Coastguard Worker    print('Is this a mobile, home, or work phone? ');
28*1b3f573fSAndroid Build Coastguard Worker
29*1b3f573fSAndroid Build Coastguard Worker    final type = stdin.readLineSync();
30*1b3f573fSAndroid Build Coastguard Worker    switch (type) {
31*1b3f573fSAndroid Build Coastguard Worker      case 'mobile':
32*1b3f573fSAndroid Build Coastguard Worker        phoneNumber.type = Person_PhoneType.MOBILE;
33*1b3f573fSAndroid Build Coastguard Worker        break;
34*1b3f573fSAndroid Build Coastguard Worker      case 'home':
35*1b3f573fSAndroid Build Coastguard Worker        phoneNumber.type = Person_PhoneType.HOME;
36*1b3f573fSAndroid Build Coastguard Worker        break;
37*1b3f573fSAndroid Build Coastguard Worker      case 'work':
38*1b3f573fSAndroid Build Coastguard Worker        phoneNumber.type = Person_PhoneType.WORK;
39*1b3f573fSAndroid Build Coastguard Worker        break;
40*1b3f573fSAndroid Build Coastguard Worker      default:
41*1b3f573fSAndroid Build Coastguard Worker        print('Unknown phone type.  Using default.');
42*1b3f573fSAndroid Build Coastguard Worker    }
43*1b3f573fSAndroid Build Coastguard Worker    person.phones.add(phoneNumber);
44*1b3f573fSAndroid Build Coastguard Worker  }
45*1b3f573fSAndroid Build Coastguard Worker
46*1b3f573fSAndroid Build Coastguard Worker  return person;
47*1b3f573fSAndroid Build Coastguard Worker}
48*1b3f573fSAndroid Build Coastguard Worker
49*1b3f573fSAndroid Build Coastguard Worker/// Reads the entire address book from a file, adds one person based
50*1b3f573fSAndroid Build Coastguard Worker/// on user input, then writes it back out to the same file.
51*1b3f573fSAndroid Build Coastguard Workervoid main(List<String> arguments) {
52*1b3f573fSAndroid Build Coastguard Worker  if (arguments.length != 1) {
53*1b3f573fSAndroid Build Coastguard Worker    print('Usage: add_person ADDRESS_BOOK_FILE');
54*1b3f573fSAndroid Build Coastguard Worker    exit(-1);
55*1b3f573fSAndroid Build Coastguard Worker  }
56*1b3f573fSAndroid Build Coastguard Worker
57*1b3f573fSAndroid Build Coastguard Worker  final file = File(arguments.first);
58*1b3f573fSAndroid Build Coastguard Worker  AddressBook addressBook;
59*1b3f573fSAndroid Build Coastguard Worker  if (!file.existsSync()) {
60*1b3f573fSAndroid Build Coastguard Worker    print('File not found. Creating new file.');
61*1b3f573fSAndroid Build Coastguard Worker    addressBook = AddressBook();
62*1b3f573fSAndroid Build Coastguard Worker  } else {
63*1b3f573fSAndroid Build Coastguard Worker    addressBook = AddressBook.fromBuffer(file.readAsBytesSync());
64*1b3f573fSAndroid Build Coastguard Worker  }
65*1b3f573fSAndroid Build Coastguard Worker  addressBook.people.add(promptForAddress());
66*1b3f573fSAndroid Build Coastguard Worker  file.writeAsBytes(addressBook.writeToBuffer());
67*1b3f573fSAndroid Build Coastguard Worker}
68