aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-10-14 22:57:41 +0200
committerSamuel Tardieu <sam@rfc1149.net>2014-10-22 20:43:21 +0200
commit1da80caa52fbb6a66db92c93298cf34390ac3676 (patch)
tree26f9995fe0722e939266afba82ed4f2c2109f462
parent9ee559cba58e433bf5e5cdaebcf1e34697241f70 (diff)
downloadcgeo-1da80caa52fbb6a66db92c93298cf34390ac3676.zip
cgeo-1da80caa52fbb6a66db92c93298cf34390ac3676.tar.gz
cgeo-1da80caa52fbb6a66db92c93298cf34390ac3676.tar.bz2
fix #4416: new preferences page on geocaching.com
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCLogin.java63
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java5
2 files changed, 7 insertions, 61 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCLogin.java b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
index 58e5c49..d16a3cc 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCLogin.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
@@ -27,43 +27,15 @@ import android.graphics.drawable.Drawable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.Collections;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
+import java.util.GregorianCalendar;
public class GCLogin extends AbstractLogin {
- private static final String DEFAULT_CUSTOM_DATE_FORMAT = "MM/dd/yyyy";
-
private final static String ENGLISH = "<a href=\"#\">English &#9660;</a>";
- private final static Map<String, SimpleDateFormat> GC_CUSTOM_DATE_FORMATS;
public static final String LANGUAGE_CHANGE_URI = "http://www.geocaching.com/my/souvenirs.aspx";
- static {
- final String[] formats = new String[] {
- DEFAULT_CUSTOM_DATE_FORMAT,
- "yyyy-MM-dd",
- "yyyy/MM/dd",
- "dd.MM.yyyy",
- "dd/MMM/yyyy",
- "dd.MMM.yyyy",
- "MMM/dd/yyyy",
- "dd MMM yy",
- "dd/MM/yyyy"
- };
-
- final Map<String, SimpleDateFormat> map = new HashMap<>();
-
- for (final String format : formats) {
- map.put(format, new SimpleDateFormat(format, Locale.ENGLISH));
- }
-
- GC_CUSTOM_DATE_FORMATS = Collections.unmodifiableMap(map);
- }
-
private GCLogin() {
// singleton
}
@@ -293,7 +265,7 @@ public class GCLogin extends AbstractLogin {
*/
private static void detectGcCustomDate() {
- final String result = Network.getResponseData(Network.getRequest("http://www.geocaching.com/account/ManagePreferences.aspx"));
+ final String result = Network.getResponseData(Network.getRequest("https://www.geocaching.com/myaccount/settings/preferences"));
if (null == result) {
Log.w("Login.detectGcCustomDate: result is null");
@@ -307,40 +279,15 @@ public class GCLogin extends AbstractLogin {
}
public static Date parseGcCustomDate(final String input, final String format) throws ParseException {
- if (StringUtils.isBlank(input)) {
- throw new ParseException("Input is null", 0);
- }
-
- final String trimmed = input.trim();
-
- if (GC_CUSTOM_DATE_FORMATS.containsKey(format)) {
- try {
- return GC_CUSTOM_DATE_FORMATS.get(format).parse(trimmed);
- } catch (final ParseException e) {
- }
- }
-
- for (final SimpleDateFormat sdf : GC_CUSTOM_DATE_FORMATS.values()) {
- try {
- return sdf.parse(trimmed);
- } catch (final ParseException e) {
- }
- }
-
- throw new ParseException("No matching pattern", 0);
+ return new SimpleDateFormat(format).parse(input.trim());
}
public static Date parseGcCustomDate(final String input) throws ParseException {
return parseGcCustomDate(input, Settings.getGcCustomDate());
}
- public static SimpleDateFormat getCustomGcDateFormat() {
- final String format = Settings.getGcCustomDate();
- if (GC_CUSTOM_DATE_FORMATS.containsKey(format)) {
- return GC_CUSTOM_DATE_FORMATS.get(format);
- }
-
- return GC_CUSTOM_DATE_FORMATS.get(DEFAULT_CUSTOM_DATE_FORMAT);
+ public static String formatGcCustomDate(int year, int month, int day) {
+ return new SimpleDateFormat(Settings.getGcCustomDate()).format(new GregorianCalendar(year, month - 1, day).getTime());
}
/**
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index c771049..7e98b40 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -66,7 +66,6 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.EnumSet;
-import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -1061,7 +1060,7 @@ public abstract class GCParser {
"__EVENTARGUMENT", "",
"__LASTFOCUS", "",
"ctl00$ContentBody$LogBookPanel1$ddLogType", Integer.toString(logType.id),
- "ctl00$ContentBody$LogBookPanel1$uxDateVisited", GCLogin.getCustomGcDateFormat().format(new GregorianCalendar(year, month - 1, day).getTime()),
+ "ctl00$ContentBody$LogBookPanel1$uxDateVisited", GCLogin.formatGcCustomDate(year, month, day),
"ctl00$ContentBody$LogBookPanel1$uxDateVisited$Month", Integer.toString(month),
"ctl00$ContentBody$LogBookPanel1$uxDateVisited$Day", Integer.toString(day),
"ctl00$ContentBody$LogBookPanel1$uxDateVisited$Year", Integer.toString(year),
@@ -1257,7 +1256,7 @@ public abstract class GCParser {
params.put("ctl00$ContentBody$LogBookPanel1$uxDateVisited", "");
} else {
params.put("ctl00$ContentBody$LogBookPanel1$DateTimeLogged", Integer.toString(month) + "/" + Integer.toString(day) + "/" + Integer.toString(year));
- params.put("ctl00$ContentBody$LogBookPanel1$uxDateVisited", GCLogin.getCustomGcDateFormat().format(new GregorianCalendar(year, month - 1, day).getTime()));
+ params.put("ctl00$ContentBody$LogBookPanel1$uxDateVisited", GCLogin.formatGcCustomDate(year, month, day));
}
params.put(
"ctl00$ContentBody$LogBookPanel1$DateTimeLogged$Day", Integer.toString(day),