" * region represented by that country calling code. In the case of multiple\n" +
" * countries sharing a calling code, such as the NANPA regions, the one\n" +
" * indicated with \"isMainCountryForCode\" in the metadata should be first.\n" +
- " * @type {Object.<number, Array.<string>>}\n" +
+ " * @type {!Object.<number, Array.<string>>}\n" +
" */\n";
private static final String COUNTRY_TO_METADATA_COMMENT =
"/**\n" +
" * A mapping from a region code to the PhoneMetadata for that region.\n" +
- " * @type {Object.<string, Array>}\n" +
+ " * @type {!Object.<string, Array>}\n" +
" */\n";
private static final int COPYRIGHT_YEAR = 2010;
writer.flush();
writer.close();
+ formatter.close();
} catch (Exception e) {
e.printStackTrace();
return false;
} else {
writer.write(",");
}
- String regionCode = metadata.getId();
+ String key = metadata.getId();
+ // For non-geographical country calling codes (e.g. +800), use the country calling codes
+ // instead of the region code as key in the map.
+ if (key.equals("001")) {
+ key = Integer.toString(metadata.getCountryCode());
+ }
JSArrayBuilder jsArrayBuilder = new JSArrayBuilder();
toJsArray(metadata, jsArrayBuilder);
writer.write("\"");
- writer.write(regionCode);
+ writer.write(key);
writer.write("\":");
writer.write(jsArrayBuilder.toString());
}
// Converts PhoneNumberDesc to JSArray.
private static void toJsArray(PhoneNumberDesc desc, JSArrayBuilder jsArrayBuilder) {
+ if (desc == null) {
+ // Some descriptions are optional; in these cases we just append null and return if they are
+ // absent.
+ jsArrayBuilder.append(null);
+ return;
+ }
jsArrayBuilder.beginArray();
// missing 0
// missing 0
jsArrayBuilder.append(null);
- // required PhoneNumberDesc general_desc = 1;
+ // optional PhoneNumberDesc general_desc = 1;
toJsArray(metadata.getGeneralDesc(), jsArrayBuilder);
- // required PhoneNumberDesc fixed_line = 2;
+ // optional PhoneNumberDesc fixed_line = 2;
toJsArray(metadata.getFixedLine(), jsArrayBuilder);
- // required PhoneNumberDesc mobile = 3;
+ // optional PhoneNumberDesc mobile = 3;
toJsArray(metadata.getMobile(), jsArrayBuilder);
- // required PhoneNumberDesc toll_free = 4;
+ // optional PhoneNumberDesc toll_free = 4;
toJsArray(metadata.getTollFree(), jsArrayBuilder);
- // required PhoneNumberDesc premium_rate = 5;
+ // optional PhoneNumberDesc premium_rate = 5;
toJsArray(metadata.getPremiumRate(), jsArrayBuilder);
- // required PhoneNumberDesc shared_cost = 6;
+ // optional PhoneNumberDesc shared_cost = 6;
toJsArray(metadata.getSharedCost(), jsArrayBuilder);
- // required PhoneNumberDesc personal_number = 7;
+ // optional PhoneNumberDesc personal_number = 7;
toJsArray(metadata.getPersonalNumber(), jsArrayBuilder);
- // required PhoneNumberDesc voip = 8;
+ // optional PhoneNumberDesc voip = 8;
toJsArray(metadata.getVoip(), jsArrayBuilder);
// required string id = 9;
jsArrayBuilder.append(metadata.getId());
- // required int32 country_code = 10;
- jsArrayBuilder.append(metadata.getCountryCode());
- // required string international_prefix = 11;
- jsArrayBuilder.append(metadata.getInternationalPrefix());
+ // optional int32 country_code = 10;
+ if (metadata.hasCountryCode()) {
+ jsArrayBuilder.append(metadata.getCountryCode());
+ } else {
+ jsArrayBuilder.append(null);
+ }
+ // optional string international_prefix = 11;
+ if (metadata.hasInternationalPrefix()) {
+ jsArrayBuilder.append(metadata.getInternationalPrefix());
+ } else {
+ jsArrayBuilder.append(null);
+ }
// optional string national_prefix = 12;
if (metadata.hasNationalPrefix()) {
} else {
jsArrayBuilder.append(null);
}
- // required PhoneNumberDesc pager = 21;
+ // optional PhoneNumberDesc pager = 21;
toJsArray(metadata.getPager(), jsArrayBuilder);
// optional bool main_country_for_code = 22 [default=false];
if (metadata.isMainCountryForCode()) {
} else {
jsArrayBuilder.append(null);
}
- // required PhoneNumberDesc no_international_dialling = 24;
+ // optional PhoneNumberDesc no_international_dialling = 24;
toJsArray(metadata.getNoInternationalDialling(), jsArrayBuilder);
- // required PhoneNumberDesc uan = 25;
+ // optional PhoneNumberDesc uan = 25;
toJsArray(metadata.getUan(), jsArrayBuilder);
// optional bool leading_zero_possible = 26 [default=false];
if (metadata.isLeadingZeroPossible()) {
} else {
jsArrayBuilder.append(null);
}
- // required PhoneNumberDesc emergency = 27;
+ // optional PhoneNumberDesc emergency = 27;
toJsArray(metadata.getEmergency(), jsArrayBuilder);
+ // optional PhoneNumberDesc voicemail = 28;
+ toJsArray(metadata.getVoicemail(), jsArrayBuilder);
+ // Fields 29-31 are omitted due to space increase.
+ // optional PhoneNumberDesc short_code = 29;
+ // optional PhoneNumberDesc standard_rate = 30;
+ // optional PhoneNumberDesc carrier_specific = 31;
+ // optional bool mobile_number_portable_region = 32 [default=false];
+ // Omit since the JS API doesn't expose this data.
+ // Note: Need to add null for each of the above fields when a subsequent
+ // field is being populated.
jsArrayBuilder.endArray();
}