diff options
15 files changed, 169 insertions, 173 deletions
diff --git a/main/src/cgeo/geocaching/connector/AbstractLogin.java b/main/src/cgeo/geocaching/connector/AbstractLogin.java new file mode 100644 index 0000000..6527685 --- /dev/null +++ b/main/src/cgeo/geocaching/connector/AbstractLogin.java @@ -0,0 +1,77 @@ +package cgeo.geocaching.connector; + +import cgeo.geocaching.CgeoApplication; +import cgeo.geocaching.R; +import cgeo.geocaching.enumerations.StatusCode; +import cgeo.geocaching.network.Cookies; +import cgeo.geocaching.settings.Settings; + +import org.apache.commons.lang3.StringUtils; + +public abstract class AbstractLogin { + + /** + * {@code true} if logged in, {@code false} otherwise + */ + private boolean actualLoginStatus = false; + private String actualUserName = StringUtils.EMPTY; + /** + * Number of caches found. An unknown number is signaled by the value -1, while 0 really indicates zero caches found + * by the user. + */ + private int actualCachesFound = -1; + private String actualStatus = StringUtils.EMPTY; + + public void setActualCachesFound(final int found) { + actualCachesFound = found; + } + + public String getActualStatus() { + return actualStatus; + } + + protected void setActualStatus(final String status) { + actualStatus = status; + } + + public boolean isActualLoginStatus() { + return actualLoginStatus; + } + + protected void setActualLoginStatus(boolean loginStatus) { + actualLoginStatus = loginStatus; + } + + public String getActualUserName() { + return actualUserName; + } + + protected void setActualUserName(String userName) { + actualUserName = userName; + } + + public int getActualCachesFound() { + return actualCachesFound; + } + + protected void resetLoginStatus() { + Cookies.clearCookies(); + Settings.setCookieStore(null); + + setActualLoginStatus(false); + } + + protected void clearLoginInfo() { + resetLoginStatus(); + + setActualCachesFound(-1); + setActualStatus(CgeoApplication.getInstance().getString(R.string.err_login)); + } + + public StatusCode login() { + return login(true); + } + + protected abstract StatusCode login(boolean retry); + +} diff --git a/main/src/cgeo/geocaching/connector/ec/ECApi.java b/main/src/cgeo/geocaching/connector/ec/ECApi.java index d458e88..f91bcdb 100644 --- a/main/src/cgeo/geocaching/connector/ec/ECApi.java +++ b/main/src/cgeo/geocaching/connector/ec/ECApi.java @@ -99,7 +99,7 @@ public class ECApi { return new LogResult(StatusCode.LOG_POST_ERROR_EC, ""); } if (!isRetry && response.getStatusLine().getStatusCode() == 403) { - if (ECLogin.login() == StatusCode.NO_ERROR) { + if (ECLogin.getInstance().login() == StatusCode.NO_ERROR) { apiRequest(uri, params, true); } } @@ -132,7 +132,7 @@ public class ECApi { return null; } if (!isRetry && response.getStatusLine().getStatusCode() == 403) { - if (ECLogin.login() == StatusCode.NO_ERROR) { + if (ECLogin.getInstance().login() == StatusCode.NO_ERROR) { apiRequest(uri, params, true); } } diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java index eb2f164..ee538a3 100644 --- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java +++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java @@ -124,7 +124,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode, @Override public boolean login(Handler handler, Context fromActivity) { // login - final StatusCode status = ECLogin.login(); + final StatusCode status = ECLogin.getInstance().login(); if (status == StatusCode.NO_ERROR) { CgeoApplication.getInstance().checkLogin = false; @@ -144,22 +144,22 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode, @Override public String getUserName() { - return ECLogin.getActualUserName(); + return ECLogin.getInstance().getActualUserName(); } @Override public int getCachesFound() { - return ECLogin.getActualCachesFound(); + return ECLogin.getInstance().getActualCachesFound(); } @Override public String getLoginStatusString() { - return ECLogin.getActualStatus(); + return ECLogin.getInstance().getActualStatus(); } @Override public boolean isLoggedIn() { - return ECLogin.isActualLoginStatus(); + return ECLogin.getInstance().isActualLoginStatus(); } @Override diff --git a/main/src/cgeo/geocaching/connector/ec/ECLogin.java b/main/src/cgeo/geocaching/connector/ec/ECLogin.java index 2fda8c3..dc19f98 100644 --- a/main/src/cgeo/geocaching/connector/ec/ECLogin.java +++ b/main/src/cgeo/geocaching/connector/ec/ECLogin.java @@ -2,6 +2,7 @@ package cgeo.geocaching.connector.ec; import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.R; +import cgeo.geocaching.connector.AbstractLogin; import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.network.Cookies; import cgeo.geocaching.network.Network; @@ -18,20 +19,22 @@ import org.eclipse.jdt.annotation.Nullable; import java.util.regex.Matcher; -public abstract class ECLogin { +public class ECLogin extends AbstractLogin { - // false = not logged in - private static boolean actualLoginStatus = false; - private static String actualUserName = StringUtils.EMPTY; - private static int actualCachesFound = -1; - private static String actualStatus = StringUtils.EMPTY; + private ECLogin() { + // singleton + } + private static class SingletonHolder { + private static ECLogin INSTANCE = new ECLogin(); + } - public static StatusCode login() { - return login(true); + public static ECLogin getInstance() { + return SingletonHolder.INSTANCE; } - private static StatusCode login(boolean retry) { + @Override + protected StatusCode login(boolean retry) { final ImmutablePair<String, String> login = Settings.getECLogin(); if (StringUtils.isEmpty(login.left) || StringUtils.isEmpty(login.right)) { @@ -40,7 +43,7 @@ public abstract class ECLogin { return StatusCode.NO_LOGIN_INFO_STORED; } - ECLogin.setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working)); + setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working)); HttpResponse loginResponse = Network.getRequest("https://extremcaching.com/community/profil1"); String loginData = Network.getResponseData(loginResponse); @@ -49,7 +52,7 @@ public abstract class ECLogin { return StatusCode.CONNECTION_FAILED_EC; // no login page } - if (ECLogin.getLoginStatus(loginData)) { + if (getLoginStatus(loginData)) { Log.i("Already logged in Extremcaching.com as " + login.left); return StatusCode.NO_ERROR; // logged in } @@ -77,7 +80,7 @@ public abstract class ECLogin { } assert loginData != null; // Caught above - if (ECLogin.getLoginStatus(loginData)) { + if (getLoginStatus(loginData)) { Log.i("Successfully logged in Extremcaching.com as " + login.left); Settings.setCookieStore(Cookies.dumpCookieStore()); @@ -98,51 +101,6 @@ public abstract class ECLogin { return StatusCode.UNKNOWN_ERROR; // can't login } - private static void resetLoginStatus() { - Cookies.clearCookies(); - Settings.setCookieStore(null); - - setActualLoginStatus(false); - } - - private static void clearLoginInfo() { - resetLoginStatus(); - - setActualCachesFound(-1); - setActualStatus(CgeoApplication.getInstance().getString(R.string.err_login)); - } - - static void setActualCachesFound(final int found) { - actualCachesFound = found; - } - - public static String getActualStatus() { - return actualStatus; - } - - private static void setActualStatus(final String status) { - actualStatus = status; - } - - public static boolean isActualLoginStatus() { - return actualLoginStatus; - } - - private static void setActualLoginStatus(boolean loginStatus) { - actualLoginStatus = loginStatus; - } - - public static String getActualUserName() { - return actualUserName; - } - - private static void setActualUserName(String userName) { - actualUserName = userName; - } - - public static int getActualCachesFound() { - return actualCachesFound; - } /** * Check if the user has been logged in when he retrieved the data. @@ -150,7 +108,7 @@ public abstract class ECLogin { * @param page * @return <code>true</code> if user is logged in, <code>false</code> otherwise */ - public static boolean getLoginStatus(@Nullable final String page) { + public boolean getLoginStatus(@Nullable final String page) { if (StringUtils.isBlank(page)) { Log.e("ECLogin.getLoginStatus: No page given"); return false; diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java index 58094ed..3faebad 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java @@ -297,7 +297,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode, @Override public boolean login(Handler handler, Context fromActivity) { // login - final StatusCode status = GCLogin.login(); + final StatusCode status = GCLogin.getInstance().login(); if (status == StatusCode.NO_ERROR) { CgeoApplication.getInstance().checkLogin = false; @@ -318,22 +318,22 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode, @Override public String getUserName() { - return GCLogin.getActualUserName(); + return GCLogin.getInstance().getActualUserName(); } @Override public int getCachesFound() { - return GCLogin.getActualCachesFound(); + return GCLogin.getInstance().getActualCachesFound(); } @Override public String getLoginStatusString() { - return GCLogin.getActualStatus(); + return GCLogin.getInstance().getActualStatus(); } @Override public boolean isLoggedIn() { - return GCLogin.isActualLoginStatus(); + return GCLogin.getInstance().isActualLoginStatus(); } @Override diff --git a/main/src/cgeo/geocaching/connector/gc/GCLogin.java b/main/src/cgeo/geocaching/connector/gc/GCLogin.java index 53be668..3b143a3 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCLogin.java +++ b/main/src/cgeo/geocaching/connector/gc/GCLogin.java @@ -2,6 +2,7 @@ package cgeo.geocaching.connector.gc; import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.R; +import cgeo.geocaching.connector.AbstractLogin; import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.network.Cookies; import cgeo.geocaching.network.HtmlImage; @@ -13,6 +14,7 @@ import cgeo.geocaching.utils.MatcherWrapper; import cgeo.geocaching.utils.TextUtils; import ch.boye.httpclientandroidlib.HttpResponse; + import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -29,18 +31,12 @@ import java.util.HashMap; import java.util.Locale; import java.util.Map; -public abstract class GCLogin { +public class GCLogin extends AbstractLogin { private static final String DEFAULT_CUSTOM_DATE_FORMAT = "MM/dd/yyyy"; private final static String ENGLISH = "<a href=\"#\">English▼</a>"; - // false = not logged in - private static boolean actualLoginStatus = false; - private static String actualUserName = StringUtils.EMPTY; - private static int actualCachesFound = -1; - private static String actualStatus = StringUtils.EMPTY; - private final static Map<String, SimpleDateFormat> GC_CUSTOM_DATE_FORMATS; public static final String LANGUAGE_CHANGE_URI = "http://www.geocaching.com/my/souvenirs.aspx"; @@ -64,11 +60,20 @@ public abstract class GCLogin { GC_CUSTOM_DATE_FORMATS = Collections.unmodifiableMap(map); } - public static StatusCode login() { - return login(true); + private GCLogin() { + // singleton + } + + public static GCLogin getInstance() { + return SingletonHolder.INSTANCE; } - private static StatusCode login(boolean retry) { + private static class SingletonHolder { + private static final GCLogin INSTANCE = new GCLogin(); + } + + @Override + protected StatusCode login(boolean retry) { final ImmutablePair<String, String> login = Settings.getGcLogin(); if (StringUtils.isEmpty(login.left) || StringUtils.isEmpty(login.right)) { @@ -77,7 +82,7 @@ public abstract class GCLogin { return StatusCode.NO_LOGIN_INFO_STORED; } - GCLogin.setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working)); + setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working)); HttpResponse loginResponse = Network.getRequest("https://www.geocaching.com/login/default.aspx"); String loginData = Network.getResponseData(loginResponse); if (loginResponse != null && loginResponse.getStatusLine().getStatusCode() == 503 && TextUtils.matches(loginData, GCConstants.PATTERN_MAINTENANCE)) { @@ -86,12 +91,12 @@ public abstract class GCLogin { if (StringUtils.isBlank(loginData)) { Log.e("Login.login: Failed to retrieve login page (1st)"); - return StatusCode.CONNECTION_FAILED; // no loginpage + return StatusCode.CONNECTION_FAILED; // no login page } - if (GCLogin.getLoginStatus(loginData)) { + if (getLoginStatus(loginData)) { Log.i("Already logged in Geocaching.com as " + login.left + " (" + Settings.getMemberStatus() + ')'); - GCLogin.switchToEnglish(loginData); + switchToEnglish(loginData); return StatusCode.NO_ERROR; // logged in } @@ -122,10 +127,10 @@ public abstract class GCLogin { } assert loginData != null; // Caught above - if (GCLogin.getLoginStatus(loginData)) { + if (getLoginStatus(loginData)) { Log.i("Successfully logged in Geocaching.com as " + login.left + " (" + Settings.getMemberStatus() + ')'); - GCLogin.switchToEnglish(loginData); + switchToEnglish(loginData); Settings.setCookieStore(Cookies.dumpCookieStore()); return StatusCode.NO_ERROR; // logged in @@ -143,14 +148,14 @@ public abstract class GCLogin { Log.i("Failed to log in Geocaching.com as " + login.left + " for some unknown reason"); if (retry) { - GCLogin.switchToEnglish(loginData); + switchToEnglish(loginData); return login(false); } return StatusCode.UNKNOWN_ERROR; // can't login } - public static StatusCode logout() { + public StatusCode logout() { final HttpResponse logoutResponse = Network.getRequest("https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fdefault.aspx%3f"); final String logoutData = Network.getResponseData(logoutResponse); if (logoutResponse != null && logoutResponse.getStatusLine().getStatusCode() == 503 && TextUtils.matches(logoutData, GCConstants.PATTERN_MAINTENANCE)) { @@ -162,51 +167,6 @@ public abstract class GCLogin { return StatusCode.NO_ERROR; } - private static void resetLoginStatus() { - Cookies.clearCookies(); - Settings.setCookieStore(null); - - setActualLoginStatus(false); - } - - private static void clearLoginInfo() { - resetLoginStatus(); - - setActualCachesFound(-1); - setActualStatus(CgeoApplication.getInstance().getString(R.string.err_login)); - } - - static void setActualCachesFound(final int found) { - actualCachesFound = found; - } - - public static String getActualStatus() { - return actualStatus; - } - - private static void setActualStatus(final String status) { - actualStatus = status; - } - - public static boolean isActualLoginStatus() { - return actualLoginStatus; - } - - private static void setActualLoginStatus(boolean loginStatus) { - actualLoginStatus = loginStatus; - } - - public static String getActualUserName() { - return actualUserName; - } - - private static void setActualUserName(String userName) { - actualUserName = userName; - } - - public static int getActualCachesFound() { - return actualCachesFound; - } /** * Check if the user has been logged in when he retrieved the data. @@ -214,7 +174,7 @@ public abstract class GCLogin { * @param page * @return <code>true</code> if user is logged in, <code>false</code> otherwise */ - public static boolean getLoginStatus(@Nullable final String page) { + public boolean getLoginStatus(@Nullable final String page) { if (StringUtils.isBlank(page)) { Log.e("Login.checkLogin: No page given"); return false; @@ -253,7 +213,7 @@ public abstract class GCLogin { return false; } - private static void switchToEnglish(String previousPage) { + private void switchToEnglish(String previousPage) { if (previousPage != null && previousPage.contains(ENGLISH)) { Log.i("Geocaching.com language already set to English"); // get find count @@ -277,7 +237,7 @@ public abstract class GCLogin { } } - public static BitmapDrawable downloadAvatarAndGetMemberStatus() { + public BitmapDrawable downloadAvatarAndGetMemberStatus() { try { final String responseData = StringUtils.defaultString(Network.getResponseData(Network.getRequest("http://www.geocaching.com/my/"))); final String profile = TextUtils.replaceWhitespace(responseData); @@ -455,7 +415,7 @@ public abstract class GCLogin { * @param uri * @return */ - public static String postRequestLogged(final String uri, final Parameters params) { + public String postRequestLogged(final String uri, final Parameters params) { final String data = Network.getResponseData(Network.postRequest(uri, params)); if (getLoginStatus(data)) { @@ -478,7 +438,7 @@ public abstract class GCLogin { * @return */ @Nullable - public static String getRequestLogged(@NonNull final String uri, @Nullable final Parameters params) { + public String getRequestLogged(@NonNull final String uri, @Nullable final Parameters params) { final HttpResponse response = Network.getRequest(uri, params); final String data = Network.getResponseData(response, canRemoveWhitespace(uri)); @@ -514,4 +474,5 @@ public abstract class GCLogin { final String sessionToken = TextUtils.getMatch(data, GCConstants.PATTERN_SESSIONTOKEN, ""); return new String[] { userSession, sessionToken }; } + } diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java index f982582..ce1a74b 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCParser.java +++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java @@ -785,8 +785,8 @@ public abstract class GCParser { "__EVENTARGUMENT", ""); GCLogin.putViewstates(params, viewstates); - final String page = GCLogin.postRequestLogged(uri, params); - if (!GCLogin.getLoginStatus(page)) { + final String page = GCLogin.getInstance().postRequestLogged(uri, params); + if (!GCLogin.getInstance().getLoginStatus(page)) { Log.e("GCParser.postLogTrackable: Can not log in geocaching"); return search; } @@ -850,7 +850,7 @@ public abstract class GCParser { final String uri = "http://www.geocaching.com/seek/nearest.aspx"; final String fullUri = uri + "?" + addFToParams(params, my, true); - final String page = GCLogin.getRequestLogged(uri, addFToParams(params, my, true)); + final String page = GCLogin.getInstance().getRequestLogged(uri, addFToParams(params, my, true)); if (StringUtils.isBlank(page)) { Log.e("GCParser.searchByAny: No data from server"); @@ -866,7 +866,7 @@ public abstract class GCParser { final SearchResult search = searchResult.filterSearchResults(Settings.isExcludeDisabledCaches(), false, cacheType); - GCLogin.getLoginStatus(page); + GCLogin.getInstance().getLoginStatus(page); return search; } @@ -973,7 +973,7 @@ public abstract class GCParser { params.put("id", id); } - final String page = GCLogin.getRequestLogged("http://www.geocaching.com/track/details.aspx", params); + final String page = GCLogin.getInstance().getRequestLogged("http://www.geocaching.com/track/details.aspx", params); if (StringUtils.isBlank(page)) { Log.e("GCParser.searchTrackable: No data from server"); @@ -994,7 +994,7 @@ public abstract class GCParser { final Parameters params = new Parameters(); - final String page = GCLogin.getRequestLogged("http://www.geocaching.com/pocket/default.aspx", params); + final String page = GCLogin.getInstance().getRequestLogged("http://www.geocaching.com/pocket/default.aspx", params); if (StringUtils.isBlank(page)) { Log.e("GCParser.searchPocketQueryList: No data from server"); @@ -1091,8 +1091,8 @@ public abstract class GCParser { } final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/seek/log.aspx").encodedQuery("ID=" + cacheid).build().toString(); - String page = GCLogin.postRequestLogged(uri, params); - if (!GCLogin.getLoginStatus(page)) { + String page = GCLogin.getInstance().postRequestLogged(uri, params); + if (!GCLogin.getInstance().getLoginStatus(page)) { Log.e("GCParser.postLog: Cannot log in geocaching"); return new ImmutablePair<StatusCode, String>(StatusCode.NOT_LOGGED_IN, ""); } @@ -1156,10 +1156,10 @@ public abstract class GCParser { DataStore.saveVisitDate(geocode); } - GCLogin.getLoginStatus(page); + GCLogin.getInstance().getLoginStatus(page); // the log-successful-page contains still the old value - if (GCLogin.getActualCachesFound() >= 0) { - GCLogin.setActualCachesFound(GCLogin.getActualCachesFound() + 1); + if (GCLogin.getInstance().getActualCachesFound() >= 0) { + GCLogin.getInstance().setActualCachesFound(GCLogin.getInstance().getActualCachesFound() + 1); } final String logID = TextUtils.getMatch(page, GCConstants.PATTERN_LOG_IMAGE_UPLOAD, ""); @@ -1190,7 +1190,7 @@ public abstract class GCParser { public static ImmutablePair<StatusCode, String> uploadLogImage(final String logId, final String caption, final String description, final Uri imageUri) { final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/seek/upload.aspx").encodedQuery("LID=" + logId).build().toString(); - final String page = GCLogin.getRequestLogged(uri, null); + final String page = GCLogin.getInstance().getRequestLogged(uri, null); if (StringUtils.isBlank(page)) { Log.e("GCParser.uploadLogImage: No data from server"); return new ImmutablePair<StatusCode, String>(StatusCode.UNKNOWN_ERROR, null); @@ -1272,8 +1272,8 @@ public abstract class GCParser { "ctl00$ContentBody$uxVistOtherListingGC", ""); final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/track/log.aspx").encodedQuery("wid=" + tbid).build().toString(); - final String page = GCLogin.postRequestLogged(uri, params); - if (!GCLogin.getLoginStatus(page)) { + final String page = GCLogin.getInstance().postRequestLogged(uri, params); + if (!GCLogin.getInstance().getLoginStatus(page)) { Log.e("GCParser.postLogTrackable: Cannot log in geocaching"); return StatusCode.NOT_LOGGED_IN; } @@ -1302,7 +1302,7 @@ public abstract class GCParser { */ static boolean addToWatchlist(final Geocache cache) { final String uri = "http://www.geocaching.com/my/watchlist.aspx?w=" + cache.getCacheId(); - final String page = GCLogin.postRequestLogged(uri, null); + final String page = GCLogin.getInstance().postRequestLogged(uri, null); if (StringUtils.isBlank(page)) { Log.e("GCParser.addToWatchlist: No data from server"); @@ -1328,7 +1328,7 @@ public abstract class GCParser { */ static boolean removeFromWatchlist(final Geocache cache) { final String uri = "http://www.geocaching.com/my/watchlist.aspx?ds=1&action=rem&id=" + cache.getCacheId(); - String page = GCLogin.postRequestLogged(uri, null); + String page = GCLogin.getInstance().postRequestLogged(uri, null); if (StringUtils.isBlank(page)) { Log.e("GCParser.removeFromWatchlist: No data from server"); @@ -1364,7 +1364,7 @@ public abstract class GCParser { params.put("log", log); params.put("numlogs", numlogs); - return GCLogin.getRequestLogged("http://www.geocaching.com/seek/cache_details.aspx", params); + return GCLogin.getInstance().getRequestLogged("http://www.geocaching.com/seek/cache_details.aspx", params); } /** diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java index f52a192..4da480a 100644 --- a/main/src/cgeo/geocaching/export/FieldnoteExport.java +++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java @@ -175,16 +175,16 @@ class FieldnoteExport extends AbstractExport { if (upload) { publishProgress(STATUS_UPLOAD); - if (!GCLogin.isActualLoginStatus()) { + if (!GCLogin.getInstance().isActualLoginStatus()) { // no need to upload (possibly large file) if we're not logged in - final StatusCode loginState = GCLogin.login(); + final StatusCode loginState = GCLogin.getInstance().login(); if (loginState != StatusCode.NO_ERROR) { Log.e("FieldnoteExport.ExportTask upload: Login failed"); } } final String uri = "http://www.geocaching.com/my/uploadfieldnotes.aspx"; - final String page = GCLogin.getRequestLogged(uri, null); + final String page = GCLogin.getInstance().getRequestLogged(uri, null); if (StringUtils.isBlank(page)) { Log.e("FieldnoteExport.ExportTask get page: No data from server"); diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java index d331a73..657b897 100644 --- a/main/src/cgeo/geocaching/maps/CGeoMap.java +++ b/main/src/cgeo/geocaching/maps/CGeoMap.java @@ -1180,7 +1180,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto searchResult = ConnectorFactory.searchByViewport(viewport.resize(0.8), tokens); downloaded = true; if (searchResult.getError() == StatusCode.NOT_LOGGED_IN && Settings.isGCConnectorActive()) { - GCLogin.login(); + GCLogin.getInstance().login(); tokens = null; } else { break; diff --git a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java index f4f2fc7..a1497bb 100644 --- a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java @@ -29,7 +29,7 @@ public class CheckECCredentialsPreference extends AbstractCheckCredentialsPrefer @Override protected Object login() { - final StatusCode loginResult = ECLogin.login(); + final StatusCode loginResult = ECLogin.getInstance().login(); Object payload = loginResult; if (loginResult == StatusCode.NO_ERROR) { payload = null; diff --git a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java index 566ed7c..400f898 100644 --- a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java @@ -29,11 +29,11 @@ public class CheckGcCredentialsPreference extends AbstractCheckCredentialsPrefer @Override protected Object login() { - final StatusCode loginResult = GCLogin.login(); + final StatusCode loginResult = GCLogin.getInstance().login(); Object payload = loginResult; if (loginResult == StatusCode.NO_ERROR) { GCLogin.detectGcCustomDate(); - payload = GCLogin.downloadAvatarAndGetMemberStatus(); + payload = GCLogin.getInstance().downloadAvatarAndGetMemberStatus(); } return payload; } diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index f9c23b3..ca8b938 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -528,8 +528,8 @@ public class SettingsActivity extends PreferenceActivity { } if ((isPreference(preference, R.string.pref_username) && !stringValue.equals(Settings.getUsername())) || (isPreference(preference, R.string.pref_password) && !stringValue.equals(Settings.getGcLogin().getRight()))) { // reset log-in if gc user or password is changed - if (GCLogin.isActualLoginStatus()) { - GCLogin.logout(); + if (GCLogin.getInstance().isActualLoginStatus()) { + GCLogin.getInstance().logout(); } CgeoApplication.getInstance().checkLogin = true; } diff --git a/tests/src/cgeo/geocaching/cgeoApplicationTest.java b/tests/src/cgeo/geocaching/cgeoApplicationTest.java index 960ddb6..c4737db 100644 --- a/tests/src/cgeo/geocaching/cgeoApplicationTest.java +++ b/tests/src/cgeo/geocaching/cgeoApplicationTest.java @@ -2,8 +2,8 @@ package cgeo.geocaching; import cgeo.CGeoTestCase; import cgeo.geocaching.connector.ConnectorFactory; -import cgeo.geocaching.connector.gc.GCParser; import cgeo.geocaching.connector.gc.GCLogin; +import cgeo.geocaching.connector.gc.GCParser; import cgeo.geocaching.connector.gc.Tile; import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy; @@ -51,7 +51,7 @@ public class cgeoApplicationTest extends CGeoTestCase { @SuppressWarnings("static-method") @SmallTest public void testPreconditions() { - assertEquals(StatusCode.NO_ERROR, GCLogin.login()); + assertEquals(StatusCode.NO_ERROR, GCLogin.getInstance().login()); } /** @@ -143,7 +143,7 @@ public class cgeoApplicationTest extends CGeoTestCase { // restore user and password TestSettings.setLogin(login.left, login.right); Settings.setMemberStatus(memberStatus); - GCLogin.login(); + GCLogin.getInstance().login(); } } @@ -417,7 +417,7 @@ public class cgeoApplicationTest extends CGeoTestCase { private static void deleteCacheFromDBAndLogout(String geocode) { deleteCacheFromDB(geocode); - GCLogin.logout(); + GCLogin.getInstance().logout(); // Modify login data to avoid an automatic login again TestSettings.setLogin("c:geo", "c:geo"); Settings.setMemberStatus("Basic member"); diff --git a/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java b/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java index b688ed6..e86678d 100644 --- a/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java +++ b/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java @@ -20,7 +20,7 @@ public class GCConnectorTest extends AbstractResourceInstrumentationTestCase { // set up settings required for test TestSettings.setExcludeMine(false); Settings.setCacheType(CacheType.ALL); - GCLogin.login(); + GCLogin.getInstance().login(); final String[] tokens = GCLogin.getMapTokens(); diff --git a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java index 60b8011..60ff500 100644 --- a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java +++ b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java @@ -45,10 +45,10 @@ public class GCConstantsTest extends AndroidTestCase { */ public static void testCacheCountOnline() { - GCLogin.logout(); - GCLogin.setActualCachesFound(0); - GCLogin.login(); - assertTrue(GCLogin.getActualCachesFound() > 0); + GCLogin.getInstance().logout(); + GCLogin.getInstance().setActualCachesFound(0); + GCLogin.getInstance().login(); + assertTrue(GCLogin.getInstance().getActualCachesFound() > 0); } public static void testConstants() { |
