From 96090109064e3389a30f2634d8d3bbcf2a5a7f4c Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Fri, 21 Jun 2013 16:42:50 -0700 Subject: [PATCH] Use external storage directory display name rather than the actual path. --- MyTracks/res/values/strings.xml | 14 +++++------ .../fragments/ExportDialogFragment.java | 2 +- .../fragments/FileTypeDialogFragment.java | 2 +- .../io/backup/ExternalFileBackup.java | 4 ++-- .../apps/mytracks/io/file/ImportActivity.java | 23 +++++++++++-------- .../apps/mytracks/io/file/SaveActivity.java | 17 ++++++++------ .../services/RemoveTempFilesService.java | 2 +- .../android/apps/mytracks/util/FileUtils.java | 19 ++++++--------- .../apps/mytracks/util/FileUtilsTest.java | 4 ++-- .../endtoendtest/EndToEndTestUtils.java | 6 ++--- .../endtoendtest/common/DeleteTest.java | 4 ++-- .../common/ExportAllAndImportAllTest.java | 17 +++++++------- 12 files changed, 59 insertions(+), 55 deletions(-) diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index 46d39f6d5..12e4bb1be 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -634,7 +634,7 @@ limitations under the License. %1$d the number of tracks successfully exported. E.g., '1'. %1$s the number of tracks to export. E.g., '2 tracks'. - %2$s the directory. E.g., '/storage/sdcard0/MyTracks/kml/'."> + %2$s the directory. E.g., '/MyTracks/kml'."> Exported %1$d of %2$s to %3$s. + %1$s: the directory. E.g., '/MyTracks/kml'."> Exporting to %1$s… + %2$s the directory. E.g., '/MyTracks/kml'."> Exported %1$s to %2$s. + %3$s the directory. E.g., '/MyTracks/kml'."> Imported %1$d of %2$s from %3$s. + %1$s: the directory. E.g., '/MyTracks/kml'."> %1$s does not exist. + %1$s: the directory. E.g., '/MyTracks/kml'."> Importing from %1$s… + %2$s the directory. E.g., '/MyTracks/kml'."> Imported %1$s from %2$s. diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ExportDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ExportDialogFragment.java index 865db5bd6..adc23657b 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ExportDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ExportDialogFragment.java @@ -171,7 +171,7 @@ public class ExportDialogFragment extends DialogFragment { */ private void setExternalStorageOption(RadioButton radioButton, TrackFileFormat trackFileFormat) { radioButton.setText(getString(R.string.export_external_storage_option, trackFileFormat.name(), - FileUtils.getDisplayDirectory(trackFileFormat.getExtension()))); + FileUtils.getDirectoryDisplayName(trackFileFormat.getExtension()))); } /** diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java index db8e8d2a0..283391a31 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/FileTypeDialogFragment.java @@ -92,7 +92,7 @@ public class FileTypeDialogFragment extends DialogFragment { for (int i = 0; i < choices.length; i++) { TrackFileFormat trackFileFormat = trackFileFormats[i]; choices[i] = getString(optionId, trackFileFormat.name(), - FileUtils.getDisplayDirectory(trackFileFormat.getExtension())); + FileUtils.getDirectoryDisplayName(trackFileFormat.getExtension())); } return new AlertDialog.Builder(getActivity()).setNegativeButton(R.string.generic_cancel, null) .setPositiveButton(R.string.generic_ok, new OnClickListener() { diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/backup/ExternalFileBackup.java b/MyTracks/src/com/google/android/apps/mytracks/io/backup/ExternalFileBackup.java index e572a4bf2..943273042 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/backup/ExternalFileBackup.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/backup/ExternalFileBackup.java @@ -86,8 +86,8 @@ class ExternalFileBackup { * @param create whether to try creating the directory if it doesn't exist */ private File getBackupsDirectory(boolean create) { - String dirName = FileUtils.buildExternalDirectoryPath(BACKUPS_SUBDIR); - final File dir = new File(dirName); + String directoryPath = FileUtils.getDirectoryPath(BACKUPS_SUBDIR); + final File dir = new File(directoryPath); Log.d(Constants.TAG, "Dir: " + dir.getAbsolutePath()); if (create) { // Try to create - if that fails, return null diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java index 863099e51..d8ccc4449 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/ImportActivity.java @@ -59,7 +59,7 @@ public class ImportActivity extends Activity { private TrackFileFormat trackFileFormat; // the path on the external storage to import - private String path; + private String directoryDisplayName; // the number of files successfully imported private int successCount; @@ -86,10 +86,14 @@ public class ImportActivity extends Activity { finish(); return; } + String directoryPath; if (importAll) { - path = FileUtils.buildExternalDirectoryPath(trackFileFormat.getExtension()); - if (!FileUtils.isDirectory(new File(path))) { - Toast.makeText(this, getString(R.string.import_no_directory, path), Toast.LENGTH_LONG) + directoryDisplayName = FileUtils.getDirectoryDisplayName( + trackFileFormat.getExtension()); + directoryPath = FileUtils.getDirectoryPath(trackFileFormat.getExtension()); + if (!FileUtils.isDirectory(new File(directoryPath))) { + Toast.makeText( + this, getString(R.string.import_no_directory, directoryDisplayName), Toast.LENGTH_LONG) .show(); finish(); return; @@ -108,7 +112,8 @@ public class ImportActivity extends Activity { finish(); return; } - path = data.getPath(); + directoryDisplayName = data.getPath(); + directoryPath = data.getPath(); } Object retained = getLastNonConfigurationInstance(); @@ -116,7 +121,7 @@ public class ImportActivity extends Activity { importAsyncTask = (ImportAsyncTask) retained; importAsyncTask.setActivity(this); } else { - importAsyncTask = new ImportAsyncTask(this, importAll, trackFileFormat, path); + importAsyncTask = new ImportAsyncTask(this, importAll, trackFileFormat, directoryPath); importAsyncTask.execute(); } } @@ -139,7 +144,7 @@ public class ImportActivity extends Activity { dialog.dismiss(); finish(); } - }, path); + }, directoryDisplayName); return progressDialog; case DIALOG_RESULT_ID: final boolean success; @@ -148,10 +153,10 @@ public class ImportActivity extends Activity { .getQuantityString(R.plurals.files, totalCount, totalCount); if (successCount == totalCount && totalCount > 0) { success = true; - message = getString(R.string.import_success, totalFiles, path); + message = getString(R.string.import_success, totalFiles, directoryDisplayName); } else { success = false; - message = getString(R.string.import_error, successCount, totalFiles, path); + message = getString(R.string.import_error, successCount, totalFiles, directoryDisplayName); } return new AlertDialog.Builder(this).setCancelable(true).setIcon( success ? android.R.drawable.ic_dialog_info : android.R.drawable.ic_dialog_alert) diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java index 994a7769b..135630267 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java @@ -51,7 +51,7 @@ public class SaveActivity extends Activity { private TrackFileFormat trackFileFormat; private long[] trackIds; private boolean playTrack; - private String directoryName; + private String directoryDisplayName; private SaveAsyncTask saveAsyncTask; private ProgressDialog progressDialog; @@ -80,11 +80,14 @@ public class SaveActivity extends Activity { return; } - directoryName = playTrack ? FileUtils.buildExternalDirectoryPath( + directoryDisplayName = playTrack ? FileUtils.getDirectoryDisplayName( trackFileFormat.getExtension(), FileUtils.TEMP_DIR) - : FileUtils.buildExternalDirectoryPath(trackFileFormat.getExtension()); + : FileUtils.getDirectoryDisplayName(trackFileFormat.getExtension()); - File directory = new File(directoryName); + String directoryPath = playTrack ? FileUtils.getDirectoryPath( + trackFileFormat.getExtension(), FileUtils.TEMP_DIR) + : FileUtils.getDirectoryPath(trackFileFormat.getExtension()); + File directory = new File(directoryPath); if (!FileUtils.ensureDirectoryExists(directory)) { Toast.makeText(this, R.string.external_storage_not_writable, Toast.LENGTH_LONG).show(); finish(); @@ -120,7 +123,7 @@ public class SaveActivity extends Activity { dialog.dismiss(); finish(); } - }, directoryName); + }, directoryDisplayName); return progressDialog; case DIALOG_RESULT_ID: boolean success; @@ -129,11 +132,11 @@ public class SaveActivity extends Activity { .getQuantityString(R.plurals.tracks, totalCount, totalCount); if (successCount == totalCount && totalCount > 0) { success = true; - message = getString(R.string.export_external_storage_success, totalTracks, directoryName); + message = getString(R.string.export_external_storage_success, totalTracks, directoryDisplayName); } else { success = false; message = getString( - R.string.export_external_storage_error, successCount, totalTracks, directoryName); + R.string.export_external_storage_error, successCount, totalTracks, directoryDisplayName); } AlertDialog.Builder builder = new AlertDialog.Builder(this).setCancelable(true).setIcon( success ? android.R.drawable.ic_dialog_info : android.R.drawable.ic_dialog_alert) diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/RemoveTempFilesService.java b/MyTracks/src/com/google/android/apps/mytracks/services/RemoveTempFilesService.java index d83e717da..2e55d0b8c 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/RemoveTempFilesService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/RemoveTempFilesService.java @@ -91,7 +91,7 @@ public class RemoveTempFilesService extends Service { } private void cleanTempDirectory(String name) { - cleanTempDirectory(new File(FileUtils.buildExternalDirectoryPath(name, FileUtils.TEMP_DIR))); + cleanTempDirectory(new File(FileUtils.getDirectoryPath(name, FileUtils.TEMP_DIR))); } /** diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/FileUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/FileUtils.java index e497a6db0..ac70130bf 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/FileUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/FileUtils.java @@ -87,10 +87,11 @@ public class FileUtils { } /** - * Gets the display directory. + * Gets the directory display name. + * * @param components the components */ - public static String getDisplayDirectory(String... components) { + public static String getDirectoryDisplayName(String... components) { StringBuilder dirNameBuilder = new StringBuilder(); dirNameBuilder.append(File.separatorChar); dirNameBuilder.append(SDCARD_TOP_DIR); @@ -101,20 +102,14 @@ public class FileUtils { return dirNameBuilder.toString(); } /** - * Builds a path inside the My Tracks directory in the SD card. + * Gets the directory path. * - * @param components the path components inside the mytracks directory - * @return the full path to the destination + * @param components the components */ - public static String buildExternalDirectoryPath(String... components) { + public static String getDirectoryPath(String... components) { StringBuilder dirNameBuilder = new StringBuilder(); dirNameBuilder.append(Environment.getExternalStorageDirectory()); - dirNameBuilder.append(File.separatorChar); - dirNameBuilder.append(SDCARD_TOP_DIR); - for (String component : components) { - dirNameBuilder.append(File.separatorChar); - dirNameBuilder.append(component); - } + dirNameBuilder.append(getDirectoryDisplayName(components)); return dirNameBuilder.toString(); } diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/util/FileUtilsTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/util/FileUtilsTest.java index 8897f0bba..fd79f7d47 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/util/FileUtilsTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/util/FileUtilsTest.java @@ -29,13 +29,13 @@ import junit.framework.TestCase; public class FileUtilsTest extends TestCase { /** - * Tests {@link FileUtils#buildExternalDirectoryPath(String...)}. + * Tests {@link FileUtils#getDirectoryPath(String...)}. */ public void testBuildExternalDirectoryPath() { String expectedName = Environment.getExternalStorageDirectory() + File.separator + FileUtils.SDCARD_TOP_DIR + File.separator + "a" + File.separator + "b" + File.separator + "c"; - String dirName = FileUtils.buildExternalDirectoryPath("a", "b", "c"); + String dirName = FileUtils.getDirectoryPath("a", "b", "c"); assertEquals(expectedName, dirName); } diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java index c520ae8e8..f300d4827 100644 --- a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java +++ b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/EndToEndTestUtils.java @@ -500,7 +500,7 @@ public class EndToEndTestUtils { * @param trackKind the kind of track */ public static void deleteExportedFiles(String trackKind) { - File[] allFiles = (new File(FileUtils.buildExternalDirectoryPath(trackKind.toLowerCase()))) + File[] allFiles = (new File(FileUtils.getDirectoryPath(trackKind.toLowerCase()))) .listFiles(); if (allFiles != null) { for (File oneFile : allFiles) { @@ -527,14 +527,14 @@ public class EndToEndTestUtils { * @return files array of such kind of exported tracks */ public static File[] getExportedFiles(final String trackKind) { - String filePath = FileUtils.buildExternalDirectoryPath(trackKind); + String directoryPath = FileUtils.getDirectoryPath(trackKind); FileFilter filter = new FileFilter() { @Override public boolean accept(File pathname) { return pathname.getName().indexOf("." + trackKind) > 0; } }; - return (new File(filePath)).listFiles(filter); + return (new File(directoryPath)).listFiles(filter); } /** diff --git a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/DeleteTest.java b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/DeleteTest.java index 28b0a0a3b..44572665d 100644 --- a/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/DeleteTest.java +++ b/MyTracksTest_E2E/src/com/google/android/apps/mytracks/endtoendtest/common/DeleteTest.java @@ -76,9 +76,9 @@ public class DeleteTest extends ActivityInstrumentationTestCase2