JAVA: Update geocoder binary generation code.
authorroes@google.com <roes@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Mon, 23 Sep 2013 14:01:00 +0000 (14:01 +0000)
committerroes@google.com <roes@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Mon, 23 Sep 2013 14:01:00 +0000 (14:01 +0000)
git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@613 ee073f10-1060-11df-b6a4-87a95322a99c

java/build.xml
java/release_notes.txt
tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
tools/java/java-build/pom.xml
tools/java/java-build/src/com/google/i18n/phonenumbers/EntryPoint.java
tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/AbstractPhonePrefixDataIOHandler.java [moved from tools/java/java-build/src/com/google/i18n/phonenumbers/geocoding/AbstractAreaCodeDataIOHandler.java with 84% similarity]
tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixData.java [moved from tools/java/java-build/src/com/google/i18n/phonenumbers/geocoding/GenerateAreaCodeData.java with 86% similarity]
tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixDataEntryPoint.java [moved from tools/java/java-build/src/com/google/i18n/phonenumbers/geocoding/GenerateAreaCodeDataEntryPoint.java with 71% similarity]
tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/PhonePrefixDataIOHandler.java [moved from tools/java/java-build/src/com/google/i18n/phonenumbers/geocoding/AreaCodeDataIOHandler.java with 84% similarity]
tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar
tools/java/java-build/test/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixDataTest.java [moved from tools/java/java-build/test/com/google/i18n/phonenumbers/geocoding/GenerateAreaCodeDataTest.java with 78% similarity]

index b1cf341..04cfd10 100644 (file)
@@ -89,7 +89,7 @@
     <exec executable="java">
       <arg value="-jar" />
       <arg value="${build.tools.jar}"/>
-      <arg value="GenerateAreaCodeData"/>
+      <arg value="GeneratePhonePrefixData"/>
       <arg value="${resources.dir}/geocoding/"/>
       <arg value="geocoder/src/com/google/i18n/phonenumbers/geocoding/data"/>
     </exec>
@@ -99,7 +99,7 @@
     <exec executable="java">
       <arg value="-jar" />
       <arg value="${build.tools.jar}"/>
-      <arg value="GenerateAreaCodeData"/>
+      <arg value="GeneratePhonePrefixData"/>
       <arg value="${resources.dir}/test/geocoding/"/>
       <arg value="geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data"/>
     </exec>
         <include name="**/geocoding/*.class"/>
         <include name="**/prefixmapper/*.class"/>
         <exclude name="**/*Test*"/>
-        <exclude name="**/geocoding/GenerateAreaCodeData*"/>
       </fileset>
       <fileset dir="${geocoder.src.dir}">
         <include name="**/geocoding/data/*"/>
index d6a2243..efa2f37 100644 (file)
@@ -1,3 +1,8 @@
+Sep 23, 2013: libphonenumber-5.8.6
+* Code changes:
+  - Restructured the geocoder binary generation code, moving the classes under tools/ from
+    geocoding/ to buildtools/ and renaming AreaCode to PhonePrefix.
+
 Sep 23, 2013: libphonenumber-5.8.5
 * Code changes:
   - Restructured the geocoder, moving the utility classes to a new module internal/prefixmapper.
index f13088b..5a039c8 100644 (file)
Binary files a/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar and b/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar differ
index e5321c8..22a999f 100644 (file)
@@ -65,9 +65,9 @@
                 <!-- Add ../../../java/libphonenumber/src/ to make Phonemetadata.java available to
                      the source directories. -->
                 <source>../../../java/libphonenumber/src/</source>
-                <!-- Add ../../../java/geocoder/src/ to make AreaCodeMap.java available to the
-                     source directories. -->
-                <source>../../../java/geocoder/src/</source>
+                <!-- Add ../../../java/internal/phoneprefix/src/ to make PhonePrefixMap.java
+                     available to the source directories. -->
+                <source>../../../java/internal/prefixmapper/src/</source>
                 <!-- Add ../common/src/ which contains BuildMetadataFromXml.java -->
                 <source>../common/src/</source>
               </sources>
