diff options
Diffstat (limited to 'main/src/cgeo/geocaching/utils')
| -rw-r--r-- | main/src/cgeo/geocaching/utils/ApplicationSettings.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/CancellableHandler.java | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/ClipboardUtils.java | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/CryptUtils.java | 40 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java | 45 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/GeoDirHandler.java | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/IOUtils.java | 22 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/ImageUtils.java | 15 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/Log.java | 8 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/ProcessUtils.java | 10 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/SimpleHandler.java | 37 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/TextUtils.java | 6 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/TranslationUtils.java | 22 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/UncertainProperty.java | 5 |
15 files changed, 98 insertions, 127 deletions
diff --git a/main/src/cgeo/geocaching/utils/ApplicationSettings.java b/main/src/cgeo/geocaching/utils/ApplicationSettings.java index 99d3142..78fa4f6 100644 --- a/main/src/cgeo/geocaching/utils/ApplicationSettings.java +++ b/main/src/cgeo/geocaching/utils/ApplicationSettings.java @@ -17,7 +17,7 @@ public class ApplicationSettings { */ public static String getPreferencesName() { // There is currently no Android API to get the file name of the shared preferences. Let's hardcode - // it without needing a cgeoapplication instance. + // it without needing a CgeoApplication instance. return "cgeo.geocaching_preferences"; } diff --git a/main/src/cgeo/geocaching/utils/CancellableHandler.java b/main/src/cgeo/geocaching/utils/CancellableHandler.java index 8cf8f28..cb4b9db 100644 --- a/main/src/cgeo/geocaching/utils/CancellableHandler.java +++ b/main/src/cgeo/geocaching/utils/CancellableHandler.java @@ -1,6 +1,6 @@ package cgeo.geocaching.utils; -import cgeo.geocaching.cgeoapplication; +import cgeo.geocaching.CgeoApplication; import android.os.Handler; import android.os.Message; @@ -114,7 +114,7 @@ public abstract class CancellableHandler extends Handler { public static void sendLoadProgressDetail(final Handler handler, final int resourceId) { if (null != handler) { - handler.obtainMessage(UPDATE_LOAD_PROGRESS_DETAIL, cgeoapplication.getInstance().getString(resourceId)).sendToTarget(); + handler.obtainMessage(UPDATE_LOAD_PROGRESS_DETAIL, CgeoApplication.getInstance().getString(resourceId)).sendToTarget(); } } } diff --git a/main/src/cgeo/geocaching/utils/ClipboardUtils.java b/main/src/cgeo/geocaching/utils/ClipboardUtils.java index 67069b2..77250f3 100644 --- a/main/src/cgeo/geocaching/utils/ClipboardUtils.java +++ b/main/src/cgeo/geocaching/utils/ClipboardUtils.java @@ -1,6 +1,6 @@ package cgeo.geocaching.utils; -import cgeo.geocaching.cgeoapplication; +import cgeo.geocaching.CgeoApplication; import android.content.Context; @@ -24,7 +24,7 @@ public final class ClipboardUtils { */ public static void copyToClipboard(final CharSequence text) { // fully qualified name used here to avoid buggy deprecation warning (of javac) on the import statement - final android.text.ClipboardManager clipboard = (android.text.ClipboardManager) cgeoapplication.getInstance().getSystemService(Context.CLIPBOARD_SERVICE); + final android.text.ClipboardManager clipboard = (android.text.ClipboardManager) CgeoApplication.getInstance().getSystemService(Context.CLIPBOARD_SERVICE); clipboard.setText(text); } diff --git a/main/src/cgeo/geocaching/utils/CryptUtils.java b/main/src/cgeo/geocaching/utils/CryptUtils.java index 18a337d..d98585a 100644 --- a/main/src/cgeo/geocaching/utils/CryptUtils.java +++ b/main/src/cgeo/geocaching/utils/CryptUtils.java @@ -1,11 +1,17 @@ package cgeo.geocaching.utils; +import org.apache.commons.lang3.CharEncoding; +import org.apache.commons.lang3.StringUtils; + import android.text.Spannable; import android.text.SpannableStringBuilder; +import java.io.UnsupportedEncodingException; import java.math.BigInteger; +import java.security.GeneralSecurityException; import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; @@ -62,7 +68,7 @@ public final class CryptUtils { public static String rot13(String text) { if (text == null) { - return ""; + return StringUtils.EMPTY; } final StringBuilder result = new StringBuilder(); Rot13Encryption rot13 = new Rot13Encryption(); @@ -76,42 +82,44 @@ public final class CryptUtils { } public static String md5(String text) { - String hashed = ""; - try { final MessageDigest digest = MessageDigest.getInstance("MD5"); - digest.update(text.getBytes(), 0, text.length()); - hashed = new BigInteger(1, digest.digest()).toString(16); - } catch (Exception e) { + digest.update(text.getBytes(CharEncoding.UTF_8), 0, text.length()); + return new BigInteger(1, digest.digest()).toString(16); + } catch (NoSuchAlgorithmException e) { + Log.e("CryptUtils.md5", e); + } catch (UnsupportedEncodingException e) { Log.e("CryptUtils.md5", e); } - return hashed; + return StringUtils.EMPTY; } public static String sha1(String text) { - String hashed = ""; - try { final MessageDigest digest = MessageDigest.getInstance("SHA-1"); - digest.update(text.getBytes(), 0, text.length()); - hashed = new BigInteger(1, digest.digest()).toString(16); - } catch (Exception e) { + digest.update(text.getBytes(CharEncoding.UTF_8), 0, text.length()); + return new BigInteger(1, digest.digest()).toString(16); + } catch (NoSuchAlgorithmException e) { + Log.e("CryptUtils.sha1", e); + } catch (UnsupportedEncodingException e) { Log.e("CryptUtils.sha1", e); } - return hashed; + return StringUtils.EMPTY; } public static byte[] hashHmac(String text, String salt) { byte[] macBytes = {}; try { - final SecretKeySpec secretKeySpec = new SecretKeySpec(salt.getBytes(), "HmacSHA1"); + final SecretKeySpec secretKeySpec = new SecretKeySpec(salt.getBytes(CharEncoding.UTF_8), "HmacSHA1"); final Mac mac = Mac.getInstance("HmacSHA1"); mac.init(secretKeySpec); - macBytes = mac.doFinal(text.getBytes()); - } catch (Exception e) { + macBytes = mac.doFinal(text.getBytes(CharEncoding.UTF_8)); + } catch (GeneralSecurityException e) { + Log.e("CryptUtils.hashHmac", e); + } catch (UnsupportedEncodingException e) { Log.e("CryptUtils.hashHmac", e); } diff --git a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java index 24f375d..b291a8a 100644 --- a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java +++ b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java @@ -1,8 +1,8 @@ package cgeo.geocaching.utils; +import cgeo.geocaching.DataStore; import cgeo.geocaching.MainActivity; import cgeo.geocaching.R; -import cgeo.geocaching.cgData; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.ui.Formatter; @@ -12,8 +12,6 @@ import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.res.Resources; -import android.os.Handler; -import android.os.Message; import java.io.File; import java.util.concurrent.atomic.AtomicBoolean; @@ -34,34 +32,31 @@ public class DatabaseBackupUtils { final Resources res = activity.getResources(); final ProgressDialog dialog = ProgressDialog.show(activity, res.getString(R.string.init_backup_restore), res.getString(R.string.init_restore_running), true, false); final AtomicBoolean restoreSuccessful = new AtomicBoolean(false); - Thread restoreThread = new Thread() { - final Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - dialog.dismiss(); - boolean restored = restoreSuccessful.get(); - String message = restored ? res.getString(R.string.init_restore_success) : res.getString(R.string.init_restore_failed); - ActivityMixin.helpDialog(activity, res.getString(R.string.init_backup_restore), message); - if (activity instanceof MainActivity) { - ((MainActivity) activity).updateCacheCounter(); - } - } - }; - + new Thread() { @Override public void run() { - restoreSuccessful.set(cgData.restoreDatabaseInternal()); - handler.sendMessage(handler.obtainMessage()); + restoreSuccessful.set(DataStore.restoreDatabaseInternal()); + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + dialog.dismiss(); + boolean restored = restoreSuccessful.get(); + String message = restored ? res.getString(R.string.init_restore_success) : res.getString(R.string.init_restore_failed); + ActivityMixin.helpDialog(activity, res.getString(R.string.init_backup_restore), message); + if (activity instanceof MainActivity) { + ((MainActivity) activity).updateCacheCounter(); + } + } + }); } - }; - restoreThread.start(); + }.start(); } public static boolean createBackup(final Activity activity, final Runnable runAfterwards) { final Context context = activity; // avoid overwriting an existing backup with an empty database // (can happen directly after reinstalling the app) - if (cgData.getAllCachesCount() == 0) { + if (DataStore.getAllCachesCount() == 0) { ActivityMixin.helpDialog(activity, context.getString(R.string.init_backup), context.getString(R.string.init_backup_unnecessary)); @@ -74,7 +69,7 @@ public class DatabaseBackupUtils { new Thread() { @Override public void run() { - final String backupFileName = cgData.backupDatabaseInternal(); + final String backupFileName = DataStore.backupDatabaseInternal(); activity.runOnUiThread(new Runnable() { @Override public void run() { @@ -96,8 +91,8 @@ public class DatabaseBackupUtils { } public static File getRestoreFile() { - final File fileSourceFile = cgData.getBackupFileInternal(); - return fileSourceFile.exists() ? fileSourceFile : null; + final File fileSourceFile = DataStore.getBackupFileInternal(); + return fileSourceFile.exists() && fileSourceFile.length() > 0 ? fileSourceFile : null; } public static boolean hasBackup() { diff --git a/main/src/cgeo/geocaching/utils/GeoDirHandler.java b/main/src/cgeo/geocaching/utils/GeoDirHandler.java index a143730..c85648b 100644 --- a/main/src/cgeo/geocaching/utils/GeoDirHandler.java +++ b/main/src/cgeo/geocaching/utils/GeoDirHandler.java @@ -1,7 +1,7 @@ package cgeo.geocaching.utils; +import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.IGeoData; -import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.settings.Settings; import android.os.Handler; @@ -29,7 +29,7 @@ public abstract class GeoDirHandler extends Handler implements IObserver<Object> private static final int STOP_GEO = 1 << 4; private static final int STOP_DIR = 1 << 5; - private static final cgeoapplication app = cgeoapplication.getInstance(); + private static final CgeoApplication app = CgeoApplication.getInstance(); @Override final public void handleMessage(final Message message) { diff --git a/main/src/cgeo/geocaching/utils/IOUtils.java b/main/src/cgeo/geocaching/utils/IOUtils.java deleted file mode 100644 index df90da3..0000000 --- a/main/src/cgeo/geocaching/utils/IOUtils.java +++ /dev/null @@ -1,22 +0,0 @@ -package cgeo.geocaching.utils; - -import java.io.Closeable; -import java.io.IOException; - -final public class IOUtils { - - private IOUtils() { - // utility class - } - - public static void closeQuietly(final Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (final IOException e) { - Log.w("closeQuietly: unable to close " + closeable, e); - } - } - } - -} diff --git a/main/src/cgeo/geocaching/utils/ImageUtils.java b/main/src/cgeo/geocaching/utils/ImageUtils.java index 478be1f..ea4498b 100644 --- a/main/src/cgeo/geocaching/utils/ImageUtils.java +++ b/main/src/cgeo/geocaching/utils/ImageUtils.java @@ -1,8 +1,11 @@ package cgeo.geocaching.utils; -import cgeo.geocaching.cgeoapplication; +import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.compatibility.Compatibility; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; + import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Point; @@ -13,6 +16,7 @@ import android.net.Uri; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @@ -45,7 +49,7 @@ public final class ImageUtils { * @return BitmapDrawable The scaled image */ public static BitmapDrawable scaleBitmapTo(final Bitmap image, final int maxWidth, final int maxHeight) { - final cgeoapplication app = cgeoapplication.getInstance(); + final CgeoApplication app = CgeoApplication.getInstance(); Bitmap result = image; int width = image.getWidth(); int height = image.getHeight(); @@ -81,7 +85,7 @@ public final class ImageUtils { bitmap.compress(format, quality, bos); bos.flush(); bos.close(); - } catch (Exception e) { + } catch (IOException e) { Log.e("ImageHelper.storeBitmap", e); } } @@ -95,7 +99,8 @@ public final class ImageUtils { * boundings * @return filename and path, <tt>null</tt> if something fails */ - public static String readScaleAndWriteImage(final String filePath, final int maxXY) { + @Nullable + public static String readScaleAndWriteImage(@NonNull final String filePath, final int maxXY) { if (maxXY <= 0) { return filePath; } @@ -131,6 +136,7 @@ public final class ImageUtils { * @return the temporary image file to use, or <tt>null</tt> if the media directory could * not be created. * */ + @Nullable public static File getOutputImageFile() { // To be safe, you should check that the SDCard is mounted // using Environment.getExternalStorageState() before doing this. @@ -152,6 +158,7 @@ public final class ImageUtils { return new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"); } + @Nullable public static Uri getOutputImageFileUri() { final File file = getOutputImageFile(); if (file == null) { diff --git a/main/src/cgeo/geocaching/utils/Log.java b/main/src/cgeo/geocaching/utils/Log.java index aa8dbd1..8f96f10 100644 --- a/main/src/cgeo/geocaching/utils/Log.java +++ b/main/src/cgeo/geocaching/utils/Log.java @@ -1,11 +1,15 @@ package cgeo.geocaching.utils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.CharEncoding; + import android.os.Environment; import java.io.BufferedWriter; import java.io.File; -import java.io.FileWriter; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStreamWriter; import java.io.Writer; public final class Log { @@ -107,7 +111,7 @@ public final class Log { } Writer writer = null; try { - writer = new BufferedWriter(new FileWriter(file, true)); + writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true), CharEncoding.UTF_8)); writer.write(msg); } catch (final IOException e) { Log.e("logToFile: cannot write to " + file, e); diff --git a/main/src/cgeo/geocaching/utils/ProcessUtils.java b/main/src/cgeo/geocaching/utils/ProcessUtils.java index 3345ff1..737fb35 100644 --- a/main/src/cgeo/geocaching/utils/ProcessUtils.java +++ b/main/src/cgeo/geocaching/utils/ProcessUtils.java @@ -1,8 +1,8 @@ package cgeo.geocaching.utils; -import cgeo.geocaching.cgeoapplication; +import cgeo.geocaching.CgeoApplication; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import android.content.Intent; import android.content.pm.PackageInfo; @@ -43,7 +43,7 @@ public final class ProcessUtils { * This will find installed applications even without launch intent (e.g. the streetview plugin). */ private static boolean hasPackageInstalled(final String packageName) { - final List<PackageInfo> packs = cgeoapplication.getInstance().getPackageManager().getInstalledPackages(0); + final List<PackageInfo> packs = CgeoApplication.getInstance().getPackageManager().getInstalledPackages(0); for (final PackageInfo packageInfo : packs) { if (packageName.equals(packageInfo.packageName)) { return true; @@ -59,7 +59,7 @@ public final class ProcessUtils { if (packageName == null) { return null; } - final PackageManager packageManager = cgeoapplication.getInstance().getPackageManager(); + final PackageManager packageManager = CgeoApplication.getInstance().getPackageManager(); try { // This can throw an exception where the exception type is only defined on API Level > 3 // therefore surround with try-catch @@ -70,7 +70,7 @@ public final class ProcessUtils { } public static boolean isIntentAvailable(final String intent) { - final PackageManager packageManager = cgeoapplication.getInstance().getPackageManager(); + final PackageManager packageManager = CgeoApplication.getInstance().getPackageManager(); final List<ResolveInfo> list = packageManager.queryIntentActivities( new Intent(intent), PackageManager.MATCH_DEFAULT_ONLY); diff --git a/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java b/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java index 9207c74..22cd4d7 100644 --- a/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java +++ b/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java @@ -26,7 +26,6 @@ public class SimpleCancellableHandler extends CancellableHandler { activity.showToast(msg.getData().getString(MESSAGE_TEXT)); } dismissProgress(); - return; } @Override diff --git a/main/src/cgeo/geocaching/utils/SimpleHandler.java b/main/src/cgeo/geocaching/utils/SimpleHandler.java index b01d0e1..8e0a479 100644 --- a/main/src/cgeo/geocaching/utils/SimpleHandler.java +++ b/main/src/cgeo/geocaching/utils/SimpleHandler.java @@ -3,7 +3,6 @@ package cgeo.geocaching.utils; import cgeo.geocaching.activity.AbstractActivity; import cgeo.geocaching.activity.Progress; -import android.content.res.Resources; import android.os.Handler; import android.os.Message; @@ -15,48 +14,20 @@ public abstract class SimpleHandler extends Handler { protected final WeakReference<Progress> progressDialogRef; public SimpleHandler(final AbstractActivity activity, final Progress progress) { - this.activityRef = new WeakReference<AbstractActivity>(activity); - this.progressDialogRef = new WeakReference<Progress>(progress); + activityRef = new WeakReference<AbstractActivity>(activity); + progressDialogRef = new WeakReference<Progress>(progress); } @Override public void handleMessage(final Message msg) { - AbstractActivity activity = activityRef.get(); + final AbstractActivity activity = activityRef.get(); if (activity != null && msg.getData() != null && msg.getData().getString(MESSAGE_TEXT) != null) { activity.showToast(msg.getData().getString(MESSAGE_TEXT)); } - dismissProgress(); - return; - } - - protected final void showToast(final int resId) { - AbstractActivity activity = activityRef.get(); - if (activity != null) { - Resources res = activity.getResources(); - activity.showToast(res.getText(resId).toString()); - } - } - - protected final void dismissProgress() { - Progress progressDialog = progressDialogRef.get(); + final Progress progressDialog = progressDialogRef.get(); if (progressDialog != null) { progressDialog.dismiss(); } } - protected final void setProgressMessage(final String txt) { - Progress progressDialog = progressDialogRef.get(); - if (progressDialog != null) { - progressDialog.setMessage(txt); - } - } - - protected final void finishActivity() { - AbstractActivity activity = activityRef.get(); - if (activity != null) { - activity.finish(); - } - - } - } diff --git a/main/src/cgeo/geocaching/utils/TextUtils.java b/main/src/cgeo/geocaching/utils/TextUtils.java index c9d4958..302a65d 100644 --- a/main/src/cgeo/geocaching/utils/TextUtils.java +++ b/main/src/cgeo/geocaching/utils/TextUtils.java @@ -3,6 +3,8 @@ */ package cgeo.geocaching.utils; +import org.eclipse.jdt.annotation.Nullable; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -34,7 +36,7 @@ public final class TextUtils { * Find the last occurring value * @return defaultValue or the n-th group if the pattern matches (trimmed if wanted) */ - public static String getMatch(final String data, final Pattern p, final boolean trim, final int group, final String defaultValue, final boolean last) { + public static String getMatch(@Nullable final String data, final Pattern p, final boolean trim, final int group, final String defaultValue, final boolean last) { if (data != null) { String result = null; @@ -87,7 +89,7 @@ public final class TextUtils { * Value to return if the pattern is not found * @return defaultValue or the first group if the pattern matches (trimmed) */ - public static String getMatch(final String data, final Pattern p, final String defaultValue) { + public static String getMatch(@Nullable final String data, final Pattern p, final String defaultValue) { return TextUtils.getMatch(data, p, true, 1, defaultValue, false); } diff --git a/main/src/cgeo/geocaching/utils/TranslationUtils.java b/main/src/cgeo/geocaching/utils/TranslationUtils.java index 1224f7e..619db08 100644 --- a/main/src/cgeo/geocaching/utils/TranslationUtils.java +++ b/main/src/cgeo/geocaching/utils/TranslationUtils.java @@ -3,6 +3,8 @@ package cgeo.geocaching.utils; import cgeo.geocaching.activity.AbstractActivity; import cgeo.geocaching.network.Network; +import org.apache.commons.lang3.StringUtils; + import android.content.Intent; import android.net.Uri; @@ -11,12 +13,12 @@ import android.net.Uri; */ public final class TranslationUtils { - private static final String translationWebsite = "http://translate.google.com/"; - private static final String translationForceClassicMode = "?vi=c"; - private static final String translationAutoSelect = "#auto"; - private static final String translationFieldSeparator = "|"; + private static final String TRANSLATION_WEBSITE = "http://translate.google.com/"; + private static final String TRANSLATION_FORCE_CLASSIC_MODE = "?vi=c"; + private static final String TRANSLATION_AUTO_SELECT = "#auto"; + private static final String TRANSLATION_FIELD_SEPARATOR = "|"; - public static final int translationTextLengthToWarn = 500; + public static final int TRANSLATION_TEXT_LENGTH_WARN = 500; private static final String TRANSLATION_APP = "com.google.android.apps.translate"; private TranslationUtils() { @@ -24,8 +26,8 @@ public final class TranslationUtils { } /** - * Build a URI for Google Translate - * + * Build a URI for Google Translate. + * * @param toLang * The two-letter lowercase ISO language codes as defined by ISO 639-1 * @param text @@ -36,13 +38,13 @@ public final class TranslationUtils { String content = Network.encode(text); // the app works better without the "+", the website works better with "+", therefore assume using the app if installed if (ProcessUtils.isLaunchable(TRANSLATION_APP)) { - content = content.replace("+", "%20"); + content = StringUtils.replace(content, "+", "%20"); } - return translationWebsite + translationForceClassicMode + translationAutoSelect + translationFieldSeparator + toLang + translationFieldSeparator + content; + return TRANSLATION_WEBSITE + TRANSLATION_FORCE_CLASSIC_MODE + TRANSLATION_AUTO_SELECT + TRANSLATION_FIELD_SEPARATOR + toLang + TRANSLATION_FIELD_SEPARATOR + content; } /** - * Send Intent for Google Translate. Can be caught by Google Translate App or browser + * Send Intent for Google Translate. Can be caught by Google Translate App or browser. * * @param toLang * The two-letter lowercase ISO language codes as defined by ISO 639-1 diff --git a/main/src/cgeo/geocaching/utils/UncertainProperty.java b/main/src/cgeo/geocaching/utils/UncertainProperty.java index 5f86662..e8686e3 100644 --- a/main/src/cgeo/geocaching/utils/UncertainProperty.java +++ b/main/src/cgeo/geocaching/utils/UncertainProperty.java @@ -2,6 +2,11 @@ package cgeo.geocaching.utils; import cgeo.geocaching.connector.gc.Tile; +/** + * Property with certainty. When merging properties, the one with higher certainty wins. + * + * @param <T> + */ public class UncertainProperty<T> { private final T value; |
