Exemplo n.º 1
0
    @Override
    protected Exception doInBackground(Void... params) {

      Exception exception = null;

      if (maxAvalibleComments == -1) {

        ContentAdapter db = getDbAdapter();
        AppStats appInfo = db.getLatestForApp(packageName);
        if (appInfo != null) {
          maxAvalibleComments = appInfo.getNumberOfComments();
        } else {
          maxAvalibleComments = MAX_LOAD_COMMENTS;
        }
      }

      if (maxAvalibleComments != 0) {
        DeveloperConsole console = new DeveloperConsole(CommentsActivity.this);
        try {

          String authtoken = getAndlyticsApplication().getAuthToken();
          List<Comment> result =
              console.getAppComments(
                  authtoken, accountname, packageName, nextCommentIndex, MAX_LOAD_COMMENTS);

          // put in cache if index == 0
          if (nextCommentIndex == 0) {
            db.updateCommentsCache(result, packageName);
            comments.clear();
          }
          comments.addAll(result);

          rebuildCommentGroups();

        } catch (Exception e) {
          exception = e;
        }

        nextCommentIndex += MAX_LOAD_COMMENTS;
        if (nextCommentIndex >= maxAvalibleComments) {
          hasMoreComments = false;
        } else {
          hasMoreComments = true;
        }
      }

      return exception;
    }
Exemplo n.º 2
0
    @SuppressWarnings("unchecked")
    @Override
    protected Exception doInBackground(String... params) {

      // authentication failed before, retry with token invalidation

      Exception exception = null;

      String authtoken = ((AndlyticsApp) getApplication()).getAuthToken();

      List<AppInfo> appDownloadInfos = null;
      try {

        DeveloperConsole console = new DeveloperConsole(Main.this);
        appDownloadInfos = console.getAppDownloadInfos(authtoken, accountname);

        if (cancelRequested) {
          cancelRequested = false;
          return null;
        }

        Map<String, List<String>> admobAccountSiteMap = new HashMap<String, List<String>>();

        for (AppInfo appDownloadInfo : appDownloadInfos) {
          // update in database
          db.insertOrUpdateStats(appDownloadInfo);
          String admobSiteId =
              Preferences.getAdmobSiteId(Main.this, appDownloadInfo.getPackageName());
          if (admobSiteId != null) {
            String admobAccount = Preferences.getAdmobAccount(Main.this, admobSiteId);
            if (admobAccount != null) {
              List<String> siteList = admobAccountSiteMap.get(admobAccount);
              if (siteList == null) {
                siteList = new ArrayList<String>();
              }
              siteList.add(admobSiteId);
              admobAccountSiteMap.put(admobAccount, siteList);
            }
          }
        }

        // sync admob accounts
        Set<String> admobAccuntKeySet = admobAccountSiteMap.keySet();
        for (String admobAccount : admobAccuntKeySet) {

          AdmobRequest.syncSiteStats(
              admobAccount, Main.this, admobAccountSiteMap.get(admobAccount), null);
        }

        new LoadIconInCache().execute(appDownloadInfos);

      } catch (Exception e) {

        if (e instanceof IOException) {
          e = new NetworkException(e);
        }

        exception = e;

        Log.e(TAG, "error while requesting developer console", e);
      }

      if (dotracking == true) {
        int size = 0;
        if (appDownloadInfos != null) {
          size = appDownloadInfos.size();
        }
        // TODO endless loop in case of exception!!!
        if (exception == null) {
          Map<String, String> map = new HashMap<String, String>();
          map.put("num", size + "");
        } else {
        }
        dotracking = false;
      }

      return exception;
    }