index 709cf51..f7eec1b 100644 (file)
@@ -16,7 +16,7 @@
 
 package com.google.i18n.phonenumbers;
 
-import com.google.i18n.phonenumbers.geocoding.GenerateAreaCodeDataEntryPoint;
+import com.google.i18n.phonenumbers.buildtools.GeneratePhonePrefixDataEntryPoint;
 
 /**
  * Entry point class for Java and JavaScript build tools.
@@ -29,7 +29,7 @@ public class EntryPoint {
     boolean status = new CommandDispatcher(args, new Command[] {
       new BuildMetadataJsonFromXml(),
       new BuildMetadataProtoFromXml(),
-      new GenerateAreaCodeDataEntryPoint(),
+      new GeneratePhonePrefixDataEntryPoint(),
     }).start();
 
     System.exit(status ? 0 : 1);
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.google.i18n.phonenumbers.geocoding;
+package com.google.i18n.phonenumbers.buildtools;
 
 import java.io.Closeable;
 import java.io.File;
@@ -23,12 +23,12 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
- * Abstracts the way GenerateAreaCodeDataEntryPoint creates files and writes the area code data to
- * them.
+ * Abstracts the way GeneratePhonePrefixDataEntryPoint creates files and writes
+ * the phone prefix data to them.
  */
