package com.google.i18n.phonenumbers.tools;
import java.io.Closeable;
-import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
/**
* Helper class containing methods designed to ease file manipulation and generation.
close(closeable);
}
}
-
- /**
- * Returns true if the provided output file/directory is older than the provided input
- * file/directory. The last modification time of a directory is the maximum last
- * modification time of its children. It assumes the provided output directory only contains
- * generated files.
- */
- public static boolean isGenerationRequired(File inputFile, File outputDir) {
- if (!outputDir.exists()) {
- return true;
- }
- return getLastModificationTime(inputFile) > getLastModificationTime(outputDir);
- }
-
- /**
- * Gets the modification time of the most recently modified file contained in a directory.
- */
- private static long getLastModificationTime(File file) {
- if (!file.isDirectory()) {
- return file.lastModified();
- }
- long maxModificationTime = 0;
-
- for (File child : file.listFiles()) {
- long modificationTime = getLastModificationTime(child);
-
- if (modificationTime > maxModificationTime) {
- maxModificationTime = modificationTime;
- }
- }
- return maxModificationTime;
- }
}
boolean forTesting = args[3].equals("true");
boolean liteBuild = args.length > 4 && args[4].equals("true");
- if (!FileUtils.isGenerationRequired(
- new File(inputFile),
- new File(outputDir, new File(META_DATA_FILE_PREFIX).getParent()))) {
- System.out.println("Metadata code up-to-date.");
- return true;
- }
String filePrefix;
if (forTesting) {
filePrefix = outputDir + TEST_META_DATA_FILE_PREFIX;
* @throws FileNotFoundException
*/
public void run() throws FileNotFoundException, IOException {
- if (!FileUtils.isGenerationRequired(inputPath, outputPath)) {
- LOGGER.log(Level.INFO, "Geocoding data up-to-date.");
- return;
- }
List<Pair<File, File>> inputOutputMappings = createInputOutputFileMappings();
SortedMap<Integer, Set<String>> availableDataFiles = new TreeMap<Integer, Set<String>>();