aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/utils
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/utils')
-rw-r--r--main/src/cgeo/geocaching/utils/FileUtils.java28
-rw-r--r--main/src/cgeo/geocaching/utils/MatcherWrapper.java4
-rw-r--r--main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java16
-rw-r--r--main/src/cgeo/geocaching/utils/SimpleHandler.java11
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;
}