Question

Je créé un domaine dans ce domaine i créé près de 500 utilisateurs accounts.I veulent récupérer tous les utilisateurs dans mon domaine .so que j'utilise le codage suivant pour récupérer tous les utilisateurs dans mon domain.But dans ce codage i affiché Seuls les 100 premiers users.And également afficher le total des entrées utilisateur 100.I ne sais pas ce problème dans ce codage.

import com.google.gdata.client.appsforyourdomain.UserService;
import com.google.gdata.data.appsforyourdomain.provisioning.UserEntry;
import com.google.gdata.data.appsforyourdomain.provisioning.UserFeed;
import com.google.gdata.util.AuthenticationException;
import com.google.gdata.util.ServiceException;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

/**
 * This is a test template
 */

  public class AppsProvisioning {

    public static void main(String[] args) {

      try {

        // Create a new Apps Provisioning service
        UserService myService = new UserService("My Application");
        myService.setUserCredentials(admin,password);

        // Get a list of all entries
        URL metafeedUrl = new URL("https://www.google.com/a/feeds/"+domain+"/user/2.0/");
        System.out.println("Getting user entries...\n");
        UserFeed resultFeed = myService.getFeed(metafeedUrl, UserFeed.class);
        List<UserEntry> entries = resultFeed.getEntries();
        for(int i=0; i<entries.size(); i++) {
          UserEntry entry = entries.get(i);
          System.out.println("\t" + entry.getTitle().getPlainText());
        }
        System.out.println("\nTotal Entries: "+entries.size());
      }
      catch(AuthenticationException e) {
        e.printStackTrace();
      }
      catch(MalformedURLException e) {
        e.printStackTrace();
      }
      catch(ServiceException e) {
        e.printStackTrace();
      }
      catch(IOException e) {
        e.printStackTrace();
      }
    }
  }

Quel est le problème dans ce codage?

Était-ce utile?

La solution

La liste des utilisateurs est retourné dans un flux d'atomes. Ceci est un aliment paginée, avec un maximum de 100 entrées par page. S'il y a plus d'entrées dans l'alimentation alors il y aura un atome: élément de liaison avec l'attribut rel = « next », pointant la page suivante. Vous devez continuer à suivre ces liens jusqu'à ce qu'il n'y a plus de pages « suivant ».

Voir: http://code.google.com/apis /apps/gdata_provisioning_api_v2.0_reference.html#Results_Pagination

Le code ressemblera à:

URL metafeedUrl = new URL("https://www.google.com/a/feeds/"+domain+"/user/2.0/");
System.out.println("Getting user entries...\n");
List<UserEntry> entries = new ArrayList<UserEntry>();

while (metafeedUrl != null) {
    // Fetch page
    System.out.println("Fetching page...\n");
    UserFeed resultFeed = myService.getFeed(metafeedUrl, UserFeed.class);
    entries.addAll(resultFeed.getEntries());

    // Check for next page
    Link nextLink = resultFeed.getNextLink();
    if (nextLink == null) {
        metafeedUrl = null;
    } else {
        metafeedUrl = nextLink.getHref();
    }
}

// Handle results
for(int i=0; i<entries.size(); i++) {
    UserEntry entry = entries.get(i);
    System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println("\nTotal Entries: "+entries.size());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top