-public abstract class AbstractAreaCodeDataIOHandler {
+public abstract class AbstractPhonePrefixDataIOHandler {
   private static final Logger LOGGER = Logger.getLogger(
-      AbstractAreaCodeDataIOHandler.class.getName());
+      AbstractPhonePrefixDataIOHandler.class.getName());
   /**
    * Adds the provided file to a global output that can be for example a JAR.
    *
  * limitations under the License.
  */
 
-package com.google.i18n.phonenumbers.geocoding;
+package com.google.i18n.phonenumbers.buildtools;
+
+import com.google.i18n.phonenumbers.prefixmapper.MappingFileProvider;
+import com.google.i18n.phonenumbers.prefixmapper.PhonePrefixMap;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedReader;
@@ -42,7 +45,7 @@ import java.util.logging.Logger;
 import java.util.regex.Pattern;
 
 /**
- * A utility that generates the binary serialization of the area code/location mappings from
+ * A utility that generates the binary serialization of the phone prefix mappings from
  * human-readable text files. It also generates a configuration file which contains information on
  * data files available for use.
  *
@@ -52,7 +55,7 @@ import java.util.regex.Pattern;
  *
  * @author Philippe Liard
  */
-public class GenerateAreaCodeData {
+public class GeneratePhonePrefixData {
   // The path to the input directory containing the languages directories.
   private final File inputPath;
   private static final int NANPA_COUNTRY_CODE = 1;
@@ -63,11 +66,11 @@ public class GenerateAreaCodeData {
   private final Map<Integer /* country code */, SortedMap<Integer, String>> englishMaps =
       new HashMap<Integer, SortedMap<Integer, String>>();
   // The IO Handler used to output the generated binary files.
-  private final AbstractAreaCodeDataIOHandler ioHandler;
+  private final AbstractPhonePrefixDataIOHandler ioHandler;
 
-  private static final Logger LOGGER = Logger.getLogger(GenerateAreaCodeData.class.getName());
+  private static final Logger LOGGER = Logger.getLogger(GeneratePhonePrefixData.class.getName());
 
-  public GenerateAreaCodeData(File inputPath, AbstractAreaCodeDataIOHandler ioHandler)
+  public GeneratePhonePrefixData(File inputPath, AbstractPhonePrefixDataIOHandler ioHandler)
       throws IOException {
     if (!inputPath.isDirectory()) {
       throw new IOException("The provided input path does not exist: " +
@@ -80,7 +83,7 @@ public class GenerateAreaCodeData {
   /**
    * Implement this interface to provide a callback to the parseTextFile() method.
    */
-  static interface AreaCodeMappingHandler {
+  static interface PhonePrefixMappingHandler {
     /**
      * Method called every time the parser matches a mapping. Note that 'prefix' is the prefix as
      * it is written in the text file (i.e phone number prefix appended to country code).
@@ -93,7 +96,8 @@ public class GenerateAreaCodeData {
    * mapping read.
    */
   // @VisibleForTesting
-  static void parseTextFile(InputStream input, AreaCodeMappingHandler handler) throws IOException {
+  static void parseTextFile(InputStream input,
+                            PhonePrefixMappingHandler handler) throws IOException {
     BufferedReader bufferedReader =
         new BufferedReader(new InputStreamReader(
             new BufferedInputStream(input), Charset.forName("UTF-8")));
@@ -116,18 +120,18 @@ public class GenerateAreaCodeData {
   }
 
   /**
-   * Writes the provided area code map to the provided output stream.
+   * Writes the provided phone prefix map to the provided output stream.
    *
    * @throws IOException
    */
   // @VisibleForTesting
   static void writeToBinaryFile(SortedMap<Integer, String> sortedMap, OutputStream output)
       throws IOException {
-    // Build the corresponding area code map and serialize it to the binary format.
-    AreaCodeMap areaCodeMap = new AreaCodeMap();
-    areaCodeMap.readAreaCodeMap(sortedMap);
+    // Build the corresponding phone prefix map and serialize it to the binary format.
+    PhonePrefixMap phonePrefixMap = new PhonePrefixMap();
+    phonePrefixMap.readPhonePrefixMap(sortedMap);
     ObjectOutputStream objectOutputStream = new ObjectOutputStream(output);
-    areaCodeMap.writeExternal(objectOutputStream);
+    phonePrefixMap.writeExternal(objectOutputStream);
     objectOutputStream.flush();
   }
 
@@ -139,16 +143,16 @@ public class GenerateAreaCodeData {
   // @VisibleForTesting
   static SortedMap<Integer, String> readMappingsFromTextFile(InputStream input)
       throws IOException {
-    final SortedMap<Integer, String> areaCodeMap = new TreeMap<Integer, String>();
-    parseTextFile(input, new AreaCodeMappingHandler() {
+    final SortedMap<Integer, String> phonePrefixMap = new TreeMap<Integer, String>();
+    parseTextFile(input, new PhonePrefixMappingHandler() {
       @Override
       public void process(int prefix, String location) {
-        if (areaCodeMap.put(prefix, location) != null) {
+        if (phonePrefixMap.put(prefix, location) != null) {
           throw new RuntimeException(String.format("duplicated prefix %d", prefix));
         }
       }
     });
-    return areaCodeMap;
+    return phonePrefixMap;
   }
 
   private static class PhonePrefixLanguagePair {
@@ -189,7 +193,7 @@ public class GenerateAreaCodeData {
       // Fetch the 4-digit prefixes stored in the file.
       final Set<Integer> phonePrefixes = new HashSet<Integer>();
       FileInputStream inputStream = new FileInputStream(countryCodeFile);
-      parseTextFile(inputStream, new AreaCodeMappingHandler() {
+      parseTextFile(inputStream, new PhonePrefixMappingHandler() {
         @Override
         public void process(int prefix, String location) {
           phonePrefixes.add(Integer.parseInt(String.valueOf(prefix).substring(0, 4)));
@@ -251,17 +255,17 @@ public class GenerateAreaCodeData {
 
   /**
    * Adds a phone number prefix/language mapping to the provided map. The prefix and language are
-   * generated from the provided file name previously used to output the area code/location mappings
-   * for the given country.
+   * generated from the provided file name previously used to output the phone prefix mappings for
+   * the given country.
    */
   // @VisibleForTesting
   static void addConfigurationMapping(SortedMap<Integer, Set<String>> availableDataFiles,
-                                      File outputAreaCodeMappingsFile) {
-    String outputAreaCodeMappingsFileName = outputAreaCodeMappingsFile.getName();
-    PhonePrefixLanguagePair areaCodeLanguagePair =
-        getPhonePrefixLanguagePairFromFilename(outputAreaCodeMappingsFileName);
-    int prefix = Integer.parseInt(areaCodeLanguagePair.prefix);
-    String language = areaCodeLanguagePair.language;
+                                      File outputPhonePrefixMappingsFile) {
+    String outputPhonePrefixMappingsFileName = outputPhonePrefixMappingsFile.getName();
+    PhonePrefixLanguagePair phonePrefixLanguagePair =
+        getPhonePrefixLanguagePairFromFilename(outputPhonePrefixMappingsFileName);
+    int prefix = Integer.parseInt(phonePrefixLanguagePair.prefix);
+    String language = phonePrefixLanguagePair.language;
     Set<String> languageSet = availableDataFiles.get(prefix);
     if (languageSet == null) {
       languageSet = new HashSet<String>();
@@ -284,13 +288,14 @@ public class GenerateAreaCodeData {
   }
 
   /**
-   * Splits the provided area code map into multiple maps according to the provided list of output
-   * binary files. A map associating output binary files to area code maps is returned as a result.
+   * Splits the provided phone prefix map into multiple maps according to the provided list of
+   * output binary files. A map associating output binary files to phone prefix maps is returned as
+   * a result.
    * <pre>
    * Example:
-   *   input map: { 12011: Location1, 12021: Location2 }
+   *   input map: { 12011: Description1, 12021: Description2 }
    *   outputBinaryFiles: { 1201_en, 1202_en }
-   *   output map: { 1201_en: { 12011: Location1 }, 1202_en: { 12021: Location2 } }
+   *   output map: { 1201_en: { 12011: Description1 }, 1202_en: { 12021: Description2 } }
    * </pre>
    */
   // @VisibleForTesting
@@ -310,12 +315,12 @@ public class GenerateAreaCodeData {
           break;
         }
       }
-      SortedMap<Integer, String> mappingsForAreaCodeLangPair = mappingsForFiles.get(targetFile);
-      if (mappingsForAreaCodeLangPair == null) {
-        mappingsForAreaCodeLangPair = new TreeMap<Integer, String>();
-        mappingsForFiles.put(targetFile, mappingsForAreaCodeLangPair);
+      SortedMap<Integer, String> mappingsForPhonePrefixLangPair = mappingsForFiles.get(targetFile);
+      if (mappingsForPhonePrefixLangPair == null) {
+        mappingsForPhonePrefixLangPair = new TreeMap<Integer, String>();
+        mappingsForFiles.put(targetFile, mappingsForPhonePrefixLangPair);
       }
-      mappingsForAreaCodeLangPair.put(mapping.getKey(), mapping.getValue());
+      mappingsForPhonePrefixLangPair.put(mapping.getKey(), mapping.getValue());
     }
     return mappingsForFiles;
   }
@@ -416,7 +421,7 @@ public class GenerateAreaCodeData {
   }
 
   /**
-   * Runs the area code data generator.
+   * Runs the phone prefix data generator.
    *
    * @throws IOException
    */
@@ -473,6 +478,6 @@ public class GenerateAreaCodeData {
       ioHandler.closeFile(fileOutputStream);
       ioHandler.close();
     }
-    LOGGER.log(Level.INFO, "Geocoding data successfully generated.");
+    LOGGER.log(Level.INFO, "Phone prefix data successfully generated.");
   }
 }
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.google.i18n.phonenumbers.geocoding;
+package com.google.i18n.phonenumbers.buildtools;
 
 import com.google.i18n.phonenumbers.Command;
 
@@ -24,16 +24,16 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
- * Entry point class used to invoke the generation of the binary geocoding data files.
+ * Entry point class used to invoke the generation of the binary phone prefix data files.
  *
  * @author Philippe Liard
  */
-public class GenerateAreaCodeDataEntryPoint extends Command {
-  private static final Logger LOGGER = Logger.getLogger(GenerateAreaCodeData.class.getName());
+public class GeneratePhonePrefixDataEntryPoint extends Command {
+  private static final Logger LOGGER = Logger.getLogger(GeneratePhonePrefixData.class.getName());
 
   @Override
   public String getCommandName() {
-    return "GenerateAreaCodeData";
+    return "GeneratePhonePrefixData";
   }
 
   @Override
@@ -42,13 +42,13 @@ public class GenerateAreaCodeDataEntryPoint extends Command {
 
     if (args.length != 3) {
       LOGGER.log(Level.SEVERE,
-                 "usage: GenerateAreaCodeData /path/to/input/directory /path/to/output/directory");
+                 "usage: GeneratePhonePrefixData /path/to/input/directory /path/to/output/directory");
       return false;
     }
     try {
-      GenerateAreaCodeData generateAreaCodeData =
-          new GenerateAreaCodeData(new File(args[1]), new AreaCodeDataIOHandler(new File(args[2])));
-      generateAreaCodeData.run();
+      GeneratePhonePrefixData generatePhonePrefixData =
+          new GeneratePhonePrefixData(new File(args[1]), new PhonePrefixDataIOHandler(new File(args[2])));
+      generatePhonePrefixData.run();
     } catch (IOException e) {
       LOGGER.log(Level.SEVERE, e.getMessage());
       return false;
  * limitations under the License.
  */
 
-package com.google.i18n.phonenumbers.geocoding;
+package com.google.i18n.phonenumbers.buildtools;
 
 import java.io.File;
 import java.io.IOException;
 
 /**
- * Implementation of the IOHandler required by the GenerateAreaCodeData class used here to create
+ * Implementation of the IOHandler required by the GeneratePhonePrefixData class used here to create
  * the output files.
  */
-class AreaCodeDataIOHandler extends AbstractAreaCodeDataIOHandler {
+class PhonePrefixDataIOHandler extends AbstractPhonePrefixDataIOHandler {
   // The path to the output directory.
   private final File outputPath;
 
-  public AreaCodeDataIOHandler(File outputPath) throws IOException {
+  public PhonePrefixDataIOHandler(File outputPath) throws IOException {
     if (outputPath.exists()) {
       if (!outputPath.isDirectory()) {
         throw new IOException("Expected directory: " + outputPath.getAbsolutePath());
index 55e8759..1e971e4 100644 (file)
Binary files a/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar and b/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar differ
  * limitations under the License.
  */
 
-package com.google.i18n.phonenumbers.geocoding;
+package com.google.i18n.phonenumbers.buildtools;
 
-import com.google.i18n.phonenumbers.geocoding.GenerateAreaCodeData.AreaCodeMappingHandler;
+import com.google.i18n.phonenumbers.buildtools.GeneratePhonePrefixData.PhonePrefixMappingHandler;
+import com.google.i18n.phonenumbers.prefixmapper.MappingFileProvider;
+import com.google.i18n.phonenumbers.prefixmapper.PhonePrefixMap;
 
 import junit.framework.TestCase;
 
@@ -35,26 +37,26 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 
 /**
- * Unittests for GenerateAreaCodeData.java
+ * Unittests for GeneratePhonePrefixData.java
  *
  * @author Philippe Liard
  */
-public class GenerateAreaCodeDataTest extends TestCase {
+public class GeneratePhonePrefixDataTest extends TestCase {
   private static final SortedMap<Integer, Set<String>> AVAILABLE_DATA_FILES;
   static {
     SortedMap<Integer, Set<String>> temporaryMap = new TreeMap<Integer, Set<String>>();
 
     // Languages for US.
-    GenerateAreaCodeData.addConfigurationMapping(temporaryMap, new File("1_en"));
-    GenerateAreaCodeData.addConfigurationMapping(temporaryMap, new File("1_en_US"));
-    GenerateAreaCodeData.addConfigurationMapping(temporaryMap, new File("1_es"));
+    GeneratePhonePrefixData.addConfigurationMapping(temporaryMap, new File("1_en"));
+    GeneratePhonePrefixData.addConfigurationMapping(temporaryMap, new File("1_en_US"));
+    GeneratePhonePrefixData.addConfigurationMapping(temporaryMap, new File("1_es"));
 
     // Languages for France.
-    GenerateAreaCodeData.addConfigurationMapping(temporaryMap, new File("33_fr"));
-    GenerateAreaCodeData.addConfigurationMapping(temporaryMap, new File("33_en"));
+    GeneratePhonePrefixData.addConfigurationMapping(temporaryMap, new File("33_fr"));
+    GeneratePhonePrefixData.addConfigurationMapping(temporaryMap, new File("33_en"));
 
     // Languages for China.
-    GenerateAreaCodeData.addConfigurationMapping(temporaryMap, new File("86_zh_Hans"));
+    GeneratePhonePrefixData.addConfigurationMapping(temporaryMap, new File("86_zh_Hans"));
 
     AVAILABLE_DATA_FILES = Collections.unmodifiableSortedMap(temporaryMap);
   }
@@ -80,7 +82,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
 
   public void testOutputBinaryConfiguration() throws IOException {
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-    GenerateAreaCodeData.outputBinaryConfiguration(AVAILABLE_DATA_FILES, byteArrayOutputStream);
+    GeneratePhonePrefixData.outputBinaryConfiguration(AVAILABLE_DATA_FILES, byteArrayOutputStream);
     MappingFileProvider mappingFileProvider = new MappingFileProvider();
     mappingFileProvider.readExternal(
         new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
@@ -89,11 +91,11 @@ public class GenerateAreaCodeDataTest extends TestCase {
 
   private static Map<Integer, String> parseTextFileHelper(String input) throws IOException {
     final Map<Integer, String> mappings = new HashMap<Integer, String>();
-    GenerateAreaCodeData.parseTextFile(new ByteArrayInputStream(input.getBytes()),
-                                       new AreaCodeMappingHandler() {
+    GeneratePhonePrefixData.parseTextFile(new ByteArrayInputStream(input.getBytes()),
+                                          new PhonePrefixMappingHandler() {
       @Override
-      public void process(int areaCode, String location) {
-        mappings.put(areaCode, location);
+      public void process(int phonePrefix, String location) {
+        mappings.put(phonePrefix, location);
       }
     });
     return mappings;
@@ -149,7 +151,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
     mappings.put(12022, "Location4");
 
     Map<File, SortedMap<Integer, String>> splitMaps =
-        GenerateAreaCodeData.splitMap(mappings, outputFiles);
+        GeneratePhonePrefixData.splitMap(mappings, outputFiles);
     assertEquals(2, splitMaps.size());
     assertEquals("Location1", splitMaps.get(new File("1201_en")).get(12011));
     assertEquals("Location2", splitMaps.get(new File("1201_en")).get(12012));
@@ -161,16 +163,16 @@ public class GenerateAreaCodeDataTest extends TestCase {
     ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(input.getBytes());
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
 
-    SortedMap<Integer, String> areaCodeMappings =
-        GenerateAreaCodeData.readMappingsFromTextFile(byteArrayInputStream);
-    GenerateAreaCodeData.writeToBinaryFile(areaCodeMappings, byteArrayOutputStream);
-    // The byte array output stream now contains the corresponding serialized area code map. Try
+    SortedMap<Integer, String> phonePrefixMappings =
+        GeneratePhonePrefixData.readMappingsFromTextFile(byteArrayInputStream);
+    GeneratePhonePrefixData.writeToBinaryFile(phonePrefixMappings, byteArrayOutputStream);
+    // The byte array output stream now contains the corresponding serialized phone prefix map. Try
     // to deserialize it and compare it with the initial input.
-    AreaCodeMap areaCodeMap = new AreaCodeMap();
-    areaCodeMap.readExternal(
+    PhonePrefixMap phonePrefixMap = new PhonePrefixMap();
+    phonePrefixMap.readExternal(
         new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
 
-    return areaCodeMap.toString();
+    return phonePrefixMap.toString();
   }
 
   public void testConvertData() throws IOException {
@@ -188,7 +190,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
     assertEquals(input, dataAfterDeserialization);
   }
 
-  public void testConvertDataThrowsExceptionWithDuplicatedAreaCodes() throws IOException {
+  public void testConvertDataThrowsExceptionWithDuplicatedPhonePrefixes() throws IOException {
     String input = "331|Paris\n331|Marseilles\n";
 
     try {
@@ -200,7 +202,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
   }
 
   public void testGetEnglishDataPath() {
-    assertEquals("/path/en/33.txt", GenerateAreaCodeData.getEnglishDataPath("/path/fr/33.txt"));
+    assertEquals("/path/en/33.txt", GeneratePhonePrefixData.getEnglishDataPath("/path/fr/33.txt"));
   }
 
   public void testHasOverlap() {
@@ -209,8 +211,8 @@ public class GenerateAreaCodeDataTest extends TestCase {
     map.put(123, "");
     map.put(2345, "");
 
-    assertTrue(GenerateAreaCodeData.hasOverlappingPrefix(1234, map));
-    assertFalse(GenerateAreaCodeData.hasOverlappingPrefix(2345, map));
+    assertTrue(GeneratePhonePrefixData.hasOverlappingPrefix(1234, map));
+    assertFalse(GeneratePhonePrefixData.hasOverlappingPrefix(2345, map));
   }
 
   public void testCompressAccordingToEnglishDataMakesDescriptionEmpty() {
@@ -224,7 +226,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
     // The English map should not be modified.
     englishMappings = Collections.unmodifiableSortedMap(englishMappings);
 
-    GenerateAreaCodeData.compressAccordingToEnglishData(englishMappings, frenchMappings);
+    GeneratePhonePrefixData.compressAccordingToEnglishData(englishMappings, frenchMappings);
 
     assertEquals(2, frenchMappings.size());
     assertEquals("Genève", frenchMappings.get(411));
@@ -242,7 +244,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
     // The English map should not be modified.
     englishMappings = Collections.unmodifiableSortedMap(englishMappings);
 
-    GenerateAreaCodeData.compressAccordingToEnglishData(englishMappings, frenchMappings);
+    GeneratePhonePrefixData.compressAccordingToEnglishData(englishMappings, frenchMappings);
 
     assertEquals(1, frenchMappings.size());
     assertEquals("Genève", frenchMappings.get(411));
@@ -259,7 +261,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
     // The English map should not be modified.
     englishMappings = Collections.unmodifiableSortedMap(englishMappings);
 
-    GenerateAreaCodeData.compressAccordingToEnglishData(englishMappings, frenchMappings);
+    GeneratePhonePrefixData.compressAccordingToEnglishData(englishMappings, frenchMappings);
 
     assertEquals(0, frenchMappings.size());
   }
@@ -271,7 +273,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
     // The French map should not be modified.
     frenchMappings = Collections.unmodifiableSortedMap(frenchMappings);
 
-    GenerateAreaCodeData.removeEmptyEnglishMappings(frenchMappings, "fr");
+    GeneratePhonePrefixData.removeEmptyEnglishMappings(frenchMappings, "fr");
 
     assertEquals(2, frenchMappings.size());
   }
@@ -281,7 +283,7 @@ public class GenerateAreaCodeDataTest extends TestCase {
     englishMappings.put(331, "Paris");
     englishMappings.put(334, "");
 
-    GenerateAreaCodeData.removeEmptyEnglishMappings(englishMappings, "en");
+    GeneratePhonePrefixData.removeEmptyEnglishMappings(englishMappings, "en");
 
     assertEquals(1, englishMappings.size());
     assertEquals("Paris", englishMappings.get(331));