diff options
Diffstat (limited to 'main/src/cgeo/geocaching/utils')
4 files changed, 39 insertions, 20 deletions
diff --git a/main/src/cgeo/geocaching/utils/FileUtils.java b/main/src/cgeo/geocaching/utils/FileUtils.java index 5ab8fcc..0b358d2 100644 --- a/main/src/cgeo/geocaching/utils/FileUtils.java +++ b/main/src/cgeo/geocaching/utils/FileUtils.java @@ -1,6 +1,7 @@ package cgeo.geocaching.utils; import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; import android.os.Handler; import android.os.Message; @@ -11,8 +12,6 @@ import java.util.List; /** * Utility class for files * - * @author rsudev - * */ public final class FileUtils { @@ -65,4 +64,29 @@ public final class FileUtils { public abstract boolean shouldEnd(); } + + /** + * Create a unique non existing file named like the given file name. If a file with the given name already exists, + * add a number as suffix to the file name.<br> + * Example: For the file name "file.ext" this will return the first file of the list + * <ul> + * <li>file.ext</li> + * <li>file_2.ext</li> + * <li>file_3.ext</li> + * </ul> + * which does not yet exist. + */ + public static File getUniqueNamedFile(final String baseNameAndPath) { + String extension = StringUtils.substringAfterLast(baseNameAndPath, "."); + String pathName = StringUtils.substringBeforeLast(baseNameAndPath, "."); + int number = 1; + while (new File(getNumberedFileName(pathName, extension, number)).exists()) { + number++; + } + return new File(getNumberedFileName(pathName, extension, number)); + } + + private static String getNumberedFileName(String pathName, String extension, int number) { + return pathName + (number > 1 ? "_" + Integer.toString(number) : "") + "." + extension; + } } diff --git a/main/src/cgeo/geocaching/utils/MatcherWrapper.java b/main/src/cgeo/geocaching/utils/MatcherWrapper.java index c3c1663..78b1170 100644 --- a/main/src/cgeo/geocaching/utils/MatcherWrapper.java +++ b/main/src/cgeo/geocaching/utils/MatcherWrapper.java @@ -22,6 +22,10 @@ public class MatcherWrapper { return matcher.find(); } + public boolean find(int start) { + return matcher.find(start); + } + /** * see {@link Matcher#group(int)} */ diff --git a/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java b/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java index 94246e0..75c10ab 100644 --- a/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java +++ b/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java @@ -10,7 +10,7 @@ import android.os.Message; import java.lang.ref.WeakReference; public class SimpleCancellableHandler extends CancellableHandler { - public static final String SUCCESS_TEXT = "success_message"; + public static final String MESSAGE_TEXT = "message_text"; protected final WeakReference<AbstractActivity> activityRef; protected final WeakReference<Progress> progressDialogRef; @@ -22,13 +22,10 @@ public class SimpleCancellableHandler extends CancellableHandler { @Override public void handleRegularMessage(final Message msg) { AbstractActivity activity = activityRef.get(); - if (activity != null && msg.getData() != null && msg.getData().getString(SUCCESS_TEXT) != null) { - activity.showToast(msg.getData().getString(SUCCESS_TEXT)); - } - Progress progressDialog = progressDialogRef.get(); - if (progressDialog != null) { - progressDialog.dismiss(); + if (activity != null && msg.getData() != null && msg.getData().getString(MESSAGE_TEXT) != null) { + activity.showToast(msg.getData().getString(MESSAGE_TEXT)); } + dismissProgress(); return; } @@ -38,10 +35,7 @@ public class SimpleCancellableHandler extends CancellableHandler { if (activity != null) { activity.showToast((String) extra); } - Progress progressDialog = progressDialogRef.get(); - if (progressDialog != null) { - progressDialog.dismiss(); - } + dismissProgress(); } public final void showToast(int resId) { diff --git a/main/src/cgeo/geocaching/utils/SimpleHandler.java b/main/src/cgeo/geocaching/utils/SimpleHandler.java index 554ded6..b01d0e1 100644 --- a/main/src/cgeo/geocaching/utils/SimpleHandler.java +++ b/main/src/cgeo/geocaching/utils/SimpleHandler.java @@ -10,7 +10,7 @@ import android.os.Message; import java.lang.ref.WeakReference; public abstract class SimpleHandler extends Handler { - public static final String SUCCESS_TEXT = "success_message"; + public static final String MESSAGE_TEXT = "message_text"; protected final WeakReference<AbstractActivity> activityRef; protected final WeakReference<Progress> progressDialogRef; @@ -22,13 +22,10 @@ public abstract class SimpleHandler extends Handler { @Override public void handleMessage(final Message msg) { AbstractActivity activity = activityRef.get(); - if (activity != null && msg.getData() != null && msg.getData().getString(SUCCESS_TEXT) != null) { - activity.showToast(msg.getData().getString(SUCCESS_TEXT)); - } - Progress progressDialog = progressDialogRef.get(); - if (progressDialog != null) { - progressDialog.dismiss(); + if (activity != null && msg.getData() != null && msg.getData().getString(MESSAGE_TEXT) != null) { + activity.showToast(msg.getData().getString(MESSAGE_TEXT)); } + dismissProgress(); return; } |
