/v3.2/nimbits-android/src/com/nimbits/android/account/OwnerAccountImpl.java
http://nimbits-server.googlecode.com/ · Java · 108 lines · 82 code · 26 blank · 0 comment · 11 complexity · 515602545e463bc33421ee81ff103448 MD5 · raw file
- package com.nimbits.android.account;
-
- import android.accounts.*;
- import android.app.Activity;
- import android.content.Context;
- import android.os.Bundle;
- import android.util.Log;
- import com.nimbits.client.NimbitsClient;
- import com.nimbits.client.NimbitsClientFactory;
- import com.nimbits.client.exception.NimbitsRuntimeException;
- import com.nimbits.client.model.Const;
- import com.nimbits.client.model.common.CommonFactoryLocator;
- import com.nimbits.client.model.email.EmailAddress;
-
- import java.io.IOException;
-
-
- public class OwnerAccountImpl implements OwnerAccount {
- private static String tokenStore = null;
- private static EmailAddress emailStore = null;
-
-
- @Override
- public EmailAddress getEmail(final Context context) {
- if (emailStore == null) {
- final AccountManager accountManager = AccountManager.get(context);
- final Account account = getAccount(accountManager);
-
- if (account == null) {
- return null;
- } else {
- emailStore = CommonFactoryLocator.getInstance().createEmailAddress(account.name);
- return emailStore;
- }
- } else {
- return emailStore;
-
- }
-
- }
-
-
- @Override
- public String getToken(final Context context) {
- String authToken;
-
- if (tokenStore == null) {
- final AccountManager mgr = AccountManager.get(context);
- final Account[] accounts = mgr.getAccountsByType(Const.PARAM_GOOGLE_COM);
-
- if (accounts.length > 0) {
- AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(accounts[0], Const.CONST_AH, null, (Activity) context, null, null);
- try {
- final Bundle authTokenBundle = accountManagerFuture.getResult();
- authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString();
- tokenStore = authToken;
- Log.i(Const.N, "got new token: " + authToken);
- } catch (OperationCanceledException e) {
- Log.e(Const.N, e.getMessage(), e);
- authToken = Const.MESSAGE_NO_ACCOUNT;
- tokenStore = null;
- } catch (IOException e) {
- authToken = Const.MESSAGE_NO_ACCOUNT;
- tokenStore = null;
- Log.e(Const.N, e.getMessage(), e);
- } catch (AuthenticatorException e) {
- authToken = Const.MESSAGE_NO_ACCOUNT;
- tokenStore = null;
- Log.e(Const.N, e.getMessage(), e);
- }
- } else {
- authToken = Const.MESSAGE_NO_ACCOUNT;
- tokenStore = null;
-
- }
-
-
- } else {
- authToken = tokenStore;
- Log.i(Const.N, "using cached token: " + authToken);
- }
- return authToken;
-
-
- }
-
- @Override
- public NimbitsClient getNimbitsClient(final Context context, final String baseUrl) {
- try {
- final String authToken = getToken(context);
- final EmailAddress email = getEmail(context);
- return NimbitsClientFactory.getInstance(authToken, email, baseUrl);
- } catch (Exception e) {
- throw new NimbitsRuntimeException("Error getting Nimbits Client", e);
- }
- }
-
- private Account getAccount(final AccountManager accountManager) {
- final Account[] accounts = accountManager.getAccountsByType(Const.PARAM_GOOGLE_COM);
- return accounts.length > 0 ? accounts[0] : null;
-
-
- }
-
-
- }