From 1982461002e653efe5f8104d677ba185d09fb6dd Mon Sep 17 00:00:00 2001 From: Philip Liard Date: Tue, 14 Jun 2011 14:05:54 +0000 Subject: [PATCH] JAVA:Update GenerateAreaCodeData to output binary files instead of a jar. --- .../phonenumbers/GenerateAreaCodeData.java | 65 ++++--------------- 1 file changed, 14 insertions(+), 51 deletions(-) diff --git a/java/resources/com/google/i18n/phonenumbers/GenerateAreaCodeData.java b/java/resources/com/google/i18n/phonenumbers/GenerateAreaCodeData.java index b424cb547..8123df17e 100644 --- a/java/resources/com/google/i18n/phonenumbers/GenerateAreaCodeData.java +++ b/java/resources/com/google/i18n/phonenumbers/GenerateAreaCodeData.java @@ -35,10 +35,6 @@ import java.util.List; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; -import java.util.jar.Attributes; -import java.util.jar.JarEntry; -import java.util.jar.JarOutputStream; -import java.util.jar.Manifest; import java.util.logging.Level; import java.util.logging.Logger; @@ -49,67 +45,37 @@ import java.util.logging.Logger; * *

The text files must be located in sub-directories of the provided input path. For each input * file inputPath/lang/countryCallingCode.txt the corresponding binary file is generated as - * outputPath/countryCallingCode_lang. The binary files are stored into the resulting JAR. + * outputPath/countryCallingCode_lang. * * @author Philippe Liard */ public class GenerateAreaCodeData { // The path to the input directory containing the languages directories. private final File inputPath; - // The path to the output JAR file. - private final File outputJarPath; + // The path to the output directory. + private final File outputPath; // Whether the data is generated for testing. private final boolean forTesting; private static final Logger LOGGER = Logger.getLogger(GenerateAreaCodeData.class.getName()); - private JarOutputStream createJar() throws FileNotFoundException, IOException { - Manifest manifest = new java.util.jar.Manifest(); - manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); - JarOutputStream target = new JarOutputStream(new FileOutputStream(outputJarPath)); - return target; - } - - private void addFileToJar(File file, JarOutputStream jar) throws IOException { - JarEntry entry = new JarEntry( - GenerateAreaCodeData.class.getPackage().getName().replace('.', '/') + - (forTesting ? "/geocoding_testing_data/" : "/geocoding_data/") + - file.getPath()); - entry.setTime(file.lastModified()); - jar.putNextEntry(entry); - BufferedInputStream bufferedInputStream = null; - - try { - bufferedInputStream = new BufferedInputStream(new FileInputStream(file)); - byte[] buffer = new byte[4096]; - - for (int read = 0; (read = bufferedInputStream.read(buffer)) > 0; ) { - jar.write(buffer, 0, read); - } - } finally { - jar.closeEntry(); - closeFile(bufferedInputStream); - } - } - - public GenerateAreaCodeData(File inputPath, File outputJarPath, boolean forTesting) + public GenerateAreaCodeData(File inputPath, File outputPath, boolean forTesting) throws IOException { if (!inputPath.isDirectory()) { throw new IOException("The provided input path does not exist: " + inputPath.getAbsolutePath()); } - File parentDirectory = outputJarPath.getParentFile(); - if (parentDirectory.exists()) { - if (!parentDirectory.isDirectory()) { - throw new IOException("Expected directory: " + parentDirectory.getAbsolutePath()); + if (outputPath.exists()) { + if (!outputPath.isDirectory()) { + throw new IOException("Expected directory: " + outputPath.getAbsolutePath()); } } else { - if (!parentDirectory.mkdirs()) { - throw new IOException("Could not create directory " + parentDirectory.getAbsolutePath()); + if (!outputPath.mkdirs()) { + throw new IOException("Could not create directory " + outputPath.getAbsolutePath()); } } this.inputPath = inputPath; - this.outputJarPath = outputJarPath; + this.outputPath = outputPath; this.forTesting = forTesting; } @@ -207,7 +173,8 @@ public class GenerateAreaCodeData { } mappings.add(new Pair( countryCodeFile, - new File(String.format("%s_%s", countryCode, languageDirectory.getName())))); + new File(outputPath, + String.format("%s_%s", countryCode, languageDirectory.getName())))); } } return mappings; @@ -257,7 +224,6 @@ public class GenerateAreaCodeData { * @throws FileNotFoundException */ public void run() throws FileNotFoundException, IOException { - JarOutputStream jar = createJar(); List> inputOutputMappings = createInputOutputFileMappings(); SortedMap> availableDataFiles = new TreeMap>(); @@ -272,7 +238,6 @@ public class GenerateAreaCodeData { fileOutputStream = new FileOutputStream(binaryFile); convertData(fileInputStream, fileOutputStream); addConfigurationMapping(availableDataFiles, inputOutputMapping.second); - addFileToJar(binaryFile, jar); } catch (IOException e) { LOGGER.log(Level.SEVERE, e.getMessage()); continue; @@ -285,20 +250,18 @@ public class GenerateAreaCodeData { FileOutputStream fileOutputStream = null; try { - File configFile = new File("config"); + File configFile = new File(outputPath, "config"); fileOutputStream = new FileOutputStream(configFile); outputBinaryConfiguration(availableDataFiles, fileOutputStream); - addFileToJar(configFile, jar); } finally { closeFile(fileOutputStream); - closeFile(jar); } } public static void main(String[] args) { if (args.length != 3) { LOGGER.log(Level.SEVERE, - "usage: GenerateAreaCodeData /path/to/input/directory /path/to/output.jar" + + "usage: GenerateAreaCodeData /path/to/input/directory /path/to/output/directory" + " forTesting"); System.exit(1); }